<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Infinity+Linden</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Infinity+Linden"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Infinity_Linden"/>
	<updated>2026-06-22T09:43:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta&amp;diff=726523</id>
		<title>Open Grid Public Beta</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta&amp;diff=726523"/>
		<updated>2010-02-12T01:55:09Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Alert Box| The vaak grid is currently unavailable as we transition from OGP based services to VWRAP based services. }}&lt;br /&gt;
&lt;br /&gt;
{{Alert Box| Please read [[Open_Grid_Public_Beta#30-Sept-2008_Update|Sept-30-2008]]. We are no longer accepting requests to join the beta program at this time.}}&lt;br /&gt;
&lt;br /&gt;
{{Alert Box| Please use the [[User:Pixel_Gausman/Interop_Viewer|trunk builds of Snowglobe if you wish to connect to an agent domain and use OGP teleport]].}}&lt;br /&gt;
&lt;br /&gt;
The Open Grid Public Beta program is a Linden Lab sponsored opportunity for developers to make their virtual worlds interoperate with Second Life.  Virtual world interoperability is enabled through the [[Open Grid Protocol]], under development by the [[AWG | Architecture Working Group]] of Second Life residents. &lt;br /&gt;
&lt;br /&gt;
On June 30th, 2008, a group of Linden Lab and IBM &amp;quot;gridnauts&amp;quot; [http://torley.s3.amazonaws.com/Across-the-Metaverse.mp4 successfully launched from a Second Life developer grid and teleported over to an OpenSim grid running IBM&#039;s modified code]. They arrived without any of their attachments or inventory, since the protocol does not transfer assets between grids.  Zero Linden of Linden Lab and Zha Ewry of IBM  [http://www.metanomics.net/show/archive030308/ recently gave an interview] on the Metanomics Second Life TV show to introduce the project.&lt;br /&gt;
&lt;br /&gt;
==30-Sept-2008 Update==&lt;br /&gt;
&lt;br /&gt;
{{Alert Box|This has been a successful couple of months:&lt;br /&gt;
&lt;br /&gt;
* Working OGP teleports between Linden Lab&#039;s regions and OpenSim regions running in both grid and standalone mode&lt;br /&gt;
* Over 100 residents teleporting between OGP-enabled OpenSims and Linden Lab regions.&lt;br /&gt;
* Resolved 36 OGP-related JIRAs&lt;br /&gt;
* Released and implemented a new draft of the OGP teleport specification&lt;br /&gt;
&lt;br /&gt;
Many thanks to the OpenSim developers for their help.&lt;br /&gt;
&lt;br /&gt;
So next steps:&lt;br /&gt;
&lt;br /&gt;
* We are no longer accepting requests to add residents to the Open Grid Public Beta at this time&lt;br /&gt;
* We will continue resolving JIRAs opened against the Beta Agent and Region domains&lt;br /&gt;
* We will continue running our agent domain and OGP-enabled regions&lt;br /&gt;
* The gridnauts list and inworld group will continue to be available&lt;br /&gt;
&lt;br /&gt;
As the Open Protocol team prepares for the next steps in Grid Interoperability, I would like to get your input.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve opened a new meta-issue, JIRA https://jira.secondlife.com/browse/SVC-3156, for recommending next steps. Read the related JIRAs and vote for the ones you would like to see implemented in a future beta. If you don&#039;t see the idea you want to see implemented, then create a JIRA for it and link it as a child of the meta-issue. Use JIRA comments to discuss or detail proposals.}}&lt;br /&gt;
&lt;br /&gt;
==Key Points ==&lt;br /&gt;
&lt;br /&gt;
# Testing the ability to log in to Second Life and teleport between Second Life and other virtual worlds.&lt;br /&gt;
# Intended for developers, not residents at large.&lt;br /&gt;
# Demonstrates login and teleport only, no assets are transferred from Second Life to other virtual worlds.&lt;br /&gt;
&lt;br /&gt;
==Participation==&lt;br /&gt;
&lt;br /&gt;
Participation in the Open Grid Public Beta program is intended for the developers of virtual world viewer and simulator software. &lt;br /&gt;
&lt;br /&gt;
Developers in the program implement the [[Open Grid Protocol]] in their software. The protocol provides a communication path between clients (Second Life Viewer), an [[Agent Domain]] (Second Life preview grid), and a simulator (Second Life, OpenSim). In particular, they implement the [[SLGOGP_Teleport_Strawman | teleport]] protocol.&lt;br /&gt;
&lt;br /&gt;
Beta participants will have access to the Open Grid Protocol version of the Second Life viewer, which logs you into an agent domain running on the Second Life preview grid, and allows you to rez, without inventory, on a destination grid that understands the Open Grid Protocol.&lt;br /&gt;
&lt;br /&gt;
In the first phase of the program Linden Lab will work with the developers of [http://www.opensimulator.org  OpenSim] and OpenSim operators to login to our preview grid and teleport between the Second Life preview grid, and regions in OpenSim.&lt;br /&gt;
&lt;br /&gt;
In the second phase of the beta, Linden Lab will open participation to other grid and virtual world operators and developers.&lt;br /&gt;
&lt;br /&gt;
This beta is for adult residents of Second Life. We are currently exploring options for participation by TSL residents. TSL residents may now sign up to the email list (adult moderated, see below). Teens will be invited to join a TSL Gridnauts group which will be used to communicate details on the forthcoming teen beta.&lt;br /&gt;
&lt;br /&gt;
==How To Participate==&lt;br /&gt;
&lt;br /&gt;
{{:Warning|We are no longer accepting requests to join the beta at this time.}}&lt;br /&gt;
&lt;br /&gt;
# [[Open_Grid_Public_Beta/Map_Locations|Claim a space on the map for your OpenSim region]].&lt;br /&gt;
# [[Open_Grid_Public_Beta/Open_Grid_Beta_Viewers|Download the Open Grid Beta Viewer]].&lt;br /&gt;
# [[Open_Grid_Public_Beta/Open_Sim_OGP_How_To|Build an OpenSim region with OGP enabled]].&lt;br /&gt;
# [[Open_Grid_Public_Beta/Teleport_How_To|Use the Open Grid Client to Teleport between Region Domains]]&lt;br /&gt;
&lt;br /&gt;
Because the Beta will allow any external regions to connect to the grid, which may or may not provide adult content, the beta was limited to main grid users.&lt;br /&gt;
&lt;br /&gt;
There is [[Open_Grid_Public_Beta/Public_Regions|a list of public OpenSim regions]] participating in the beta.&lt;br /&gt;
&lt;br /&gt;
==In World Meetings==&lt;br /&gt;
* None scheduled at this time.&lt;br /&gt;
===Transcripts===&lt;br /&gt;
* [[:Category:Open_Grid_Public_Beta_Transcripts|All relevant transcripts]]&lt;br /&gt;
* July:&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20080723|23]] [[User:Whump_Linden/Office_Hours/Transcript_20080730|30]]&lt;br /&gt;
** Huddle transcripts&lt;br /&gt;
* August:&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20080806|06]] [[User:Whump_Linden/Office_Hours/Transcript_20080813|13]] [[User:Whump_Linden/Office_Hours/Transcript_20080820|20]]&lt;br /&gt;
** Huddle transcripts: [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080805|05]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080806|06]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080808|08]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080812|12]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080815|15]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080818|18]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080829|29]]&lt;br /&gt;
* September&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20080910|10]] [[User:Whump_Linden/Office_Hours/Transcript_20080917|17]]&lt;br /&gt;
** Huddle Transcripts: [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080912|12]] [[Open_Grid_Public_Beta/Daily_Huddle_Transcripts/Transcript_20080915|15]]&lt;br /&gt;
* October&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20081008|08]] [[User:Whump_Linden/Office_Hours/Transcript_20081029|29]]&lt;br /&gt;
* November:&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20081112|12]]&lt;br /&gt;
* December:&lt;br /&gt;
** Office Hours: [[User:Whump_Linden/Office_Hours/Transcript_20081203|3]]&lt;br /&gt;
&lt;br /&gt;
===IRC===&lt;br /&gt;
&lt;br /&gt;
irc://irc.freenode.net/#gridnauts&lt;br /&gt;
&lt;br /&gt;
==Issue Tracking During the Beta Program==&lt;br /&gt;
&lt;br /&gt;
Linden Lab has created new components in PJIRA to track OGPB issues, please read [[Open_Grid_Public_Beta/Issue_Tracking|the instructions on how to create OGPB issues in PJIRA]].&lt;br /&gt;
&lt;br /&gt;
Status of OGPB issues will be reviewed during daily huddles.&lt;br /&gt;
&lt;br /&gt;
A complete list of beta issues is in the umbrella issue {{Jira|SVC-2632}}.&lt;br /&gt;
&lt;br /&gt;
==Beta Timeline==&lt;br /&gt;
&lt;br /&gt;
* Beta launch -- July 31, 2008&lt;br /&gt;
* Interop testing with OpenSim (Phase 1) -- July 31, 2008&lt;br /&gt;
* [[Open_Grid_Public_Beta/Changes_20080822|Viewer, AD and RD Update 1]] --- August 22, 2008&lt;br /&gt;
* [[Open_Grid_Protocol|OGP Draft 3]] --- September 10, 2008&lt;br /&gt;
* Open to other virtual world platforms (Phase 2) -- TBD&lt;br /&gt;
* Beta period ends -- TBD&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&lt;br /&gt;
See [[Open_Grid_Public_Beta/FAQ|Open Grid Public Beta FAQ]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* Wiki pages&lt;br /&gt;
** Open Grid Protocol&lt;br /&gt;
*** [[Open Grid Protocol| Open Grid Protocol]] -- introduction&lt;br /&gt;
*** [[Agent Domain]]&lt;br /&gt;
*** [[Login Protocol]]&lt;br /&gt;
*** [[SLGOGP_Teleport_Strawman | Teleport Protcol]]&lt;br /&gt;
**[[AWG | Architecture Working Group]]&lt;br /&gt;
*** [[AW_Groupies | In-world discussion group]] -- for programmers and technically minded citizens&lt;br /&gt;
*** [[:Category:Grid_Interoperability_Chat_Logs|Relevant in-world discussion and office hours transcripts]]&lt;br /&gt;
*** [[Pyogp| Pyogp -- Python-based OGP test harness and client library]]&lt;br /&gt;
**** [[:Category:Pyogp_Transcripts|Pyogp discussion transcripts]]&lt;br /&gt;
&lt;br /&gt;
* [http://www.opensimulator.org  OpenSim]&lt;br /&gt;
** [http://opensimulator.org/wiki/Special:Search?search=chat+log OpenSim transcripts]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grid Interoperability]]&lt;br /&gt;
[[Category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Land&amp;diff=726513</id>
		<title>Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Land&amp;diff=726513"/>
		<updated>2010-02-12T01:53:34Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Grid {{anchor|Main Grid}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|LandSim=*}}&lt;br /&gt;
{{otheruses4|Land|scripting ([[LSL]]) related articles|:Category:LSL Region}}&lt;br /&gt;
&lt;br /&gt;
This article is supposed to give an overview about land in Second Life, going from the smallest to the largest scale.&lt;br /&gt;
&lt;br /&gt;
[[File:Land-hierarchy.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Parcel ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
An area of land owned by a single user or group, which is at least 16m² and at maximum 65,536m², all within one [[#Region|region]]. Parcels are composed of square blocks measuring 4×4 meters, but the blocks do not have to be contiguous. Parcels have both an integer local id and a global [[UUID]]. Parcel settings are modifiable in the [[Video_Tutorial/Land/About_Land_options|About Land]] options. &lt;br /&gt;
&lt;br /&gt;
== Region{{anchor|Sim}} ==&lt;br /&gt;
A named 256m x 256m (65,536 m²) area hosted by a single [[Sim|simulator process (sim)]]. In common usage, the term &amp;quot;simulator&amp;quot; or &amp;quot;sim&amp;quot; may also refer to a region, but in fact a single server process can host mulitple regions. They can be flagged as [[Region Flags|PG, Mature, or Adult]].&lt;br /&gt;
&lt;br /&gt;
There are currently three types of regions: &#039;&#039;Full&#039;&#039;, &#039;&#039;Homestead&#039;&#039; and &#039;&#039;Openspace&#039;&#039; (also known as &#039;&#039;Void&#039;&#039;). All have the same size, but differ in their avatar-, and primitive limits, as well as in their price. See [[Linden_Lab_Official:Private Region Types|Private Region Types]] for official info and [[Private Region]] for general FAQ.&lt;br /&gt;
&lt;br /&gt;
=== Full Region ===&lt;br /&gt;
There are two full regions per server host CPU. A region can hold up to 100 avatars and 15,000 [[prim]]s.&lt;br /&gt;
=== Homestead ===&lt;br /&gt;
Homestead regions were introduced in January 2009 and are only available for Residents who own at least one full region. It can hold 20 avatars, 3750 prims and the amount of running scripts might be restricted in the future.&lt;br /&gt;
&amp;lt;ul style=&amp;quot;-moz-column-count:2; -webkit-column-count:2; column-count:2;&amp;quot;&amp;gt;&lt;br /&gt;
*[[Linden_Lab_Official:About Homesteads|About Homesteads]]&lt;br /&gt;
*[[Linden_Lab_Official:Homestead FAQ|Homestead FAQ]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
=== Openspace ===&lt;br /&gt;
Openspaces are, like Homesteads, only available for Residents who own at least one full Region. They support a maximum of 10 avatars and 750 prims.&lt;br /&gt;
&amp;lt;ul style=&amp;quot;-moz-column-count:2; -webkit-column-count:2; column-count:2;&amp;quot;&amp;gt;&lt;br /&gt;
*[[Linden_Lab_Official:Information about Openspaces (Void Regions)|Information about Openspaces (Void Regions)]].&lt;br /&gt;
*[[Linden_Lab_Official:Openspaces FAQ|Openspaces FAQ]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estate ==&lt;br /&gt;
A collection of regions with a particular shared set of rules, such as banned users, sun position, etc. Estates have integer identifiers. Read also [[Linden_Lab_Official:Estate FAQ|Estate FAQ]].&lt;br /&gt;
=== Mainland ===&lt;br /&gt;
The largest masses of non-island linked simulators in the Second Life grid that refer to Linden-designed continents. The “mainland” is estate ID 1 and owned by {{User2|Governor Linden}}. Residents with a [[Premium Account|premium account]] can buy mainland parcels and need to pay a monthly tier when their land exceeds 512m². See [http://secondlife.com/whatis/landpricing.php landpricing info]. A mainland region supports a maximum of 40 avatars.&lt;br /&gt;
&lt;br /&gt;
=== Private Estate ===&lt;br /&gt;
Private estates are collections of Resident owned Regions. Some of these Residents are renting their land, so also Basic Account holders can use land this way.&lt;br /&gt;
See [[Estate Management]] and [[Private Estate Management Companies]] to learn more.&lt;br /&gt;
== Grid {{anchor|Main Grid}}==&lt;br /&gt;
{|&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|In Second Life, a grid refers to an integrated system that provides a networked collection of servers, some of which are simulators that implement the presentation of land. Those are arranged in the form of a rectangular mesh. In addition, the SL grid provides a set of other services, including presence, inventory management, and asset store, that integrate with but are independent of the simulators.&amp;lt;ref&amp;gt;Read the discussion [http://groups.google.com/group/sldev/browse_thread/thread/afe59484a71e3830 What is a Grid?] on the [[SLDev]] mailing list for further information.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linden Lab runs several grids for internal and external testing. Asset transfer and teleporting from the main grid (Agni) to another are currently not possible, but might become a feature in the future, when the [[Open Grid Protocol]] evolves.&lt;br /&gt;
&lt;br /&gt;
Contrary to common belief (and what the wording implies), the [[Teen Grid]] and &#039;&#039;Main Grid&#039;&#039; differ only via their estates IDs and are on the same Grid (Agni), rather than different Grids.&lt;br /&gt;
&lt;br /&gt;
Linden Lab&#039;s Grids are named after Hindu gods. Many of the Grids supported by the client are either inaccessible to the public or no longer active. To change the Grid you&#039;d like to connect to, press {{KeyCombo|shift=*|ctrl=*|G}} on the login screen of your viewer and choose the grid from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
Linden Lab obtaines a [[grid status|grid status report]] about the stability of the grid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
=== Agni ===&lt;br /&gt;
The primary Second Life grid to which users connect; named after the Vedic god of Fire, mentioned in the four Vedas.&lt;br /&gt;
&lt;br /&gt;
Some [[:Category:Images of Agni|images of the Agni grid]] are available in this wiki.&lt;br /&gt;
&lt;br /&gt;
{{ClientUpdate|Agni}}&lt;br /&gt;
&lt;br /&gt;
=== Aditi ===&lt;br /&gt;
The beta test grid available to Residents for testing the Second Life server software before it&#039;s deployed to the main grid (Agni); named after the Vedic mother goddess, cosmic creatrix. Read more about Aditi in the [[Preview Grid|preview Grid article]].&lt;br /&gt;
&lt;br /&gt;
{{ClientUpdate|Aditi}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039;&lt;br /&gt;
* [[Preview Grid Common Questions]]&lt;br /&gt;
* [http://secondlife.com/support/downloads.php http://secondlife.com/support/downloads.php]&lt;br /&gt;
&lt;br /&gt;
=== Vaak === &lt;br /&gt;
Vaak is a grid used to test interoperability with the [http://tools.ietf.org/wg/vwrap/charters Virtual World Region Agent Protocol (VWRAP)] family of specifications. VWRAP is the successor to the [[Open Grid Protocol]] and is being standardized under the auspices of the [http://ietf.org/ Internet Engineering Task Force (IETF)]. With the successful completion of the [[Open Grid Public Beta]], vaak is currently being rebuilt to adhere to the more recent VWRAP specifications. A public demonstration of a Second Life grid utilizing the VWRAP protocols is expected, but currently unscheduled. Interested persons are encouraged to watch the official [https://blogs.secondlife.com/index.jspa Second Life Blog] for news and announcements regarding VWRAP and the Vaak grid.&lt;br /&gt;
&lt;br /&gt;
Linden Research thanks all [[Gridnaut|Gridnauts]] who participated in the [[Open Grid Public Beta]]. Without your interest, patience, hard work and bug reporting, we would not have been successful.&lt;br /&gt;
&lt;br /&gt;
=== Uma ===&lt;br /&gt;
Uma is a [[Test Grid|test grid]] but has been reported to be now unavailable for the public.&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
!!| Name !! class=&amp;quot;unsortable&amp;quot; | Grid Type !! class=&amp;quot;unsortable&amp;quot; | Hinduism&lt;br /&gt;
|-&lt;br /&gt;
|| Agni || Main || God of Fire&lt;br /&gt;
|-&lt;br /&gt;
|| Siva || Preview || Destroyer of the Universe&lt;br /&gt;
|-&lt;br /&gt;
|| Durga || Preview || &lt;br /&gt;
|-&lt;br /&gt;
|| [[Aditi]] || Preview || Vedic: Mother Goddess&lt;br /&gt;
|-&lt;br /&gt;
|| Soma || [[QA Portal|QA]] || A Lunar Deity&amp;lt;br&amp;gt;Vedic: Drink of the Gods&lt;br /&gt;
|-&lt;br /&gt;
|| Ganga || [[QA Portal|QA]] || &lt;br /&gt;
|-&lt;br /&gt;
|| Uma ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Shakti ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Vaak || VWRAP Interop Testing ||&lt;br /&gt;
|-&lt;br /&gt;
|| Mohini ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Yami ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Nandi ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Mitra ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Radha ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Ravi ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Aruna ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Damballah ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Bharati ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Chandra ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Danu ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Parvati ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Skanda ||  || &lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[:Category:Help/Land|Wiki articles about land]]&lt;br /&gt;
*[[Video_Tutorials/More#LAND|Video tutorials about land]]&lt;br /&gt;
*[[:Category:Land|Knowledge Base articles about land]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Land&amp;diff=726503</id>
		<title>Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Land&amp;diff=726503"/>
		<updated>2010-02-12T01:48:24Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Vaak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|LandSim=*}}&lt;br /&gt;
{{otheruses4|Land|scripting ([[LSL]]) related articles|:Category:LSL Region}}&lt;br /&gt;
&lt;br /&gt;
This article is supposed to give an overview about land in Second Life, going from the smallest to the largest scale.&lt;br /&gt;
&lt;br /&gt;
[[File:Land-hierarchy.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Parcel ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
An area of land owned by a single user or group, which is at least 16m² and at maximum 65,536m², all within one [[#Region|region]]. Parcels are composed of square blocks measuring 4×4 meters, but the blocks do not have to be contiguous. Parcels have both an integer local id and a global [[UUID]]. Parcel settings are modifiable in the [[Video_Tutorial/Land/About_Land_options|About Land]] options. &lt;br /&gt;
&lt;br /&gt;
== Region{{anchor|Sim}} ==&lt;br /&gt;
A named 256m x 256m (65,536 m²) area hosted by a single [[Sim|simulator process (sim)]]. In common usage, the term &amp;quot;simulator&amp;quot; or &amp;quot;sim&amp;quot; may also refer to a region, but in fact a single server process can host mulitple regions. They can be flagged as [[Region Flags|PG, Mature, or Adult]].&lt;br /&gt;
&lt;br /&gt;
There are currently three types of regions: &#039;&#039;Full&#039;&#039;, &#039;&#039;Homestead&#039;&#039; and &#039;&#039;Openspace&#039;&#039; (also known as &#039;&#039;Void&#039;&#039;). All have the same size, but differ in their avatar-, and primitive limits, as well as in their price. See [[Linden_Lab_Official:Private Region Types|Private Region Types]] for official info and [[Private Region]] for general FAQ.&lt;br /&gt;
&lt;br /&gt;
=== Full Region ===&lt;br /&gt;
There are two full regions per server host CPU. A region can hold up to 100 avatars and 15,000 [[prim]]s.&lt;br /&gt;
=== Homestead ===&lt;br /&gt;
Homestead regions were introduced in January 2009 and are only available for Residents who own at least one full region. It can hold 20 avatars, 3750 prims and the amount of running scripts might be restricted in the future.&lt;br /&gt;
&amp;lt;ul style=&amp;quot;-moz-column-count:2; -webkit-column-count:2; column-count:2;&amp;quot;&amp;gt;&lt;br /&gt;
*[[Linden_Lab_Official:About Homesteads|About Homesteads]]&lt;br /&gt;
*[[Linden_Lab_Official:Homestead FAQ|Homestead FAQ]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
=== Openspace ===&lt;br /&gt;
Openspaces are, like Homesteads, only available for Residents who own at least one full Region. They support a maximum of 10 avatars and 750 prims.&lt;br /&gt;
&amp;lt;ul style=&amp;quot;-moz-column-count:2; -webkit-column-count:2; column-count:2;&amp;quot;&amp;gt;&lt;br /&gt;
*[[Linden_Lab_Official:Information about Openspaces (Void Regions)|Information about Openspaces (Void Regions)]].&lt;br /&gt;
*[[Linden_Lab_Official:Openspaces FAQ|Openspaces FAQ]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estate ==&lt;br /&gt;
A collection of regions with a particular shared set of rules, such as banned users, sun position, etc. Estates have integer identifiers. Read also [[Linden_Lab_Official:Estate FAQ|Estate FAQ]].&lt;br /&gt;
=== Mainland ===&lt;br /&gt;
The largest masses of non-island linked simulators in the Second Life grid that refer to Linden-designed continents. The “mainland” is estate ID 1 and owned by {{User2|Governor Linden}}. Residents with a [[Premium Account|premium account]] can buy mainland parcels and need to pay a monthly tier when their land exceeds 512m². See [http://secondlife.com/whatis/landpricing.php landpricing info]. A mainland region supports a maximum of 40 avatars.&lt;br /&gt;
&lt;br /&gt;
=== Private Estate ===&lt;br /&gt;
Private estates are collections of Resident owned Regions. Some of these Residents are renting their land, so also Basic Account holders can use land this way.&lt;br /&gt;
See [[Estate Management]] and [[Private Estate Management Companies]] to learn more.&lt;br /&gt;
== Grid {{anchor|Main Grid}}==&lt;br /&gt;
{|&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|In Second Life, a grid refers to an integrated system that provides a networked collection of servers, some of which are simulators that implement the presentation of land. Those are arranged in the form of a rectangular mesh. In addition, the SL grid provides a set of other services, including presence, inventory management, and asset store, that integrate with but are independent of the simulators.&amp;lt;ref&amp;gt;Read the discussion [http://groups.google.com/group/sldev/browse_thread/thread/afe59484a71e3830 What is a Grid?] on the [[SLDev]] mailing list for further information.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linden Lab runs several grids for internal and external testing. Asset transfer and teleporting from the main grid (Agni) to another are currently not possible, but might become a feature in the future, when the [[Open Grid Protocol]] evolves.&lt;br /&gt;
&lt;br /&gt;
Contrary to common belief (and what the wording implies), the [[Teen Grid]] and &#039;&#039;Main Grid&#039;&#039; differ only via their estates IDs and are on the same Grid (Agni), rather than different Grids.&lt;br /&gt;
&lt;br /&gt;
Linden Lab&#039;s Grids are named after Hindu gods. Many of the Grids supported by the client are either inaccessible to the public or no longer active. To change the Grid you&#039;d like to connect to, press {{KeyCombo|shift=*|ctrl=*|G}} on the login screen of your viewer and choose the grid from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
Linden Lab obtaines a [[grid status|grid status report]] about the stability of the grid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
=== Agni ===&lt;br /&gt;
The primary Second Life grid to which users connect; named after the Vedic god of Fire, mentioned in the four Vedas.&lt;br /&gt;
&lt;br /&gt;
Some [[:Category:Images of Agni|images of the Agni grid]] are available in this wiki.&lt;br /&gt;
&lt;br /&gt;
{{ClientUpdate|Agni}}&lt;br /&gt;
&lt;br /&gt;
=== Aditi ===&lt;br /&gt;
The beta test grid available to Residents for testing the Second Life server software before it&#039;s deployed to the main grid (Agni); named after the Vedic mother goddess, cosmic creatrix. Read more about Aditi in the [[Preview Grid|preview Grid article]].&lt;br /&gt;
&lt;br /&gt;
{{ClientUpdate|Aditi}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039;&lt;br /&gt;
* [[Preview Grid Common Questions]]&lt;br /&gt;
* [http://secondlife.com/support/downloads.php http://secondlife.com/support/downloads.php]&lt;br /&gt;
&lt;br /&gt;
=== Vaak === &lt;br /&gt;
Vaak is a grid used to test interoperability with the [http://tools.ietf.org/wg/vwrap/charters Virtual World Region Agent Protocol (VWRAP)] family of specifications. VWRAP is the successor to the [[Open Grid Protocol]] and is being standardized under the auspices of the [http://ietf.org/ Internet Engineering Task Force (IETF)]. With the successful completion of the [[Open Grid Public Beta]], vaak is currently being rebuilt to adhere to the more recent VWRAP specifications. A public demonstration of a Second Life grid utilizing the VWRAP protocols is expected, but currently unscheduled. Interested persons are encouraged to watch the official [https://blogs.secondlife.com/index.jspa Second Life Blog] for news and announcements regarding VWRAP and the Vaak grid.&lt;br /&gt;
&lt;br /&gt;
Linden Research thanks all [[Gridnaut|Gridnauts]] who participated in the [[Open Grid Public Beta]]. Without your interest, patience, hard work and bug reporting, we would not have been successful.&lt;br /&gt;
&lt;br /&gt;
=== Uma ===&lt;br /&gt;
Uma is a [[Test Grid|test grid]] but has been reported to be now unavailable for the public.&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
!!| Name !! class=&amp;quot;unsortable&amp;quot; | Grid Type !! class=&amp;quot;unsortable&amp;quot; | Hinduism&lt;br /&gt;
|-&lt;br /&gt;
|| Agni || Main || God of Fire&lt;br /&gt;
|-&lt;br /&gt;
|| Siva || Preview || Destroyer of the Universe&lt;br /&gt;
|-&lt;br /&gt;
|| Durga || Preview || &lt;br /&gt;
|-&lt;br /&gt;
|| [[Aditi]] || Preview || Vedic: Mother Goddess&lt;br /&gt;
|-&lt;br /&gt;
|| Soma || [[QA Portal|QA]] || A Lunar Deity&amp;lt;br&amp;gt;Vedic: Drink of the Gods&lt;br /&gt;
|-&lt;br /&gt;
|| Ganga || [[QA Portal|QA]] || &lt;br /&gt;
|-&lt;br /&gt;
|| Uma ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Shakti ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Vaak || [[Open_Grid_Protocol|OGP]] || &lt;br /&gt;
|-&lt;br /&gt;
|| Mohini ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Yami ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Nandi ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Mitra ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Radha ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Ravi ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Aruna ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Damballah ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Bharati ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Chandra ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Danu ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Parvati ||  || &lt;br /&gt;
|-&lt;br /&gt;
|| Skanda ||  || &lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[:Category:Help/Land|Wiki articles about land]]&lt;br /&gt;
*[[Video_Tutorials/More#LAND|Video tutorials about land]]&lt;br /&gt;
*[[:Category:Land|Knowledge Base articles about land]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=576202</id>
		<title>Open Grid Public Beta/Public Regions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=576202"/>
		<updated>2009-10-07T02:56:10Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Linden Lab OGP Regions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following OpenSim regions supporting the Open Grid protocol are available for you to teleport to once you&#039;ve authenticated to the agent domain:&lt;br /&gt;
&lt;br /&gt;
This is value you enter into the region URL dialog on the login screen and the World &amp;gt;&amp;gt; Teleport Region command.&lt;br /&gt;
&lt;br /&gt;
== Linden Lab OGP Regions ==&lt;br /&gt;
&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/8f3bac3d-062c-0950-d0b0-62dd065bc5e8 for Bonifacio&lt;br /&gt;
* https://sim2.vaak.lindenlab.com:12043/cap/b1e4a4c9-2845-6d66-e04c-2e8f5d9ce9de for Ahern&lt;br /&gt;
* https://sim2.vaak.lindenlab.com:12043/cap/a960de83-fde8-e681-e307-c280842bd811 for Grignano&lt;br /&gt;
* https://sim2.vaak.lindenlab.com:12043/cap/901ad78d-c34b-d5f6-20ed-a1439d733c10 for Dore&lt;br /&gt;
* https://sim2.vaak.lindenlab.com:12043/cap/529528d6-e66e-ccce-2535-fe3061fe7f06 for Miramare&lt;br /&gt;
&lt;br /&gt;
== Ugotrade ==&lt;br /&gt;
&lt;br /&gt;
* http://ugotrade.net:9000&lt;br /&gt;
* 24/7 if it is down I will restart &lt;br /&gt;
* Contact: Tara5 Oh&lt;br /&gt;
&lt;br /&gt;
== COM.lounge / Tao Takashi / mrtopf.de ==&lt;br /&gt;
&lt;br /&gt;
* http://plonetv.de:9000&lt;br /&gt;
* currently offline due to awaiting new patch&lt;br /&gt;
* Contact: [http://mrtopf.de/blog Tao Takashi]&lt;br /&gt;
&lt;br /&gt;
== BlueWall ==&lt;br /&gt;
&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/BlueWall%20Isle&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/Bay%20Side&lt;br /&gt;
* http://ascent.bluewallgroup.com:9910/BlueWall%20Gateway &#039;&#039;Hypergrid gateway to OSGrid&#039;&#039;&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:BlueWall Slade | Bluewall Slade]]&lt;br /&gt;
* E-Mail: [mailto://BlueWall.Slade@gmail.com BlueWall Slade]&lt;br /&gt;
&lt;br /&gt;
== SimlandMax ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://simland.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:creator Luna]]&lt;br /&gt;
&lt;br /&gt;
== Elsewhere ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.nowherevirtual.com:9000&lt;br /&gt;
* Times Available: 24/7 (except for maintenance)&lt;br /&gt;
* Contact: [[User:Emma Nowhere | Emma Nowhere ]]&lt;br /&gt;
* E-Mail: [mailto://emma.nowhere@gmail.com Emma Nowhere]&lt;br /&gt;
&lt;br /&gt;
== LJPOGP00 ==&lt;br /&gt;
&lt;br /&gt;
* http://98.26.97.209:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:Julie Wasserstrom | Julie Wasserstrom]]&lt;br /&gt;
* E-Mail: [mailto://Julie.Wasserstrom@gmail.com Julie Wasserstrom]&lt;br /&gt;
&lt;br /&gt;
== Luskwood ==&lt;br /&gt;
&lt;br /&gt;
* http://opengrid.luskwood.net:9000&lt;br /&gt;
* 24/7, Not built out yet though. &lt;br /&gt;
* Contact [[User:Michi Lumin | Michi Lumin]]&lt;br /&gt;
* E-Mail: [mailto://michi@luskwood.org Michi Lumin]&lt;br /&gt;
&lt;br /&gt;
== Akina ==&lt;br /&gt;
*  http://213.186.37.135:9000&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:EloiseJolie Capalini|EloiseJolie Capalini]]&lt;br /&gt;
* Email [mailto://artana34@gmail.com Artana]&lt;br /&gt;
&lt;br /&gt;
== Planck  and Kaku ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.vworlds.co.uk:9000&lt;br /&gt;
* Times Available: 0:800 23:00 UTC 24/7 when new server is ready&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== Dirac, Fermi, Bohr and Pauli ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://mainland.vworlds.co.uk:9000/&lt;br /&gt;
* Times Available: 24/7&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== BrackenLand ==&lt;br /&gt;
&lt;br /&gt;
* http://&lt;br /&gt;
* Temporarily offline&lt;br /&gt;
* Contact: [[User:Gomez Bracken | Gomez Bracken]]&lt;br /&gt;
* E-Mail: [mailto://gomez@temptations-club.com Gomez Bracken]&lt;br /&gt;
&lt;br /&gt;
== Piper ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://primforge.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [http://primforge.com/ Torrid Luna]&lt;br /&gt;
&lt;br /&gt;
== Zinnemann Grid ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://zinnemanngrid.com:9000&lt;br /&gt;
* [http://www.zinnemann.com/grid.asp Zinnemann Grid Webpage]&lt;br /&gt;
* Contact: [[User:Hans Zinnemann | Hans Zinnemann]]&lt;br /&gt;
&lt;br /&gt;
== Lakewood / Ducatillon Group Project ==&lt;br /&gt;
&lt;br /&gt;
* http://dgpexperimental.selfip.org:9000&lt;br /&gt;
* 24/7 - might be unavailable for short periods as far as we update/maintain the location&lt;br /&gt;
* Contact: [[User:McCoy Ducatillon | McCoy Ducatillon]]&lt;br /&gt;
* E-Mail: [mailto://ducatillongroup@gmail.com McCoy Ducatillon]&lt;br /&gt;
&lt;br /&gt;
== Burning Life Test Open Sim ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://68.178.191.56:9000&lt;br /&gt;
* Times Available: 24/7 (Unless Under Update)&lt;br /&gt;
* Contact: [[User:Vicero Lambert | Vicero Lambert ]]&lt;br /&gt;
* E-Mail: [mailto://jakekukuk@gmail.com Vicero Lambert]&lt;br /&gt;
&lt;br /&gt;
== Litesim Mainland ==&lt;br /&gt;
&lt;br /&gt;
* http://lsmainland.ogs-openuser.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 - occasional issues&lt;br /&gt;
* Contact: [[User:Gareth Ellison | Gareth Nelson]]&lt;br /&gt;
* E-Mail: [mailto://gareth@litesim.com Gareth Nelson]&lt;br /&gt;
* About 10 regions on the grid&lt;br /&gt;
* Can also now do TP into other random (non-OGP) grids and tested with OSGrid and central grid&lt;br /&gt;
&lt;br /&gt;
== Gridrock Worlds ==&lt;br /&gt;
* closed for the next few months&lt;br /&gt;
* Blog info: http://www.in2orbit.net&lt;br /&gt;
* E-Mail: [mailto://whyroc@in2orbit.net whyroc Slade]&lt;br /&gt;
&lt;br /&gt;
== Douggles Hangout ==&lt;br /&gt;
* Region URL http://club-panty.com:9000&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact bonghit Schism_External &lt;br /&gt;
* Email [mailto:pantera.42069@yahoo.com]&lt;br /&gt;
&lt;br /&gt;
== Pixelpark ==&lt;br /&gt;
* Region URL http://pixelpark.servegame.org:9000&lt;br /&gt;
* online (&#039;&#039;&#039;updated&#039;&#039;&#039; to OpenSim 0.6 as of 11/14/08 on Amazon EC2)&lt;br /&gt;
* Contact [[User:Bartholomew Kleiber | Bartholomew Kleiber ]] &lt;br /&gt;
* Email [mailto://dirk.krause@pixelpark.com Dirk Krause]&lt;br /&gt;
&lt;br /&gt;
== Five Miles Out ==&lt;br /&gt;
* Region URL http://taurus.fivemile.org:9000&lt;br /&gt;
* 24/7 uptime 1 Gbps&lt;br /&gt;
* Contact [[User:Jim Kupferberg | Jim Kupferberg ]] &lt;br /&gt;
* Email [mailto:info@fivemile.net Jim Kupferberg]&lt;br /&gt;
&lt;br /&gt;
== Whichway From Here ==&lt;br /&gt;
* Region URL http://ae6vk.harpsichordyet.com:9000&lt;br /&gt;
* 09:00-22:00 SLT, but down at my whim.&lt;br /&gt;
* Contact [[User:Whichway Janus | Whichway Janus ]] &lt;br /&gt;
* Email [mailto:Whichway.Janus@Yahoo.Com Whichway Janus]&lt;br /&gt;
&lt;br /&gt;
== Dahlia Island ==&lt;br /&gt;
* Region URL http://thnk1.dyndns.org:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Dahlia Trimble | Dahlia Trimble]]&lt;br /&gt;
* Email [mailto:dahliaTrimble@gmail.com Dahlia Trimble]&lt;br /&gt;
&lt;br /&gt;
== 3Di OGP Test ==&lt;br /&gt;
* Region URL http://210.188.235.138:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Kish Kas | Kish Kas]]&lt;br /&gt;
&lt;br /&gt;
== Bit Island ==&lt;br /&gt;
* Region URL http://mark.bitlife.jp:9000&lt;br /&gt;
* 24/7 uptime &lt;br /&gt;
* Contact [[User:Bit2zero Planer | Bit2zero Planer]]&lt;br /&gt;
&lt;br /&gt;
== metaXLR8 ==&lt;br /&gt;
* Region URL http://metaxlr8.com:9000&lt;br /&gt;
* Uptime 24/7, down only for testing and updating&lt;br /&gt;
* See http://metafuturing.net/index.php/MetaXLR8_OpenSim&lt;br /&gt;
* Contact: Giulio Perhaps&lt;br /&gt;
&lt;br /&gt;
== La Isla West ==&lt;br /&gt;
* http://24.30.54.84:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:m0rdred Veil | m0rdred Veil]]&lt;br /&gt;
* E-Mail: [mailto://m0rdredveil@yahoo.com m0rdred Veil]&lt;br /&gt;
&lt;br /&gt;
== AUGrid-OGP Norgan ==&lt;br /&gt;
* http://66.197.247.222:9005 http://ogp.augrid.org:9005&lt;br /&gt;
* http://ogp.augrid.org:9005/OGP%20Plaza - OGP Plaza&lt;br /&gt;
* http://ogp.augrid.org:9005/nortopia - Nortopia&lt;br /&gt;
* http://ogp.augrid.org:9005/augrid.org%20ogp - Augrid.org OGP&lt;br /&gt;
* http://ogp.augrid.org:9005/jodyville - JodyVille&lt;br /&gt;
* http://ogp.augrid.org:9005/66.197.247.222 - Test Numerical Sim name&lt;br /&gt;
* All regions are on AUGrid.org and Beta Grid&lt;br /&gt;
* Online 24/7 - Info and custom objects with land shaped like Aust. more info http://www.augrid.org&lt;br /&gt;
* Contact: [[User:Norgan Torok|Norgan Torok]]&lt;br /&gt;
* E-Mail: [mailto://contact@augrid.org Norgan Torok (SL)/Norgan Crazys (AUGrid)]&lt;br /&gt;
&lt;br /&gt;
== Berlinos  ==&lt;br /&gt;
* 1. Region URL: http://testgrid.de:9000/berlinos&lt;br /&gt;
* 2. Region URL: http://testgrid.de:9000/berlinos2&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact: [[User:Easyfresh Auer]]&lt;br /&gt;
* E-Mail: [mailto://easyfresh.auer@easyfresh-auer.de Easyfresh Auer]&lt;br /&gt;
&lt;br /&gt;
== Bulli&#039;s Land ==&lt;br /&gt;
* Region URL: http://83.247.63.174:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:Bulli Schumann]]&lt;br /&gt;
* E-Mail: [mailto://bulli.schumann@gmail.com Bulli Schumann]&lt;br /&gt;
&lt;br /&gt;
== GCSE ==&lt;br /&gt;
* Region URL: http://gcse.ath.cx:9300&lt;br /&gt;
* 24/7 uptime (unless NAT loopback fails)&lt;br /&gt;
* Contact: [[User:Herfulnerful Holsworthy]]&lt;br /&gt;
* E-Mail: [mailto://herfulnerful@charter.net Herfulnerful Holsworthy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Radioactive World ==&lt;br /&gt;
* Region URL: &#039;&#039;&#039;http://ct1aic.dyndns.org:9000&#039;&#039;&#039;&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Also with 14 SIM&#039;s @ OSGRID&lt;br /&gt;
* Contact: [[User:Radioactive Rosca]]&lt;br /&gt;
* E-Mail: [mailto://radioactive.rosca@gmail.com Radioactive Rosca]&lt;br /&gt;
&lt;br /&gt;
== Bloob box Island ==&lt;br /&gt;
* Region URL: http://87.98.134.166:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:kaly Mayako]]&lt;br /&gt;
&lt;br /&gt;
== Chandra ==&lt;br /&gt;
*  http://surya.grids.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:Armon Aeon|Armon Aeon]]&lt;br /&gt;
&lt;br /&gt;
== Ciuso Prime ==&lt;br /&gt;
*http://128.177.27.217:9000 or http://prime.ciuso.com:9000  - Not available currently!&lt;br /&gt;
*intended to be up 24*7 except for maintenance and upgrades&lt;br /&gt;
* Contact: [[User:Sered Woollahra|Sered Woollahra]], seredsecondlife at gmail.com&lt;br /&gt;
&lt;br /&gt;
== Lexania ==&lt;br /&gt;
* 1. OGP Region URL: http://lexa.ath.cx:9000/Lexania&lt;br /&gt;
* 2. OGP Region URL: http://lexa.ath.cx:9000/Lexania2&lt;br /&gt;
* Uptime: Quite a lot&lt;br /&gt;
* Status: Three trees and a puddle (per region!) :)&lt;br /&gt;
* Contact: Sure, why not&lt;br /&gt;
* Which one: SL IM: [[User: Lexa Sands|Lexa Sands]]&lt;br /&gt;
* Email: I&#039;ll get SL IMs via Email when offline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TicTacToe for Gridnauts ==&lt;br /&gt;
* This &amp;quot;opensim&amp;quot; (world) is a test for &amp;quot;minimum requirements&amp;quot;. We are using a Dell Latitude D600 notebook having a  Intel Centrino 2.0 Ghz, 512 Mb (RAM) and a broadband line having only   256 Kbps (for downloads)/100 Kbps (for uploads).&lt;br /&gt;
* 2 avatares can play the tic-tac-toe game clicking   cubes, that will rotate.  &lt;br /&gt;
* http://titactoe.ath.cx:9000/TicTacToe&lt;br /&gt;
* Our &amp;quot;opensim&amp;quot; is hooked to OSGrid. Region: TicTacToe.&lt;br /&gt;
* If you like to do a test  or a demo, please contact me.&lt;br /&gt;
* Contact: [[User:Adamascj Aji|Americo Damasceno - Adamascj Aji]]&lt;br /&gt;
&lt;br /&gt;
== Beta Technologies OpenSim (Mini-)Grid ==&lt;br /&gt;
* Micro-grid for [http://betatechnologies.info/ Beta Technologies]. &lt;br /&gt;
* The first four regions are co-located in Phoenix, Arizona (ping times should be about the same as to LL&#039;s grids); the last four in Portugal, Europe. The purpose was to test running a common grid distributed among two data centres. Servers are quite different in performance: the European server has much more memory and performance, but the network access is poor. The Arizona regions are on a low-powered server which however boasts excellent connectivity. The experience of going from one to the other is quite intriguing.&lt;br /&gt;
* Open for now as we just test things out; some regions might be closed in the future as this Mini-Grid begins to be internally used for our own projects (mostly as a temporary sandbox before transferring content to LL&#039;s grid).&lt;br /&gt;
* Uptime: ought to be 99.7%, except for upgrades and the odd reconfiguration. Some sims or parcels might be closed as this is being used for some internal testing.&lt;br /&gt;
* No support web site for now (users are created manually)&lt;br /&gt;
* if you wish to add your region to our Mini-Grid for tests, and don&#039;t wish to go through the fuss of creating your set of central servers, you&#039;re welcome to do so at this stage. Just contact us!&lt;br /&gt;
* Available regions as follows:&lt;br /&gt;
** 3650/3650 - Beta Technologies - http://asimov.betatechnologies.info:9000/&lt;br /&gt;
** 3650/3651 - Theatron - http://asimov.betatechnologies.info:9001/&lt;br /&gt;
** 3651/3650 - Terreiro do Paco - http://asimov.betatechnologies.info:9002/ (lots of content here)&lt;br /&gt;
** 3651/3651 - Beta Business Park - http://asimov.betatechnologies.info:9003/&lt;br /&gt;
** 3652/3650 - EggVille - http://bradbury.betatechnologies.info:9000/&lt;br /&gt;
** 3652/3651 - Beta Sandbox - http://bradbury.betatechnologies.info:9001/&lt;br /&gt;
** 7000/7000 - Half Way - http://bradbury.betatechnologies.info:9002/&lt;br /&gt;
** 11000/11000 - Far Away - http://bradbury.betatechnologies.info:9003/&lt;br /&gt;
&lt;br /&gt;
These last two are required because this minigrid is Hypergrid-enabled. So to jump across LL&#039;s grid and any other Hypergrid, due to the weird 4096-jump-limit, you need to jump to Half Way and later to Far Away and back.&lt;br /&gt;
&lt;br /&gt;
* Contact: [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]]&lt;br /&gt;
* E-Mail: [mailto://Gwyneth.Llewelyn@BetaTechnologies.Info Gwyneth Llewelyn]&lt;br /&gt;
&lt;br /&gt;
== eaglefx Binder ==&lt;br /&gt;
&lt;br /&gt;
Sunred Beach Gridnaut&lt;br /&gt;
&lt;br /&gt;
* http://gridnaut.sunredbeach.com:9008&lt;br /&gt;
* 24/7 - it may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:eaglefx Binder | eaglefx Binder]]&lt;br /&gt;
* E-Mail: [mailto://eaglefx99@yahoo.com eaglefx Binder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:VWRAP_adult_content_evaluation_example.jpg&amp;diff=501973</id>
		<title>File:VWRAP adult content evaluation example.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:VWRAP_adult_content_evaluation_example.jpg&amp;diff=501973"/>
		<updated>2009-10-02T16:05:31Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: this is an example of generic policy enforcement in VWRAP, not a proposal for how to actually enforce adult content policies.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is an example of generic policy enforcement in VWRAP, not a proposal for how to actually enforce adult content policies.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=VWRAP_Charter&amp;diff=477252</id>
		<title>VWRAP Charter</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=VWRAP_Charter&amp;diff=477252"/>
		<updated>2009-09-01T20:07:52Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: Created page with &amp;#039;Working Group Name:    Virtual Worlds Region Agent Protocol (VWRAP)  Chairs:    TBD  Area and Area Directors:    Applications Area    Lisa Dusseault &amp;lt;lisa.dusseault@gmail.com...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working Group Name:&lt;br /&gt;
&lt;br /&gt;
  Virtual Worlds Region Agent Protocol (VWRAP)&lt;br /&gt;
&lt;br /&gt;
Chairs:&lt;br /&gt;
&lt;br /&gt;
  TBD&lt;br /&gt;
&lt;br /&gt;
Area and Area Directors:&lt;br /&gt;
&lt;br /&gt;
  Applications Area&lt;br /&gt;
&lt;br /&gt;
  Lisa Dusseault &amp;lt;lisa.dusseault@gmail.com&amp;gt;&lt;br /&gt;
  Alexey Melnikov &amp;lt;alexey.melnikov@isode.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responsible Area Director:&lt;br /&gt;
&lt;br /&gt;
  TBD&lt;br /&gt;
&lt;br /&gt;
Mailing List:&lt;br /&gt;
&lt;br /&gt;
  ogpx@ietf.org&lt;br /&gt;
  http://www.ietf.org/mailman/listinfo/ogpx&lt;br /&gt;
&lt;br /&gt;
Description of Working Group:&lt;br /&gt;
&lt;br /&gt;
The working group will define the Virtual Worlds Region Agent Protocol&lt;br /&gt;
(VWRAP) for  collaborative 3-dimensional virtual  environment. The protocol permits users to interact as digital representations called &amp;quot;avatars&amp;quot;. Avatars exist in at most one location within a shared virtual space. Conforming  client  applications use  the protocol  to&lt;br /&gt;
manipulate and  move the  user&#039;s avatar, create  virtual objects, interact  with other users  and their surroundings, consume&lt;br /&gt;
and create media and information from sources inside and outside their simulated environment.&lt;br /&gt;
&lt;br /&gt;
Adjacent points  in virtual spaces accessible by  this protocol may&lt;br /&gt;
be   explicitly   partitioned  into   &amp;quot;regions&amp;quot;   to  facilitate   the&lt;br /&gt;
computational  and communication load  balancing required  to simulate&lt;br /&gt;
the virtual  environment. Such virtual  environments may consist  of regions&lt;br /&gt;
administered  by distinct organizations. Regions provide the service endpoints for interacting with the inhabitants and objects they contain. Regions uniquely represent their partition of the virtual space (that is, they are not a &amp;quot;sharding&amp;quot; mechanism). The&lt;br /&gt;
state of  a virtual  world is independent  of the  client applications&lt;br /&gt;
that access it and may persist between user sessions.&lt;br /&gt;
&lt;br /&gt;
Regions and  other services implemented according to  the specifications may&lt;br /&gt;
be deployed by separate  organizations with varying policies and trust&lt;br /&gt;
domains.  The VWRAP  protocol will  provide the  mechanisms  for these&lt;br /&gt;
virtual world  services to interoperate, when permitted  by policy and&lt;br /&gt;
shared trust  domains. To support the exegesis  of the specifications,&lt;br /&gt;
the group  may define a  non-exhaustive set of  non-normative policies&lt;br /&gt;
protocol participants may enforce.&lt;br /&gt;
&lt;br /&gt;
Foundational components of the protocol include the publication of:&lt;br /&gt;
&lt;br /&gt;
  * an abstract  type system, suitable for  describing the application&lt;br /&gt;
    protocol in an implementation neutral manner,&lt;br /&gt;
&lt;br /&gt;
  * a   security   model   describing  trust   relationships   between&lt;br /&gt;
    participating entities,&lt;br /&gt;
&lt;br /&gt;
  * guidelines   for   the   use   of  existing   authentication   and&lt;br /&gt;
    confidentiality mechanisms,&lt;br /&gt;
&lt;br /&gt;
  * an application-layer  protocol for establishing  the user&#039;s avatar&lt;br /&gt;
    in a region,&lt;br /&gt;
&lt;br /&gt;
  * an application-layer  protocol for changing an avatar&#039;s position, including moving between regions,&lt;br /&gt;
  &lt;br /&gt;
  * format descriptions for objects and avatars, and&lt;br /&gt;
&lt;br /&gt;
  * an   application-layer  protocol   for  identifying   entities,  and&lt;br /&gt;
    requesting information about them.&lt;br /&gt;
&lt;br /&gt;
The protocol  defined by this  group will carry information  about the&lt;br /&gt;
virtual  environment,  its contents  and  its  inhabitants.  It is  an&lt;br /&gt;
application layer protocol,  independent of transport, based partially&lt;br /&gt;
on these previously published internet drafts:&lt;br /&gt;
&lt;br /&gt;
  * http://tools.ietf.org/html/draft-hamrick-ogp-intro&lt;br /&gt;
  * http://tools.ietf.org/html/draft-hamrick-llsd&lt;br /&gt;
  * http://tools.ietf.org/html/draft-hamrick-ogp-auth&lt;br /&gt;
  * http://tools.ietf.org/html/draft-hamrick-ogp-launch&lt;br /&gt;
  * http://tools.ietf.org/html/draft-lentczner-ogp-base&lt;br /&gt;
  * http://tools.ietf.org/html/draft-levine-ogp-clientcap&lt;br /&gt;
  * http://tools.ietf.org/html/draft-levine-ogp-layering&lt;br /&gt;
&lt;br /&gt;
The protocol  should describe interaction semantics independent of  transport, leveraging existing standards where&lt;br /&gt;
practical. It  should define interoperability  expectations for server&lt;br /&gt;
to server  interactions as well as  client-server interactions. Though&lt;br /&gt;
the  protocol  is  independent  of transport,  early  interoperability&lt;br /&gt;
trials used HTTP(S) for non-real-time messages. The working group will&lt;br /&gt;
define specific  features that must be replicated  in other transports&lt;br /&gt;
and  will  define  the use  of  HTTP(S)  as  a transport  of  protocol&lt;br /&gt;
messages.&lt;br /&gt;
&lt;br /&gt;
Goals and Milestones:&lt;br /&gt;
&lt;br /&gt;
  * October  2009   &amp;quot;Introduction  and  Goals&amp;quot;  to  the   IESG  as  an&lt;br /&gt;
    Informational RFC&lt;br /&gt;
&lt;br /&gt;
  * October 2009 &amp;quot;Abstract Type System for the Transmission of Dynamic&lt;br /&gt;
    Structured Data&amp;quot; to the IESG as Proposed Standard&lt;br /&gt;
&lt;br /&gt;
  * October 2010 &amp;quot;Foundational Concepts and Transport Expectations&amp;quot; to&lt;br /&gt;
    the IESG as Proposed Standard&lt;br /&gt;
&lt;br /&gt;
  * February 2010 &amp;quot;Guidelines for  Host Authentication&amp;quot; to the IESG as&lt;br /&gt;
    an Informational RFC&lt;br /&gt;
&lt;br /&gt;
  * February  2010 &amp;quot;Service  Establishment&amp;quot;  to the  IESG as  Proposed&lt;br /&gt;
    Standard&lt;br /&gt;
&lt;br /&gt;
  * February 2010  &amp;quot;Client Application Launch Message&amp;quot; to  the IESG as&lt;br /&gt;
    an Informational RFC&lt;br /&gt;
&lt;br /&gt;
  * February 2010  &amp;quot;Simulation Presence Establishment&amp;quot; to  the IESG as&lt;br /&gt;
    Proposed Standard&lt;br /&gt;
&lt;br /&gt;
  * June  2010  &amp;quot;Primitive Object  Format&amp;quot;  to  the  IESG as  Proposed&lt;br /&gt;
    Standard&lt;br /&gt;
&lt;br /&gt;
  * June 2010 &amp;quot;Digital Asset Access&amp;quot; to the IESG as Proposed Standard&lt;br /&gt;
&lt;br /&gt;
  * June 2010 &amp;quot;Entity Identifiers&amp;quot; to the IESG as Proposed standard&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Activity_Flows.png&amp;diff=473022</id>
		<title>File:Activity Flows.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Activity_Flows.png&amp;diff=473022"/>
		<updated>2009-08-26T19:29:14Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: this is a VERY high level diagram showing the relationship of types of actions that occur in an OGP virtual world.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is a VERY high level diagram showing the relationship of types of actions that occur in an OGP virtual world.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:OGPX_Document_Roadmap.png&amp;diff=473012</id>
		<title>File:OGPX Document Roadmap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:OGPX_Document_Roadmap.png&amp;diff=473012"/>
		<updated>2009-08-26T19:27:42Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: this is a graphical description of the relationship between documents proposed to describe the IETF OGP protocol.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is a graphical description of the relationship between documents proposed to describe the IETF OGP protocol.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448452</id>
		<title>Open Grid Public Beta/Public Regions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448452"/>
		<updated>2009-08-04T23:00:21Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Linden Lab OGP Regions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following OpenSim regions supporting the Open Grid protocol are available for you to teleport to once you&#039;ve authenticated to the agent domain:&lt;br /&gt;
&lt;br /&gt;
This is value you enter into the region URL dialog on the login screen and the World &amp;gt;&amp;gt; Teleport Region command.&lt;br /&gt;
&lt;br /&gt;
== Linden Lab OGP Regions ==&lt;br /&gt;
&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/821cfa62-f4b7-26e2-d373-4c15b84a1de3 for Bethel&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/8a8a97b1-0b8d-b5d3-a477-e7044c5b6f3e for Oak Grove&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/62c65aa5-748f-62a7-99ab-ca6f16e72965 for Grignano&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/7620c3f8-370a-61c2-57c8-12626a1af312 for Pullman&lt;br /&gt;
&lt;br /&gt;
== Ugotrade ==&lt;br /&gt;
&lt;br /&gt;
* http://ugotrade.net:9000&lt;br /&gt;
* 24/7 if it is down I will restart &lt;br /&gt;
* Contact: Tara5 Oh&lt;br /&gt;
&lt;br /&gt;
== COM.lounge / Tao Takashi / mrtopf.de ==&lt;br /&gt;
&lt;br /&gt;
* http://plonetv.de:9000&lt;br /&gt;
* currently offline due to awaiting new patch&lt;br /&gt;
* Contact: [http://mrtopf.de/blog Tao Takashi]&lt;br /&gt;
&lt;br /&gt;
== BlueWall ==&lt;br /&gt;
&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/BlueWall%20Isle&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/Bay%20Side&lt;br /&gt;
* http://ascent.bluewallgroup.com:9910/BlueWall%20Gateway &#039;&#039;Hypergrid gateway to OSGrid&#039;&#039;&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:BlueWall Slade | Bluewall Slade]]&lt;br /&gt;
* E-Mail: [mailto://BlueWall.Slade@gmail.com BlueWall Slade]&lt;br /&gt;
&lt;br /&gt;
== SimlandMax ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://simland.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:creator Luna]]&lt;br /&gt;
&lt;br /&gt;
== Elsewhere ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.nowherevirtual.com:9000&lt;br /&gt;
* Times Available: 24/7 (except for maintenance)&lt;br /&gt;
* Contact: [[User:Emma Nowhere | Emma Nowhere ]]&lt;br /&gt;
* E-Mail: [mailto://emma.nowhere@gmail.com Emma Nowhere]&lt;br /&gt;
&lt;br /&gt;
== LJPOGP00 ==&lt;br /&gt;
&lt;br /&gt;
* http://98.26.97.209:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:Julie Wasserstrom | Julie Wasserstrom]]&lt;br /&gt;
* E-Mail: [mailto://Julie.Wasserstrom@gmail.com Julie Wasserstrom]&lt;br /&gt;
&lt;br /&gt;
== Luskwood ==&lt;br /&gt;
&lt;br /&gt;
* http://opengrid.luskwood.net:9000&lt;br /&gt;
* 24/7, Not built out yet though. &lt;br /&gt;
* Contact [[User:Michi Lumin | Michi Lumin]]&lt;br /&gt;
* E-Mail: [mailto://michi@luskwood.org Michi Lumin]&lt;br /&gt;
&lt;br /&gt;
== Akina ==&lt;br /&gt;
*  http://213.186.37.135:9000&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:EloiseJolie Capalini|EloiseJolie Capalini]]&lt;br /&gt;
* Email [mailto://artana34@gmail.com Artana]&lt;br /&gt;
&lt;br /&gt;
== Planck  and Kaku ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.vworlds.co.uk:9000&lt;br /&gt;
* Times Available: 0:800 23:00 UTC 24/7 when new server is ready&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== Dirac, Fermi, Bohr and Pauli ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://mainland.vworlds.co.uk:9000/&lt;br /&gt;
* Times Available: 24/7&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== BrackenLand ==&lt;br /&gt;
&lt;br /&gt;
* http://&lt;br /&gt;
* Temporarily offline&lt;br /&gt;
* Contact: [[User:Gomez Bracken | Gomez Bracken]]&lt;br /&gt;
* E-Mail: [mailto://gomez@temptations-club.com Gomez Bracken]&lt;br /&gt;
&lt;br /&gt;
== Piper ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://primforge.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [http://primforge.com/ Torrid Luna]&lt;br /&gt;
&lt;br /&gt;
== Zinnemann Grid ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://zinnemanngrid.com:9000&lt;br /&gt;
* [http://www.zinnemann.com/grid.asp Zinnemann Grid Webpage]&lt;br /&gt;
* Contact: [[User:Hans Zinnemann | Hans Zinnemann]]&lt;br /&gt;
&lt;br /&gt;
== Lakewood / Ducatillon Group Project ==&lt;br /&gt;
&lt;br /&gt;
* http://dgpexperimental.selfip.org:9000&lt;br /&gt;
* 24/7 - might be unavailable for short periods as far as we update/maintain the location&lt;br /&gt;
* Contact: [[User:McCoy Ducatillon | McCoy Ducatillon]]&lt;br /&gt;
* E-Mail: [mailto://ducatillongroup@gmail.com McCoy Ducatillon]&lt;br /&gt;
&lt;br /&gt;
== Burning Life Test Open Sim ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://68.178.191.56:9000&lt;br /&gt;
* Times Available: 24/7 (Unless Under Update)&lt;br /&gt;
* Contact: [[User:Vicero Lambert | Vicero Lambert ]]&lt;br /&gt;
* E-Mail: [mailto://jakekukuk@gmail.com Vicero Lambert]&lt;br /&gt;
&lt;br /&gt;
== Litesim Mainland ==&lt;br /&gt;
&lt;br /&gt;
* http://lsmainland.ogs-openuser.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 - occasional issues&lt;br /&gt;
* Contact: [[User:Gareth Ellison | Gareth Nelson]]&lt;br /&gt;
* E-Mail: [mailto://gareth@litesim.com Gareth Nelson]&lt;br /&gt;
* About 10 regions on the grid&lt;br /&gt;
* Can also now do TP into other random (non-OGP) grids and tested with OSGrid and central grid&lt;br /&gt;
&lt;br /&gt;
== Gridrock Worlds ==&lt;br /&gt;
* closed for the next few months&lt;br /&gt;
* Blog info: http://www.in2orbit.net&lt;br /&gt;
* E-Mail: [mailto://whyroc@in2orbit.net whyroc Slade]&lt;br /&gt;
&lt;br /&gt;
== Douggles Hangout ==&lt;br /&gt;
* Region URL http://club-panty.com:9000&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact bonghit Schism_External &lt;br /&gt;
* Email [mailto:pantera.42069@yahoo.com]&lt;br /&gt;
&lt;br /&gt;
== Pixelpark ==&lt;br /&gt;
* Region URL http://pixelpark.servegame.org:9000&lt;br /&gt;
* online (&#039;&#039;&#039;updated&#039;&#039;&#039; to OpenSim 0.6 as of 11/14/08 on Amazon EC2)&lt;br /&gt;
* Contact [[User:Bartholomew Kleiber | Bartholomew Kleiber ]] &lt;br /&gt;
* Email [mailto://dirk.krause@pixelpark.com Dirk Krause]&lt;br /&gt;
&lt;br /&gt;
== Five Miles Out ==&lt;br /&gt;
* Region URL http://taurus.fivemile.org:9000&lt;br /&gt;
* 24/7 uptime 1 Gbps&lt;br /&gt;
* Contact [[User:Jim Kupferberg | Jim Kupferberg ]] &lt;br /&gt;
* Email [mailto:info@fivemile.net Jim Kupferberg]&lt;br /&gt;
&lt;br /&gt;
== Whichway From Here ==&lt;br /&gt;
* Region URL http://ae6vk.harpsichordyet.com:9000&lt;br /&gt;
* 09:00-22:00 SLT, but down at my whim.&lt;br /&gt;
* Contact [[User:Whichway Janus | Whichway Janus ]] &lt;br /&gt;
* Email [mailto:Whichway.Janus@Yahoo.Com Whichway Janus]&lt;br /&gt;
&lt;br /&gt;
== Dahlia Island ==&lt;br /&gt;
* Region URL http://thnk1.dyndns.org:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Dahlia Trimble | Dahlia Trimble]]&lt;br /&gt;
* Email [mailto:dahliaTrimble@gmail.com Dahlia Trimble]&lt;br /&gt;
&lt;br /&gt;
== 3Di OGP Test ==&lt;br /&gt;
* Region URL http://210.188.235.138:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Kish Kas | Kish Kas]]&lt;br /&gt;
&lt;br /&gt;
== Bit Island ==&lt;br /&gt;
* Region URL http://mark.bitlife.jp:9000&lt;br /&gt;
* 24/7 uptime &lt;br /&gt;
* Contact [[User:Bit2zero Planer | Bit2zero Planer]]&lt;br /&gt;
&lt;br /&gt;
== metaXLR8 ==&lt;br /&gt;
* Region URL http://metaxlr8.com:9000&lt;br /&gt;
* Uptime 24/7, down only for testing and updating&lt;br /&gt;
* See http://metafuturing.net/index.php/MetaXLR8_OpenSim&lt;br /&gt;
* Contact: Giulio Perhaps&lt;br /&gt;
&lt;br /&gt;
== La Isla West ==&lt;br /&gt;
* http://24.30.54.84:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:m0rdred Veil | m0rdred Veil]]&lt;br /&gt;
* E-Mail: [mailto://m0rdredveil@yahoo.com m0rdred Veil]&lt;br /&gt;
&lt;br /&gt;
== AUGrid-OGP Norgan ==&lt;br /&gt;
* http://66.197.247.222:9005 http://ogp.augrid.org:9005&lt;br /&gt;
* http://ogp.augrid.org:9005/OGP%20Plaza - OGP Plaza&lt;br /&gt;
* http://ogp.augrid.org:9005/nortopia - Nortopia&lt;br /&gt;
* http://ogp.augrid.org:9005/augrid.org%20ogp - Augrid.org OGP&lt;br /&gt;
* http://ogp.augrid.org:9005/jodyville - JodyVille&lt;br /&gt;
* http://ogp.augrid.org:9005/66.197.247.222 - Test Numerical Sim name&lt;br /&gt;
* All regions are on AUGrid.org and Beta Grid&lt;br /&gt;
* Online 24/7 - Info and custom objects with land shaped like Aust. more info http://www.augrid.org&lt;br /&gt;
* Contact: [[User:Norgan Torok|Norgan Torok]]&lt;br /&gt;
* E-Mail: [mailto://contact@augrid.org Norgan Torok (SL)/Norgan Crazys (AUGrid)]&lt;br /&gt;
&lt;br /&gt;
== Berlinos  ==&lt;br /&gt;
* 1. Region URL: http://testgrid.de:9000/berlinos&lt;br /&gt;
* 2. Region URL: http://testgrid.de:9000/berlinos2&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact: [[User:Easyfresh Auer]]&lt;br /&gt;
* E-Mail: [mailto://easyfresh.auer@easyfresh-auer.de Easyfresh Auer]&lt;br /&gt;
&lt;br /&gt;
== Bulli&#039;s Land ==&lt;br /&gt;
* Region URL: http://83.247.63.174:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:Bulli Schumann]]&lt;br /&gt;
* E-Mail: [mailto://bulli.schumann@gmail.com Bulli Schumann]&lt;br /&gt;
&lt;br /&gt;
== GCSE ==&lt;br /&gt;
* Region URL: http://gcse.ath.cx:9300&lt;br /&gt;
* 24/7 uptime (unless NAT loopback fails)&lt;br /&gt;
* Contact: [[User:Herfulnerful Holsworthy]]&lt;br /&gt;
* E-Mail: [mailto://herfulnerful@charter.net Herfulnerful Holsworthy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Radioactive World ==&lt;br /&gt;
* Region URL: &#039;&#039;&#039;http://ct1aic.dyndns.org:9000&#039;&#039;&#039;&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Also with 14 SIM&#039;s @ OSGRID&lt;br /&gt;
* Contact: [[User:Radioactive Rosca]]&lt;br /&gt;
* E-Mail: [mailto://radioactive.rosca@gmail.com Radioactive Rosca]&lt;br /&gt;
&lt;br /&gt;
== Bloob box Island ==&lt;br /&gt;
* Region URL: http://87.98.134.166:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:kaly Mayako]]&lt;br /&gt;
&lt;br /&gt;
== Chandra ==&lt;br /&gt;
*  http://surya.grids.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:Armon Aeon|Armon Aeon]]&lt;br /&gt;
&lt;br /&gt;
== Ciuso Prime ==&lt;br /&gt;
*http://128.177.27.217:9000 or http://prime.ciuso.com:9000  - Not available currently!&lt;br /&gt;
*intended to be up 24*7 except for maintenance and upgrades&lt;br /&gt;
* Contact: [[User:Sered Woollahra|Sered Woollahra]], seredsecondlife at gmail.com&lt;br /&gt;
&lt;br /&gt;
== Lexania ==&lt;br /&gt;
* 1. OGP Region URL: http://lexa.ath.cx:9000/Lexania&lt;br /&gt;
* 2. OGP Region URL: http://lexa.ath.cx:9000/Lexania2&lt;br /&gt;
* Uptime: Quite a lot&lt;br /&gt;
* Status: Three trees and a puddle (per region!) :)&lt;br /&gt;
* Contact: Sure, why not&lt;br /&gt;
* Which one: SL IM: [[User: Lexa Sands|Lexa Sands]]&lt;br /&gt;
* Email: I&#039;ll get SL IMs via Email when offline&lt;br /&gt;
&lt;br /&gt;
==Kurai&#039;s OpenSims==&lt;br /&gt;
*http://zeitenwerk.de:9128&lt;br /&gt;
*Uptime: 24/7 - 100 Mbits&lt;br /&gt;
*Contact: [[User: Kuraiko Yoshikawa|Kuraiko Yoshikawa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TicTacToe for Gridnauts ==&lt;br /&gt;
* This &amp;quot;opensim&amp;quot; (world) is a test for &amp;quot;minimum requirements&amp;quot;. We are using a Dell Latitude D600 notebook having a  Intel Centrino 2.0 Ghz, 512 Mb (RAM) and a broadband line having only   256 Kbps (for downloads)/100 Kbps (for uploads).&lt;br /&gt;
* 2 avatares can play the tic-tac-toe game clicking   cubes, that will rotate.  &lt;br /&gt;
* http://titactoe.ath.cx:9000/TicTacToe&lt;br /&gt;
* Our &amp;quot;opensim&amp;quot; is hooked to OSGrid. Region: TicTacToe.&lt;br /&gt;
* If you like to do a test  or a demo, please contact me.&lt;br /&gt;
* Contact: [[User:Adamascj Aji|Americo Damasceno - Adamascj Aji]]&lt;br /&gt;
&lt;br /&gt;
== Beta Technologies OpenSim (Mini-)Grid ==&lt;br /&gt;
* Micro-grid for [http://betatechnologies.info/ Beta Technologies]. &lt;br /&gt;
* The first four regions are co-located in Phoenix, Arizona (ping times should be about the same as to LL&#039;s grids); the last four in Portugal, Europe. The purpose was to test running a common grid distributed among two data centres. Servers are quite different in performance: the European server has much more memory and performance, but the network access is poor. The Arizona regions are on a low-powered server which however boasts excellent connectivity. The experience of going from one to the other is quite intriguing.&lt;br /&gt;
* Open for now as we just test things out; some regions might be closed in the future as this Mini-Grid begins to be internally used for our own projects (mostly as a temporary sandbox before transferring content to LL&#039;s grid).&lt;br /&gt;
* Uptime: ought to be 99.7%, except for upgrades and the odd reconfiguration. Some sims or parcels might be closed as this is being used for some internal testing.&lt;br /&gt;
* No support web site for now (users are created manually)&lt;br /&gt;
* if you wish to add your region to our Mini-Grid for tests, and don&#039;t wish to go through the fuss of creating your set of central servers, you&#039;re welcome to do so at this stage. Just contact us!&lt;br /&gt;
* Available regions as follows:&lt;br /&gt;
** 3650/3650 - Beta Technologies - http://asimov.betatechnologies.info:9000/&lt;br /&gt;
** 3650/3651 - Theatron - http://asimov.betatechnologies.info:9001/&lt;br /&gt;
** 3651/3650 - Terreiro do Paco - http://asimov.betatechnologies.info:9002/ (lots of content here)&lt;br /&gt;
** 3651/3651 - Beta Business Park - http://asimov.betatechnologies.info:9003/&lt;br /&gt;
** 3652/3650 - EggVille - http://bradbury.betatechnologies.info:9000/&lt;br /&gt;
** 3652/3651 - Beta Sandbox - http://bradbury.betatechnologies.info:9001/&lt;br /&gt;
** 7000/7000 - Half Way - http://bradbury.betatechnologies.info:9002/&lt;br /&gt;
** 11000/11000 - Far Away - http://bradbury.betatechnologies.info:9003/&lt;br /&gt;
&lt;br /&gt;
These last two are required because this minigrid is Hypergrid-enabled. So to jump across LL&#039;s grid and any other Hypergrid, due to the weird 4096-jump-limit, you need to jump to Half Way and later to Far Away and back.&lt;br /&gt;
&lt;br /&gt;
* Contact: [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]]&lt;br /&gt;
* E-Mail: [mailto://Gwyneth.Llewelyn@BetaTechnologies.Info Gwyneth Llewelyn]&lt;br /&gt;
&lt;br /&gt;
== eaglefx Binder ==&lt;br /&gt;
&lt;br /&gt;
Sunred Beach Gridnaut&lt;br /&gt;
&lt;br /&gt;
* http://gridnaut.sunredbeach.com:9008&lt;br /&gt;
* 24/7 - it may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:eaglefx Binder | eaglefx Binder]]&lt;br /&gt;
* E-Mail: [mailto://eaglefx99@yahoo.com eaglefx Binder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448442</id>
		<title>Open Grid Public Beta/Public Regions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448442"/>
		<updated>2009-08-04T22:56:06Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Linden Lab OGP Regions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following OpenSim regions supporting the Open Grid protocol are available for you to teleport to once you&#039;ve authenticated to the agent domain:&lt;br /&gt;
&lt;br /&gt;
This is value you enter into the region URL dialog on the login screen and the World &amp;gt;&amp;gt; Teleport Region command.&lt;br /&gt;
&lt;br /&gt;
== Linden Lab OGP Regions ==&lt;br /&gt;
&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/821cfa62-f4b7-26e2-d373-4c15b84a1de3 for Bethel&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/60fd89a9-c9ea-3967-0225-6f10018a5cef for Oak Grove&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/62c65aa5-748f-62a7-99ab-ca6f16e72965 for Grignano&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/7620c3f8-370a-61c2-57c8-12626a1af312 for Pullman&lt;br /&gt;
&lt;br /&gt;
== Ugotrade ==&lt;br /&gt;
&lt;br /&gt;
* http://ugotrade.net:9000&lt;br /&gt;
* 24/7 if it is down I will restart &lt;br /&gt;
* Contact: Tara5 Oh&lt;br /&gt;
&lt;br /&gt;
== COM.lounge / Tao Takashi / mrtopf.de ==&lt;br /&gt;
&lt;br /&gt;
* http://plonetv.de:9000&lt;br /&gt;
* currently offline due to awaiting new patch&lt;br /&gt;
* Contact: [http://mrtopf.de/blog Tao Takashi]&lt;br /&gt;
&lt;br /&gt;
== BlueWall ==&lt;br /&gt;
&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/BlueWall%20Isle&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/Bay%20Side&lt;br /&gt;
* http://ascent.bluewallgroup.com:9910/BlueWall%20Gateway &#039;&#039;Hypergrid gateway to OSGrid&#039;&#039;&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:BlueWall Slade | Bluewall Slade]]&lt;br /&gt;
* E-Mail: [mailto://BlueWall.Slade@gmail.com BlueWall Slade]&lt;br /&gt;
&lt;br /&gt;
== SimlandMax ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://simland.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:creator Luna]]&lt;br /&gt;
&lt;br /&gt;
== Elsewhere ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.nowherevirtual.com:9000&lt;br /&gt;
* Times Available: 24/7 (except for maintenance)&lt;br /&gt;
* Contact: [[User:Emma Nowhere | Emma Nowhere ]]&lt;br /&gt;
* E-Mail: [mailto://emma.nowhere@gmail.com Emma Nowhere]&lt;br /&gt;
&lt;br /&gt;
== LJPOGP00 ==&lt;br /&gt;
&lt;br /&gt;
* http://98.26.97.209:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:Julie Wasserstrom | Julie Wasserstrom]]&lt;br /&gt;
* E-Mail: [mailto://Julie.Wasserstrom@gmail.com Julie Wasserstrom]&lt;br /&gt;
&lt;br /&gt;
== Luskwood ==&lt;br /&gt;
&lt;br /&gt;
* http://opengrid.luskwood.net:9000&lt;br /&gt;
* 24/7, Not built out yet though. &lt;br /&gt;
* Contact [[User:Michi Lumin | Michi Lumin]]&lt;br /&gt;
* E-Mail: [mailto://michi@luskwood.org Michi Lumin]&lt;br /&gt;
&lt;br /&gt;
== Akina ==&lt;br /&gt;
*  http://213.186.37.135:9000&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:EloiseJolie Capalini|EloiseJolie Capalini]]&lt;br /&gt;
* Email [mailto://artana34@gmail.com Artana]&lt;br /&gt;
&lt;br /&gt;
== Planck  and Kaku ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.vworlds.co.uk:9000&lt;br /&gt;
* Times Available: 0:800 23:00 UTC 24/7 when new server is ready&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== Dirac, Fermi, Bohr and Pauli ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://mainland.vworlds.co.uk:9000/&lt;br /&gt;
* Times Available: 24/7&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== BrackenLand ==&lt;br /&gt;
&lt;br /&gt;
* http://&lt;br /&gt;
* Temporarily offline&lt;br /&gt;
* Contact: [[User:Gomez Bracken | Gomez Bracken]]&lt;br /&gt;
* E-Mail: [mailto://gomez@temptations-club.com Gomez Bracken]&lt;br /&gt;
&lt;br /&gt;
== Piper ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://primforge.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [http://primforge.com/ Torrid Luna]&lt;br /&gt;
&lt;br /&gt;
== Zinnemann Grid ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://zinnemanngrid.com:9000&lt;br /&gt;
* [http://www.zinnemann.com/grid.asp Zinnemann Grid Webpage]&lt;br /&gt;
* Contact: [[User:Hans Zinnemann | Hans Zinnemann]]&lt;br /&gt;
&lt;br /&gt;
== Lakewood / Ducatillon Group Project ==&lt;br /&gt;
&lt;br /&gt;
* http://dgpexperimental.selfip.org:9000&lt;br /&gt;
* 24/7 - might be unavailable for short periods as far as we update/maintain the location&lt;br /&gt;
* Contact: [[User:McCoy Ducatillon | McCoy Ducatillon]]&lt;br /&gt;
* E-Mail: [mailto://ducatillongroup@gmail.com McCoy Ducatillon]&lt;br /&gt;
&lt;br /&gt;
== Burning Life Test Open Sim ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://68.178.191.56:9000&lt;br /&gt;
* Times Available: 24/7 (Unless Under Update)&lt;br /&gt;
* Contact: [[User:Vicero Lambert | Vicero Lambert ]]&lt;br /&gt;
* E-Mail: [mailto://jakekukuk@gmail.com Vicero Lambert]&lt;br /&gt;
&lt;br /&gt;
== Litesim Mainland ==&lt;br /&gt;
&lt;br /&gt;
* http://lsmainland.ogs-openuser.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 - occasional issues&lt;br /&gt;
* Contact: [[User:Gareth Ellison | Gareth Nelson]]&lt;br /&gt;
* E-Mail: [mailto://gareth@litesim.com Gareth Nelson]&lt;br /&gt;
* About 10 regions on the grid&lt;br /&gt;
* Can also now do TP into other random (non-OGP) grids and tested with OSGrid and central grid&lt;br /&gt;
&lt;br /&gt;
== Gridrock Worlds ==&lt;br /&gt;
* closed for the next few months&lt;br /&gt;
* Blog info: http://www.in2orbit.net&lt;br /&gt;
* E-Mail: [mailto://whyroc@in2orbit.net whyroc Slade]&lt;br /&gt;
&lt;br /&gt;
== Douggles Hangout ==&lt;br /&gt;
* Region URL http://club-panty.com:9000&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact bonghit Schism_External &lt;br /&gt;
* Email [mailto:pantera.42069@yahoo.com]&lt;br /&gt;
&lt;br /&gt;
== Pixelpark ==&lt;br /&gt;
* Region URL http://pixelpark.servegame.org:9000&lt;br /&gt;
* online (&#039;&#039;&#039;updated&#039;&#039;&#039; to OpenSim 0.6 as of 11/14/08 on Amazon EC2)&lt;br /&gt;
* Contact [[User:Bartholomew Kleiber | Bartholomew Kleiber ]] &lt;br /&gt;
* Email [mailto://dirk.krause@pixelpark.com Dirk Krause]&lt;br /&gt;
&lt;br /&gt;
== Five Miles Out ==&lt;br /&gt;
* Region URL http://taurus.fivemile.org:9000&lt;br /&gt;
* 24/7 uptime 1 Gbps&lt;br /&gt;
* Contact [[User:Jim Kupferberg | Jim Kupferberg ]] &lt;br /&gt;
* Email [mailto:info@fivemile.net Jim Kupferberg]&lt;br /&gt;
&lt;br /&gt;
== Whichway From Here ==&lt;br /&gt;
* Region URL http://ae6vk.harpsichordyet.com:9000&lt;br /&gt;
* 09:00-22:00 SLT, but down at my whim.&lt;br /&gt;
* Contact [[User:Whichway Janus | Whichway Janus ]] &lt;br /&gt;
* Email [mailto:Whichway.Janus@Yahoo.Com Whichway Janus]&lt;br /&gt;
&lt;br /&gt;
== Dahlia Island ==&lt;br /&gt;
* Region URL http://thnk1.dyndns.org:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Dahlia Trimble | Dahlia Trimble]]&lt;br /&gt;
* Email [mailto:dahliaTrimble@gmail.com Dahlia Trimble]&lt;br /&gt;
&lt;br /&gt;
== 3Di OGP Test ==&lt;br /&gt;
* Region URL http://210.188.235.138:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Kish Kas | Kish Kas]]&lt;br /&gt;
&lt;br /&gt;
== Bit Island ==&lt;br /&gt;
* Region URL http://mark.bitlife.jp:9000&lt;br /&gt;
* 24/7 uptime &lt;br /&gt;
* Contact [[User:Bit2zero Planer | Bit2zero Planer]]&lt;br /&gt;
&lt;br /&gt;
== metaXLR8 ==&lt;br /&gt;
* Region URL http://metaxlr8.com:9000&lt;br /&gt;
* Uptime 24/7, down only for testing and updating&lt;br /&gt;
* See http://metafuturing.net/index.php/MetaXLR8_OpenSim&lt;br /&gt;
* Contact: Giulio Perhaps&lt;br /&gt;
&lt;br /&gt;
== La Isla West ==&lt;br /&gt;
* http://24.30.54.84:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:m0rdred Veil | m0rdred Veil]]&lt;br /&gt;
* E-Mail: [mailto://m0rdredveil@yahoo.com m0rdred Veil]&lt;br /&gt;
&lt;br /&gt;
== AUGrid-OGP Norgan ==&lt;br /&gt;
* http://66.197.247.222:9005 http://ogp.augrid.org:9005&lt;br /&gt;
* http://ogp.augrid.org:9005/OGP%20Plaza - OGP Plaza&lt;br /&gt;
* http://ogp.augrid.org:9005/nortopia - Nortopia&lt;br /&gt;
* http://ogp.augrid.org:9005/augrid.org%20ogp - Augrid.org OGP&lt;br /&gt;
* http://ogp.augrid.org:9005/jodyville - JodyVille&lt;br /&gt;
* http://ogp.augrid.org:9005/66.197.247.222 - Test Numerical Sim name&lt;br /&gt;
* All regions are on AUGrid.org and Beta Grid&lt;br /&gt;
* Online 24/7 - Info and custom objects with land shaped like Aust. more info http://www.augrid.org&lt;br /&gt;
* Contact: [[User:Norgan Torok|Norgan Torok]]&lt;br /&gt;
* E-Mail: [mailto://contact@augrid.org Norgan Torok (SL)/Norgan Crazys (AUGrid)]&lt;br /&gt;
&lt;br /&gt;
== Berlinos  ==&lt;br /&gt;
* 1. Region URL: http://testgrid.de:9000/berlinos&lt;br /&gt;
* 2. Region URL: http://testgrid.de:9000/berlinos2&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact: [[User:Easyfresh Auer]]&lt;br /&gt;
* E-Mail: [mailto://easyfresh.auer@easyfresh-auer.de Easyfresh Auer]&lt;br /&gt;
&lt;br /&gt;
== Bulli&#039;s Land ==&lt;br /&gt;
* Region URL: http://83.247.63.174:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:Bulli Schumann]]&lt;br /&gt;
* E-Mail: [mailto://bulli.schumann@gmail.com Bulli Schumann]&lt;br /&gt;
&lt;br /&gt;
== GCSE ==&lt;br /&gt;
* Region URL: http://gcse.ath.cx:9300&lt;br /&gt;
* 24/7 uptime (unless NAT loopback fails)&lt;br /&gt;
* Contact: [[User:Herfulnerful Holsworthy]]&lt;br /&gt;
* E-Mail: [mailto://herfulnerful@charter.net Herfulnerful Holsworthy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Radioactive World ==&lt;br /&gt;
* Region URL: &#039;&#039;&#039;http://ct1aic.dyndns.org:9000&#039;&#039;&#039;&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Also with 14 SIM&#039;s @ OSGRID&lt;br /&gt;
* Contact: [[User:Radioactive Rosca]]&lt;br /&gt;
* E-Mail: [mailto://radioactive.rosca@gmail.com Radioactive Rosca]&lt;br /&gt;
&lt;br /&gt;
== Bloob box Island ==&lt;br /&gt;
* Region URL: http://87.98.134.166:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:kaly Mayako]]&lt;br /&gt;
&lt;br /&gt;
== Chandra ==&lt;br /&gt;
*  http://surya.grids.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:Armon Aeon|Armon Aeon]]&lt;br /&gt;
&lt;br /&gt;
== Ciuso Prime ==&lt;br /&gt;
*http://128.177.27.217:9000 or http://prime.ciuso.com:9000  - Not available currently!&lt;br /&gt;
*intended to be up 24*7 except for maintenance and upgrades&lt;br /&gt;
* Contact: [[User:Sered Woollahra|Sered Woollahra]], seredsecondlife at gmail.com&lt;br /&gt;
&lt;br /&gt;
== Lexania ==&lt;br /&gt;
* 1. OGP Region URL: http://lexa.ath.cx:9000/Lexania&lt;br /&gt;
* 2. OGP Region URL: http://lexa.ath.cx:9000/Lexania2&lt;br /&gt;
* Uptime: Quite a lot&lt;br /&gt;
* Status: Three trees and a puddle (per region!) :)&lt;br /&gt;
* Contact: Sure, why not&lt;br /&gt;
* Which one: SL IM: [[User: Lexa Sands|Lexa Sands]]&lt;br /&gt;
* Email: I&#039;ll get SL IMs via Email when offline&lt;br /&gt;
&lt;br /&gt;
==Kurai&#039;s OpenSims==&lt;br /&gt;
*http://zeitenwerk.de:9128&lt;br /&gt;
*Uptime: 24/7 - 100 Mbits&lt;br /&gt;
*Contact: [[User: Kuraiko Yoshikawa|Kuraiko Yoshikawa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TicTacToe for Gridnauts ==&lt;br /&gt;
* This &amp;quot;opensim&amp;quot; (world) is a test for &amp;quot;minimum requirements&amp;quot;. We are using a Dell Latitude D600 notebook having a  Intel Centrino 2.0 Ghz, 512 Mb (RAM) and a broadband line having only   256 Kbps (for downloads)/100 Kbps (for uploads).&lt;br /&gt;
* 2 avatares can play the tic-tac-toe game clicking   cubes, that will rotate.  &lt;br /&gt;
* http://titactoe.ath.cx:9000/TicTacToe&lt;br /&gt;
* Our &amp;quot;opensim&amp;quot; is hooked to OSGrid. Region: TicTacToe.&lt;br /&gt;
* If you like to do a test  or a demo, please contact me.&lt;br /&gt;
* Contact: [[User:Adamascj Aji|Americo Damasceno - Adamascj Aji]]&lt;br /&gt;
&lt;br /&gt;
== Beta Technologies OpenSim (Mini-)Grid ==&lt;br /&gt;
* Micro-grid for [http://betatechnologies.info/ Beta Technologies]. &lt;br /&gt;
* The first four regions are co-located in Phoenix, Arizona (ping times should be about the same as to LL&#039;s grids); the last four in Portugal, Europe. The purpose was to test running a common grid distributed among two data centres. Servers are quite different in performance: the European server has much more memory and performance, but the network access is poor. The Arizona regions are on a low-powered server which however boasts excellent connectivity. The experience of going from one to the other is quite intriguing.&lt;br /&gt;
* Open for now as we just test things out; some regions might be closed in the future as this Mini-Grid begins to be internally used for our own projects (mostly as a temporary sandbox before transferring content to LL&#039;s grid).&lt;br /&gt;
* Uptime: ought to be 99.7%, except for upgrades and the odd reconfiguration. Some sims or parcels might be closed as this is being used for some internal testing.&lt;br /&gt;
* No support web site for now (users are created manually)&lt;br /&gt;
* if you wish to add your region to our Mini-Grid for tests, and don&#039;t wish to go through the fuss of creating your set of central servers, you&#039;re welcome to do so at this stage. Just contact us!&lt;br /&gt;
* Available regions as follows:&lt;br /&gt;
** 3650/3650 - Beta Technologies - http://asimov.betatechnologies.info:9000/&lt;br /&gt;
** 3650/3651 - Theatron - http://asimov.betatechnologies.info:9001/&lt;br /&gt;
** 3651/3650 - Terreiro do Paco - http://asimov.betatechnologies.info:9002/ (lots of content here)&lt;br /&gt;
** 3651/3651 - Beta Business Park - http://asimov.betatechnologies.info:9003/&lt;br /&gt;
** 3652/3650 - EggVille - http://bradbury.betatechnologies.info:9000/&lt;br /&gt;
** 3652/3651 - Beta Sandbox - http://bradbury.betatechnologies.info:9001/&lt;br /&gt;
** 7000/7000 - Half Way - http://bradbury.betatechnologies.info:9002/&lt;br /&gt;
** 11000/11000 - Far Away - http://bradbury.betatechnologies.info:9003/&lt;br /&gt;
&lt;br /&gt;
These last two are required because this minigrid is Hypergrid-enabled. So to jump across LL&#039;s grid and any other Hypergrid, due to the weird 4096-jump-limit, you need to jump to Half Way and later to Far Away and back.&lt;br /&gt;
&lt;br /&gt;
* Contact: [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]]&lt;br /&gt;
* E-Mail: [mailto://Gwyneth.Llewelyn@BetaTechnologies.Info Gwyneth Llewelyn]&lt;br /&gt;
&lt;br /&gt;
== eaglefx Binder ==&lt;br /&gt;
&lt;br /&gt;
Sunred Beach Gridnaut&lt;br /&gt;
&lt;br /&gt;
* http://gridnaut.sunredbeach.com:9008&lt;br /&gt;
* 24/7 - it may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:eaglefx Binder | eaglefx Binder]]&lt;br /&gt;
* E-Mail: [mailto://eaglefx99@yahoo.com eaglefx Binder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448422</id>
		<title>Open Grid Public Beta/Public Regions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448422"/>
		<updated>2009-08-04T21:32:59Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Linden Lab OGP Regions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following OpenSim regions supporting the Open Grid protocol are available for you to teleport to once you&#039;ve authenticated to the agent domain:&lt;br /&gt;
&lt;br /&gt;
This is value you enter into the region URL dialog on the login screen and the World &amp;gt;&amp;gt; Teleport Region command.&lt;br /&gt;
&lt;br /&gt;
== Linden Lab OGP Regions ==&lt;br /&gt;
&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/821cfa62-f4b7-26e2-d373-4c15b84a1de3 for Bethel&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/60fd89a9-c9ea-3967-0225-6f10018a5cef for Oak Grove&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/8246e5ad-e8bb-7e1b-b3df-b737aa4e2f63 for Grignano&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/daa40bda-5a00-6055-98f4-ef3b753114b5 for Pullman&lt;br /&gt;
&lt;br /&gt;
== Ugotrade ==&lt;br /&gt;
&lt;br /&gt;
* http://ugotrade.net:9000&lt;br /&gt;
* 24/7 if it is down I will restart &lt;br /&gt;
* Contact: Tara5 Oh&lt;br /&gt;
&lt;br /&gt;
== COM.lounge / Tao Takashi / mrtopf.de ==&lt;br /&gt;
&lt;br /&gt;
* http://plonetv.de:9000&lt;br /&gt;
* currently offline due to awaiting new patch&lt;br /&gt;
* Contact: [http://mrtopf.de/blog Tao Takashi]&lt;br /&gt;
&lt;br /&gt;
== BlueWall ==&lt;br /&gt;
&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/BlueWall%20Isle&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/Bay%20Side&lt;br /&gt;
* http://ascent.bluewallgroup.com:9910/BlueWall%20Gateway &#039;&#039;Hypergrid gateway to OSGrid&#039;&#039;&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:BlueWall Slade | Bluewall Slade]]&lt;br /&gt;
* E-Mail: [mailto://BlueWall.Slade@gmail.com BlueWall Slade]&lt;br /&gt;
&lt;br /&gt;
== SimlandMax ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://simland.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:creator Luna]]&lt;br /&gt;
&lt;br /&gt;
== Elsewhere ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.nowherevirtual.com:9000&lt;br /&gt;
* Times Available: 24/7 (except for maintenance)&lt;br /&gt;
* Contact: [[User:Emma Nowhere | Emma Nowhere ]]&lt;br /&gt;
* E-Mail: [mailto://emma.nowhere@gmail.com Emma Nowhere]&lt;br /&gt;
&lt;br /&gt;
== LJPOGP00 ==&lt;br /&gt;
&lt;br /&gt;
* http://98.26.97.209:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:Julie Wasserstrom | Julie Wasserstrom]]&lt;br /&gt;
* E-Mail: [mailto://Julie.Wasserstrom@gmail.com Julie Wasserstrom]&lt;br /&gt;
&lt;br /&gt;
== Luskwood ==&lt;br /&gt;
&lt;br /&gt;
* http://opengrid.luskwood.net:9000&lt;br /&gt;
* 24/7, Not built out yet though. &lt;br /&gt;
* Contact [[User:Michi Lumin | Michi Lumin]]&lt;br /&gt;
* E-Mail: [mailto://michi@luskwood.org Michi Lumin]&lt;br /&gt;
&lt;br /&gt;
== Akina ==&lt;br /&gt;
*  http://213.186.37.135:9000&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:EloiseJolie Capalini|EloiseJolie Capalini]]&lt;br /&gt;
* Email [mailto://artana34@gmail.com Artana]&lt;br /&gt;
&lt;br /&gt;
== Planck  and Kaku ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.vworlds.co.uk:9000&lt;br /&gt;
* Times Available: 0:800 23:00 UTC 24/7 when new server is ready&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== Dirac, Fermi, Bohr and Pauli ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://mainland.vworlds.co.uk:9000/&lt;br /&gt;
* Times Available: 24/7&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== BrackenLand ==&lt;br /&gt;
&lt;br /&gt;
* http://&lt;br /&gt;
* Temporarily offline&lt;br /&gt;
* Contact: [[User:Gomez Bracken | Gomez Bracken]]&lt;br /&gt;
* E-Mail: [mailto://gomez@temptations-club.com Gomez Bracken]&lt;br /&gt;
&lt;br /&gt;
== Piper ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://primforge.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [http://primforge.com/ Torrid Luna]&lt;br /&gt;
&lt;br /&gt;
== Zinnemann Grid ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://zinnemanngrid.com:9000&lt;br /&gt;
* [http://www.zinnemann.com/grid.asp Zinnemann Grid Webpage]&lt;br /&gt;
* Contact: [[User:Hans Zinnemann | Hans Zinnemann]]&lt;br /&gt;
&lt;br /&gt;
== Lakewood / Ducatillon Group Project ==&lt;br /&gt;
&lt;br /&gt;
* http://dgpexperimental.selfip.org:9000&lt;br /&gt;
* 24/7 - might be unavailable for short periods as far as we update/maintain the location&lt;br /&gt;
* Contact: [[User:McCoy Ducatillon | McCoy Ducatillon]]&lt;br /&gt;
* E-Mail: [mailto://ducatillongroup@gmail.com McCoy Ducatillon]&lt;br /&gt;
&lt;br /&gt;
== Burning Life Test Open Sim ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://68.178.191.56:9000&lt;br /&gt;
* Times Available: 24/7 (Unless Under Update)&lt;br /&gt;
* Contact: [[User:Vicero Lambert | Vicero Lambert ]]&lt;br /&gt;
* E-Mail: [mailto://jakekukuk@gmail.com Vicero Lambert]&lt;br /&gt;
&lt;br /&gt;
== Litesim Mainland ==&lt;br /&gt;
&lt;br /&gt;
* http://lsmainland.ogs-openuser.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 - occasional issues&lt;br /&gt;
* Contact: [[User:Gareth Ellison | Gareth Nelson]]&lt;br /&gt;
* E-Mail: [mailto://gareth@litesim.com Gareth Nelson]&lt;br /&gt;
* About 10 regions on the grid&lt;br /&gt;
* Can also now do TP into other random (non-OGP) grids and tested with OSGrid and central grid&lt;br /&gt;
&lt;br /&gt;
== Gridrock Worlds ==&lt;br /&gt;
* closed for the next few months&lt;br /&gt;
* Blog info: http://www.in2orbit.net&lt;br /&gt;
* E-Mail: [mailto://whyroc@in2orbit.net whyroc Slade]&lt;br /&gt;
&lt;br /&gt;
== Douggles Hangout ==&lt;br /&gt;
* Region URL http://club-panty.com:9000&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact bonghit Schism_External &lt;br /&gt;
* Email [mailto:pantera.42069@yahoo.com]&lt;br /&gt;
&lt;br /&gt;
== Pixelpark ==&lt;br /&gt;
* Region URL http://pixelpark.servegame.org:9000&lt;br /&gt;
* online (&#039;&#039;&#039;updated&#039;&#039;&#039; to OpenSim 0.6 as of 11/14/08 on Amazon EC2)&lt;br /&gt;
* Contact [[User:Bartholomew Kleiber | Bartholomew Kleiber ]] &lt;br /&gt;
* Email [mailto://dirk.krause@pixelpark.com Dirk Krause]&lt;br /&gt;
&lt;br /&gt;
== Five Miles Out ==&lt;br /&gt;
* Region URL http://taurus.fivemile.org:9000&lt;br /&gt;
* 24/7 uptime 1 Gbps&lt;br /&gt;
* Contact [[User:Jim Kupferberg | Jim Kupferberg ]] &lt;br /&gt;
* Email [mailto:info@fivemile.net Jim Kupferberg]&lt;br /&gt;
&lt;br /&gt;
== Whichway From Here ==&lt;br /&gt;
* Region URL http://ae6vk.harpsichordyet.com:9000&lt;br /&gt;
* 09:00-22:00 SLT, but down at my whim.&lt;br /&gt;
* Contact [[User:Whichway Janus | Whichway Janus ]] &lt;br /&gt;
* Email [mailto:Whichway.Janus@Yahoo.Com Whichway Janus]&lt;br /&gt;
&lt;br /&gt;
== Dahlia Island ==&lt;br /&gt;
* Region URL http://thnk1.dyndns.org:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Dahlia Trimble | Dahlia Trimble]]&lt;br /&gt;
* Email [mailto:dahliaTrimble@gmail.com Dahlia Trimble]&lt;br /&gt;
&lt;br /&gt;
== 3Di OGP Test ==&lt;br /&gt;
* Region URL http://210.188.235.138:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Kish Kas | Kish Kas]]&lt;br /&gt;
&lt;br /&gt;
== Bit Island ==&lt;br /&gt;
* Region URL http://mark.bitlife.jp:9000&lt;br /&gt;
* 24/7 uptime &lt;br /&gt;
* Contact [[User:Bit2zero Planer | Bit2zero Planer]]&lt;br /&gt;
&lt;br /&gt;
== metaXLR8 ==&lt;br /&gt;
* Region URL http://metaxlr8.com:9000&lt;br /&gt;
* Uptime 24/7, down only for testing and updating&lt;br /&gt;
* See http://metafuturing.net/index.php/MetaXLR8_OpenSim&lt;br /&gt;
* Contact: Giulio Perhaps&lt;br /&gt;
&lt;br /&gt;
== La Isla West ==&lt;br /&gt;
* http://24.30.54.84:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:m0rdred Veil | m0rdred Veil]]&lt;br /&gt;
* E-Mail: [mailto://m0rdredveil@yahoo.com m0rdred Veil]&lt;br /&gt;
&lt;br /&gt;
== AUGrid-OGP Norgan ==&lt;br /&gt;
* http://66.197.247.222:9005 http://ogp.augrid.org:9005&lt;br /&gt;
* http://ogp.augrid.org:9005/OGP%20Plaza - OGP Plaza&lt;br /&gt;
* http://ogp.augrid.org:9005/nortopia - Nortopia&lt;br /&gt;
* http://ogp.augrid.org:9005/augrid.org%20ogp - Augrid.org OGP&lt;br /&gt;
* http://ogp.augrid.org:9005/jodyville - JodyVille&lt;br /&gt;
* http://ogp.augrid.org:9005/66.197.247.222 - Test Numerical Sim name&lt;br /&gt;
* All regions are on AUGrid.org and Beta Grid&lt;br /&gt;
* Online 24/7 - Info and custom objects with land shaped like Aust. more info http://www.augrid.org&lt;br /&gt;
* Contact: [[User:Norgan Torok|Norgan Torok]]&lt;br /&gt;
* E-Mail: [mailto://contact@augrid.org Norgan Torok (SL)/Norgan Crazys (AUGrid)]&lt;br /&gt;
&lt;br /&gt;
== Berlinos  ==&lt;br /&gt;
* 1. Region URL: http://testgrid.de:9000/berlinos&lt;br /&gt;
* 2. Region URL: http://testgrid.de:9000/berlinos2&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact: [[User:Easyfresh Auer]]&lt;br /&gt;
* E-Mail: [mailto://easyfresh.auer@easyfresh-auer.de Easyfresh Auer]&lt;br /&gt;
&lt;br /&gt;
== Bulli&#039;s Land ==&lt;br /&gt;
* Region URL: http://83.247.63.174:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:Bulli Schumann]]&lt;br /&gt;
* E-Mail: [mailto://bulli.schumann@gmail.com Bulli Schumann]&lt;br /&gt;
&lt;br /&gt;
== GCSE ==&lt;br /&gt;
* Region URL: http://gcse.ath.cx:9300&lt;br /&gt;
* 24/7 uptime (unless NAT loopback fails)&lt;br /&gt;
* Contact: [[User:Herfulnerful Holsworthy]]&lt;br /&gt;
* E-Mail: [mailto://herfulnerful@charter.net Herfulnerful Holsworthy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Radioactive World ==&lt;br /&gt;
* Region URL: &#039;&#039;&#039;http://ct1aic.dyndns.org:9000&#039;&#039;&#039;&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Also with 14 SIM&#039;s @ OSGRID&lt;br /&gt;
* Contact: [[User:Radioactive Rosca]]&lt;br /&gt;
* E-Mail: [mailto://radioactive.rosca@gmail.com Radioactive Rosca]&lt;br /&gt;
&lt;br /&gt;
== Bloob box Island ==&lt;br /&gt;
* Region URL: http://87.98.134.166:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:kaly Mayako]]&lt;br /&gt;
&lt;br /&gt;
== Chandra ==&lt;br /&gt;
*  http://surya.grids.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:Armon Aeon|Armon Aeon]]&lt;br /&gt;
&lt;br /&gt;
== Ciuso Prime ==&lt;br /&gt;
*http://128.177.27.217:9000 or http://prime.ciuso.com:9000  - Not available currently!&lt;br /&gt;
*intended to be up 24*7 except for maintenance and upgrades&lt;br /&gt;
* Contact: [[User:Sered Woollahra|Sered Woollahra]], seredsecondlife at gmail.com&lt;br /&gt;
&lt;br /&gt;
== Lexania ==&lt;br /&gt;
* 1. OGP Region URL: http://lexa.ath.cx:9000/Lexania&lt;br /&gt;
* 2. OGP Region URL: http://lexa.ath.cx:9000/Lexania2&lt;br /&gt;
* Uptime: Quite a lot&lt;br /&gt;
* Status: Three trees and a puddle (per region!) :)&lt;br /&gt;
* Contact: Sure, why not&lt;br /&gt;
* Which one: SL IM: [[User: Lexa Sands|Lexa Sands]]&lt;br /&gt;
* Email: I&#039;ll get SL IMs via Email when offline&lt;br /&gt;
&lt;br /&gt;
==Kurai&#039;s OpenSims==&lt;br /&gt;
*http://zeitenwerk.de:9128&lt;br /&gt;
*Uptime: 24/7 - 100 Mbits&lt;br /&gt;
*Contact: [[User: Kuraiko Yoshikawa|Kuraiko Yoshikawa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TicTacToe for Gridnauts ==&lt;br /&gt;
* This &amp;quot;opensim&amp;quot; (world) is a test for &amp;quot;minimum requirements&amp;quot;. We are using a Dell Latitude D600 notebook having a  Intel Centrino 2.0 Ghz, 512 Mb (RAM) and a broadband line having only   256 Kbps (for downloads)/100 Kbps (for uploads).&lt;br /&gt;
* 2 avatares can play the tic-tac-toe game clicking   cubes, that will rotate.  &lt;br /&gt;
* http://titactoe.ath.cx:9000/TicTacToe&lt;br /&gt;
* Our &amp;quot;opensim&amp;quot; is hooked to OSGrid. Region: TicTacToe.&lt;br /&gt;
* If you like to do a test  or a demo, please contact me.&lt;br /&gt;
* Contact: [[User:Adamascj Aji|Americo Damasceno - Adamascj Aji]]&lt;br /&gt;
&lt;br /&gt;
== Beta Technologies OpenSim (Mini-)Grid ==&lt;br /&gt;
* Micro-grid for [http://betatechnologies.info/ Beta Technologies]. &lt;br /&gt;
* The first four regions are co-located in Phoenix, Arizona (ping times should be about the same as to LL&#039;s grids); the last four in Portugal, Europe. The purpose was to test running a common grid distributed among two data centres. Servers are quite different in performance: the European server has much more memory and performance, but the network access is poor. The Arizona regions are on a low-powered server which however boasts excellent connectivity. The experience of going from one to the other is quite intriguing.&lt;br /&gt;
* Open for now as we just test things out; some regions might be closed in the future as this Mini-Grid begins to be internally used for our own projects (mostly as a temporary sandbox before transferring content to LL&#039;s grid).&lt;br /&gt;
* Uptime: ought to be 99.7%, except for upgrades and the odd reconfiguration. Some sims or parcels might be closed as this is being used for some internal testing.&lt;br /&gt;
* No support web site for now (users are created manually)&lt;br /&gt;
* if you wish to add your region to our Mini-Grid for tests, and don&#039;t wish to go through the fuss of creating your set of central servers, you&#039;re welcome to do so at this stage. Just contact us!&lt;br /&gt;
* Available regions as follows:&lt;br /&gt;
** 3650/3650 - Beta Technologies - http://asimov.betatechnologies.info:9000/&lt;br /&gt;
** 3650/3651 - Theatron - http://asimov.betatechnologies.info:9001/&lt;br /&gt;
** 3651/3650 - Terreiro do Paco - http://asimov.betatechnologies.info:9002/ (lots of content here)&lt;br /&gt;
** 3651/3651 - Beta Business Park - http://asimov.betatechnologies.info:9003/&lt;br /&gt;
** 3652/3650 - EggVille - http://bradbury.betatechnologies.info:9000/&lt;br /&gt;
** 3652/3651 - Beta Sandbox - http://bradbury.betatechnologies.info:9001/&lt;br /&gt;
** 7000/7000 - Half Way - http://bradbury.betatechnologies.info:9002/&lt;br /&gt;
** 11000/11000 - Far Away - http://bradbury.betatechnologies.info:9003/&lt;br /&gt;
&lt;br /&gt;
These last two are required because this minigrid is Hypergrid-enabled. So to jump across LL&#039;s grid and any other Hypergrid, due to the weird 4096-jump-limit, you need to jump to Half Way and later to Far Away and back.&lt;br /&gt;
&lt;br /&gt;
* Contact: [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]]&lt;br /&gt;
* E-Mail: [mailto://Gwyneth.Llewelyn@BetaTechnologies.Info Gwyneth Llewelyn]&lt;br /&gt;
&lt;br /&gt;
== eaglefx Binder ==&lt;br /&gt;
&lt;br /&gt;
Sunred Beach Gridnaut&lt;br /&gt;
&lt;br /&gt;
* http://gridnaut.sunredbeach.com:9008&lt;br /&gt;
* 24/7 - it may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:eaglefx Binder | eaglefx Binder]]&lt;br /&gt;
* E-Mail: [mailto://eaglefx99@yahoo.com eaglefx Binder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448362</id>
		<title>Open Grid Public Beta/Public Regions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Open_Grid_Public_Beta/Public_Regions&amp;diff=448362"/>
		<updated>2009-08-04T18:25:10Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Linden Lab OGP Regions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following OpenSim regions supporting the Open Grid protocol are available for you to teleport to once you&#039;ve authenticated to the agent domain:&lt;br /&gt;
&lt;br /&gt;
This is value you enter into the region URL dialog on the login screen and the World &amp;gt;&amp;gt; Teleport Region command.&lt;br /&gt;
&lt;br /&gt;
== Linden Lab OGP Regions ==&lt;br /&gt;
&lt;br /&gt;
:OGP Sims on Vaak are up again --[[User:Whump Linden|Whump Linden]] 23:58, 18 June 2009 (UTC)&lt;br /&gt;
:OGP Sims on Vaak are down, and we&#039;re working on getting them back up. --[[User:Infinity Linden|Infinity Linden]] 11:24, 04 August 2009 (PDT)&lt;br /&gt;
&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/cccc1bb7-3446-981c-cab3-d757e0a3b5bc for Bethel&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/056398ad-5d3f-2b63-5195-30306844a108 for Oak Grove&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/64376bd2-e32a-5034-b47d-4edd2227f1db for Grignano&lt;br /&gt;
* https://sim1.vaak.lindenlab.com:12043/cap/43efa885-5f86-5dc5-0839-f7eb1adc1713 for Pullman&lt;br /&gt;
&lt;br /&gt;
== Ugotrade ==&lt;br /&gt;
&lt;br /&gt;
* http://ugotrade.net:9000&lt;br /&gt;
* 24/7 if it is down I will restart &lt;br /&gt;
* Contact: Tara5 Oh&lt;br /&gt;
&lt;br /&gt;
== COM.lounge / Tao Takashi / mrtopf.de ==&lt;br /&gt;
&lt;br /&gt;
* http://plonetv.de:9000&lt;br /&gt;
* currently offline due to awaiting new patch&lt;br /&gt;
* Contact: [http://mrtopf.de/blog Tao Takashi]&lt;br /&gt;
&lt;br /&gt;
== BlueWall ==&lt;br /&gt;
&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/BlueWall%20Isle&lt;br /&gt;
* http://ascent.bluewallgroup.com:9900/Bay%20Side&lt;br /&gt;
* http://ascent.bluewallgroup.com:9910/BlueWall%20Gateway &#039;&#039;Hypergrid gateway to OSGrid&#039;&#039;&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:BlueWall Slade | Bluewall Slade]]&lt;br /&gt;
* E-Mail: [mailto://BlueWall.Slade@gmail.com BlueWall Slade]&lt;br /&gt;
&lt;br /&gt;
== SimlandMax ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://simland.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:creator Luna]]&lt;br /&gt;
&lt;br /&gt;
== Elsewhere ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.nowherevirtual.com:9000&lt;br /&gt;
* Times Available: 24/7 (except for maintenance)&lt;br /&gt;
* Contact: [[User:Emma Nowhere | Emma Nowhere ]]&lt;br /&gt;
* E-Mail: [mailto://emma.nowhere@gmail.com Emma Nowhere]&lt;br /&gt;
&lt;br /&gt;
== LJPOGP00 ==&lt;br /&gt;
&lt;br /&gt;
* http://98.26.97.209:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:Julie Wasserstrom | Julie Wasserstrom]]&lt;br /&gt;
* E-Mail: [mailto://Julie.Wasserstrom@gmail.com Julie Wasserstrom]&lt;br /&gt;
&lt;br /&gt;
== Luskwood ==&lt;br /&gt;
&lt;br /&gt;
* http://opengrid.luskwood.net:9000&lt;br /&gt;
* 24/7, Not built out yet though. &lt;br /&gt;
* Contact [[User:Michi Lumin | Michi Lumin]]&lt;br /&gt;
* E-Mail: [mailto://michi@luskwood.org Michi Lumin]&lt;br /&gt;
&lt;br /&gt;
== Akina ==&lt;br /&gt;
*  http://213.186.37.135:9000&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:EloiseJolie Capalini|EloiseJolie Capalini]]&lt;br /&gt;
* Email [mailto://artana34@gmail.com Artana]&lt;br /&gt;
&lt;br /&gt;
== Planck  and Kaku ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://opensim.vworlds.co.uk:9000&lt;br /&gt;
* Times Available: 0:800 23:00 UTC 24/7 when new server is ready&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== Dirac, Fermi, Bohr and Pauli ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://mainland.vworlds.co.uk:9000/&lt;br /&gt;
* Times Available: 24/7&lt;br /&gt;
* Contact [mailto://chris.samtanko@googlemail.com Chris Samtanko]&lt;br /&gt;
&lt;br /&gt;
== BrackenLand ==&lt;br /&gt;
&lt;br /&gt;
* http://&lt;br /&gt;
* Temporarily offline&lt;br /&gt;
* Contact: [[User:Gomez Bracken | Gomez Bracken]]&lt;br /&gt;
* E-Mail: [mailto://gomez@temptations-club.com Gomez Bracken]&lt;br /&gt;
&lt;br /&gt;
== Piper ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://primforge.org:9009&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [http://primforge.com/ Torrid Luna]&lt;br /&gt;
&lt;br /&gt;
== Zinnemann Grid ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://zinnemanngrid.com:9000&lt;br /&gt;
* [http://www.zinnemann.com/grid.asp Zinnemann Grid Webpage]&lt;br /&gt;
* Contact: [[User:Hans Zinnemann | Hans Zinnemann]]&lt;br /&gt;
&lt;br /&gt;
== Lakewood / Ducatillon Group Project ==&lt;br /&gt;
&lt;br /&gt;
* http://dgpexperimental.selfip.org:9000&lt;br /&gt;
* 24/7 - might be unavailable for short periods as far as we update/maintain the location&lt;br /&gt;
* Contact: [[User:McCoy Ducatillon | McCoy Ducatillon]]&lt;br /&gt;
* E-Mail: [mailto://ducatillongroup@gmail.com McCoy Ducatillon]&lt;br /&gt;
&lt;br /&gt;
== Burning Life Test Open Sim ==&lt;br /&gt;
&lt;br /&gt;
* Region URL: http://68.178.191.56:9000&lt;br /&gt;
* Times Available: 24/7 (Unless Under Update)&lt;br /&gt;
* Contact: [[User:Vicero Lambert | Vicero Lambert ]]&lt;br /&gt;
* E-Mail: [mailto://jakekukuk@gmail.com Vicero Lambert]&lt;br /&gt;
&lt;br /&gt;
== Litesim Mainland ==&lt;br /&gt;
&lt;br /&gt;
* http://lsmainland.ogs-openuser.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 - occasional issues&lt;br /&gt;
* Contact: [[User:Gareth Ellison | Gareth Nelson]]&lt;br /&gt;
* E-Mail: [mailto://gareth@litesim.com Gareth Nelson]&lt;br /&gt;
* About 10 regions on the grid&lt;br /&gt;
* Can also now do TP into other random (non-OGP) grids and tested with OSGrid and central grid&lt;br /&gt;
&lt;br /&gt;
== Gridrock Worlds ==&lt;br /&gt;
* closed for the next few months&lt;br /&gt;
* Blog info: http://www.in2orbit.net&lt;br /&gt;
* E-Mail: [mailto://whyroc@in2orbit.net whyroc Slade]&lt;br /&gt;
&lt;br /&gt;
== Douggles Hangout ==&lt;br /&gt;
* Region URL http://club-panty.com:9000&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact bonghit Schism_External &lt;br /&gt;
* Email [mailto:pantera.42069@yahoo.com]&lt;br /&gt;
&lt;br /&gt;
== Pixelpark ==&lt;br /&gt;
* Region URL http://pixelpark.servegame.org:9000&lt;br /&gt;
* online (&#039;&#039;&#039;updated&#039;&#039;&#039; to OpenSim 0.6 as of 11/14/08 on Amazon EC2)&lt;br /&gt;
* Contact [[User:Bartholomew Kleiber | Bartholomew Kleiber ]] &lt;br /&gt;
* Email [mailto://dirk.krause@pixelpark.com Dirk Krause]&lt;br /&gt;
&lt;br /&gt;
== Five Miles Out ==&lt;br /&gt;
* Region URL http://taurus.fivemile.org:9000&lt;br /&gt;
* 24/7 uptime 1 Gbps&lt;br /&gt;
* Contact [[User:Jim Kupferberg | Jim Kupferberg ]] &lt;br /&gt;
* Email [mailto:info@fivemile.net Jim Kupferberg]&lt;br /&gt;
&lt;br /&gt;
== Whichway From Here ==&lt;br /&gt;
* Region URL http://ae6vk.harpsichordyet.com:9000&lt;br /&gt;
* 09:00-22:00 SLT, but down at my whim.&lt;br /&gt;
* Contact [[User:Whichway Janus | Whichway Janus ]] &lt;br /&gt;
* Email [mailto:Whichway.Janus@Yahoo.Com Whichway Janus]&lt;br /&gt;
&lt;br /&gt;
== Dahlia Island ==&lt;br /&gt;
* Region URL http://thnk1.dyndns.org:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Dahlia Trimble | Dahlia Trimble]]&lt;br /&gt;
* Email [mailto:dahliaTrimble@gmail.com Dahlia Trimble]&lt;br /&gt;
&lt;br /&gt;
== 3Di OGP Test ==&lt;br /&gt;
* Region URL http://210.188.235.138:9000&lt;br /&gt;
* 24/7 uptime, subject to outages for upgrades&lt;br /&gt;
* Contact [[User:Kish Kas | Kish Kas]]&lt;br /&gt;
&lt;br /&gt;
== Bit Island ==&lt;br /&gt;
* Region URL http://mark.bitlife.jp:9000&lt;br /&gt;
* 24/7 uptime &lt;br /&gt;
* Contact [[User:Bit2zero Planer | Bit2zero Planer]]&lt;br /&gt;
&lt;br /&gt;
== metaXLR8 ==&lt;br /&gt;
* Region URL http://metaxlr8.com:9000&lt;br /&gt;
* Uptime 24/7, down only for testing and updating&lt;br /&gt;
* See http://metafuturing.net/index.php/MetaXLR8_OpenSim&lt;br /&gt;
* Contact: Giulio Perhaps&lt;br /&gt;
&lt;br /&gt;
== La Isla West ==&lt;br /&gt;
* http://24.30.54.84:9000&lt;br /&gt;
* 24/7 - may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:m0rdred Veil | m0rdred Veil]]&lt;br /&gt;
* E-Mail: [mailto://m0rdredveil@yahoo.com m0rdred Veil]&lt;br /&gt;
&lt;br /&gt;
== AUGrid-OGP Norgan ==&lt;br /&gt;
* http://66.197.247.222:9005 http://ogp.augrid.org:9005&lt;br /&gt;
* http://ogp.augrid.org:9005/OGP%20Plaza - OGP Plaza&lt;br /&gt;
* http://ogp.augrid.org:9005/nortopia - Nortopia&lt;br /&gt;
* http://ogp.augrid.org:9005/augrid.org%20ogp - Augrid.org OGP&lt;br /&gt;
* http://ogp.augrid.org:9005/jodyville - JodyVille&lt;br /&gt;
* http://ogp.augrid.org:9005/66.197.247.222 - Test Numerical Sim name&lt;br /&gt;
* All regions are on AUGrid.org and Beta Grid&lt;br /&gt;
* Online 24/7 - Info and custom objects with land shaped like Aust. more info http://www.augrid.org&lt;br /&gt;
* Contact: [[User:Norgan Torok|Norgan Torok]]&lt;br /&gt;
* E-Mail: [mailto://contact@augrid.org Norgan Torok (SL)/Norgan Crazys (AUGrid)]&lt;br /&gt;
&lt;br /&gt;
== Berlinos  ==&lt;br /&gt;
* 1. Region URL: http://testgrid.de:9000/berlinos&lt;br /&gt;
* 2. Region URL: http://testgrid.de:9000/berlinos2&lt;br /&gt;
* 24/7 uptime&lt;br /&gt;
* Contact: [[User:Easyfresh Auer]]&lt;br /&gt;
* E-Mail: [mailto://easyfresh.auer@easyfresh-auer.de Easyfresh Auer]&lt;br /&gt;
&lt;br /&gt;
== Bulli&#039;s Land ==&lt;br /&gt;
* Region URL: http://83.247.63.174:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:Bulli Schumann]]&lt;br /&gt;
* E-Mail: [mailto://bulli.schumann@gmail.com Bulli Schumann]&lt;br /&gt;
&lt;br /&gt;
== GCSE ==&lt;br /&gt;
* Region URL: http://gcse.ath.cx:9300&lt;br /&gt;
* 24/7 uptime (unless NAT loopback fails)&lt;br /&gt;
* Contact: [[User:Herfulnerful Holsworthy]]&lt;br /&gt;
* E-Mail: [mailto://herfulnerful@charter.net Herfulnerful Holsworthy]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Radioactive World ==&lt;br /&gt;
* Region URL: &#039;&#039;&#039;http://ct1aic.dyndns.org:9000&#039;&#039;&#039;&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Also with 14 SIM&#039;s @ OSGRID&lt;br /&gt;
* Contact: [[User:Radioactive Rosca]]&lt;br /&gt;
* E-Mail: [mailto://radioactive.rosca@gmail.com Radioactive Rosca]&lt;br /&gt;
&lt;br /&gt;
== Bloob box Island ==&lt;br /&gt;
* Region URL: http://87.98.134.166:9000&lt;br /&gt;
* Up as much as possible&lt;br /&gt;
* Contact: [[User:kaly Mayako]]&lt;br /&gt;
&lt;br /&gt;
== Chandra ==&lt;br /&gt;
*  http://surya.grids.litesim.com:8000/ogp_listen&lt;br /&gt;
* 24/7 except for maint and upgrades&lt;br /&gt;
* Contact: [[User:Armon Aeon|Armon Aeon]]&lt;br /&gt;
&lt;br /&gt;
== Ciuso Prime ==&lt;br /&gt;
*http://128.177.27.217:9000 or http://prime.ciuso.com:9000  - Not available currently!&lt;br /&gt;
*intended to be up 24*7 except for maintenance and upgrades&lt;br /&gt;
* Contact: [[User:Sered Woollahra|Sered Woollahra]], seredsecondlife at gmail.com&lt;br /&gt;
&lt;br /&gt;
== Lexania ==&lt;br /&gt;
* 1. OGP Region URL: http://lexa.ath.cx:9000/Lexania&lt;br /&gt;
* 2. OGP Region URL: http://lexa.ath.cx:9000/Lexania2&lt;br /&gt;
* Uptime: Quite a lot&lt;br /&gt;
* Status: Three trees and a puddle (per region!) :)&lt;br /&gt;
* Contact: Sure, why not&lt;br /&gt;
* Which one: SL IM: [[User: Lexa Sands|Lexa Sands]]&lt;br /&gt;
* Email: I&#039;ll get SL IMs via Email when offline&lt;br /&gt;
&lt;br /&gt;
==Kurai&#039;s OpenSims==&lt;br /&gt;
*http://zeitenwerk.de:9128&lt;br /&gt;
*Uptime: 24/7 - 100 Mbits&lt;br /&gt;
*Contact: [[User: Kuraiko Yoshikawa|Kuraiko Yoshikawa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TicTacToe for Gridnauts ==&lt;br /&gt;
* This &amp;quot;opensim&amp;quot; (world) is a test for &amp;quot;minimum requirements&amp;quot;. We are using a Dell Latitude D600 notebook having a  Intel Centrino 2.0 Ghz, 512 Mb (RAM) and a broadband line having only   256 Kbps (for downloads)/100 Kbps (for uploads).&lt;br /&gt;
* 2 avatares can play the tic-tac-toe game clicking   cubes, that will rotate.  &lt;br /&gt;
* http://titactoe.ath.cx:9000/TicTacToe&lt;br /&gt;
* Our &amp;quot;opensim&amp;quot; is hooked to OSGrid. Region: TicTacToe.&lt;br /&gt;
* If you like to do a test  or a demo, please contact me.&lt;br /&gt;
* Contact: [[User:Adamascj Aji|Americo Damasceno - Adamascj Aji]]&lt;br /&gt;
&lt;br /&gt;
== Beta Technologies OpenSim (Mini-)Grid ==&lt;br /&gt;
* Micro-grid for [http://betatechnologies.info/ Beta Technologies]. &lt;br /&gt;
* The first four regions are co-located in Phoenix, Arizona (ping times should be about the same as to LL&#039;s grids); the last four in Portugal, Europe. The purpose was to test running a common grid distributed among two data centres. Servers are quite different in performance: the European server has much more memory and performance, but the network access is poor. The Arizona regions are on a low-powered server which however boasts excellent connectivity. The experience of going from one to the other is quite intriguing.&lt;br /&gt;
* Open for now as we just test things out; some regions might be closed in the future as this Mini-Grid begins to be internally used for our own projects (mostly as a temporary sandbox before transferring content to LL&#039;s grid).&lt;br /&gt;
* Uptime: ought to be 99.7%, except for upgrades and the odd reconfiguration. Some sims or parcels might be closed as this is being used for some internal testing.&lt;br /&gt;
* No support web site for now (users are created manually)&lt;br /&gt;
* if you wish to add your region to our Mini-Grid for tests, and don&#039;t wish to go through the fuss of creating your set of central servers, you&#039;re welcome to do so at this stage. Just contact us!&lt;br /&gt;
* Available regions as follows:&lt;br /&gt;
** 3650/3650 - Beta Technologies - http://asimov.betatechnologies.info:9000/&lt;br /&gt;
** 3650/3651 - Theatron - http://asimov.betatechnologies.info:9001/&lt;br /&gt;
** 3651/3650 - Terreiro do Paco - http://asimov.betatechnologies.info:9002/ (lots of content here)&lt;br /&gt;
** 3651/3651 - Beta Business Park - http://asimov.betatechnologies.info:9003/&lt;br /&gt;
** 3652/3650 - EggVille - http://bradbury.betatechnologies.info:9000/&lt;br /&gt;
** 3652/3651 - Beta Sandbox - http://bradbury.betatechnologies.info:9001/&lt;br /&gt;
** 7000/7000 - Half Way - http://bradbury.betatechnologies.info:9002/&lt;br /&gt;
** 11000/11000 - Far Away - http://bradbury.betatechnologies.info:9003/&lt;br /&gt;
&lt;br /&gt;
These last two are required because this minigrid is Hypergrid-enabled. So to jump across LL&#039;s grid and any other Hypergrid, due to the weird 4096-jump-limit, you need to jump to Half Way and later to Far Away and back.&lt;br /&gt;
&lt;br /&gt;
* Contact: [[User:Gwyneth Llewelyn|Gwyneth Llewelyn]]&lt;br /&gt;
* E-Mail: [mailto://Gwyneth.Llewelyn@BetaTechnologies.Info Gwyneth Llewelyn]&lt;br /&gt;
&lt;br /&gt;
== eaglefx Binder ==&lt;br /&gt;
&lt;br /&gt;
Sunred Beach Gridnaut&lt;br /&gt;
&lt;br /&gt;
* http://gridnaut.sunredbeach.com:9008&lt;br /&gt;
* 24/7 - it may be unavailable for short periods for updates/maintenance&lt;br /&gt;
* Contact: [[User:eaglefx Binder | eaglefx Binder]]&lt;br /&gt;
* E-Mail: [mailto://eaglefx99@yahoo.com eaglefx Binder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Open_Grid_Public_Beta]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=432033</id>
		<title>User:Infinity Linden/IETF Drafts and Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=432033"/>
		<updated>2009-07-14T20:59:53Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Current OGP Related Drafts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming OGPX Meetings ==&lt;br /&gt;
&lt;br /&gt;
The initial OGPX Birds of a Feather meeting will take place in Stockholm, Sweden on Tuesday, the 28th of July at 3:20PM local time (more information about the IETF 75 schedule at http://lptools1.amsl.com/agenda/75/calendar .) The virtual world counterpart to this meeting will take place at &amp;quot;[http://slurl.com/secondlife/Levenhall/80/239/25/?img=http%3A//secondlife.com/app/image/faa9deeb-6410-1146-e84b-7f7b509be79f/1&amp;amp;title=Infinity%20is%20Full%20of%20Stars Infinity is Full of Stars]&amp;quot; at 6:20AM SLT.&lt;br /&gt;
&lt;br /&gt;
== Current OGP Related Drafts ==&lt;br /&gt;
&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In other words, it describes the protocol that allows a client to connect to a RHTTP compliant server to establish a connection, then allows the server to send a request to the client.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-llsd-00 LLSD Abstract Type System, Draft 00] : LLSD describes an abstract type system and a protocol interaction interface description language. OGP services are defined using LLSD.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-intro-00 OGP:Introduction and Requirements, Draft 00] : The &amp;quot;Introduction and Requirements&amp;quot; draft is an attempt to broadly define the problem domain of interoperable virtual worlds and introduce architectural patterns in its solution.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-ogp-base-00 OGP:Base, Draft 00] : This document describes fundamental aspects of OGP including Capabilities and Event Queues.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-launch-00 OGP : Client Application Launch Message, Draft 00] : This document describes a technique for launching a client application by way of an XML message.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-auth-01 OGP:Service Establishment, Draft 01] : This document describes techniques for establishing a seed cap from a remote OGP service, the first step when interacting with an OGP peer.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-clientcap-00 Client Capabilities for OGPX, Draft 00] : Describes the way a network peer can request a capability on a client with an unroutable IP address.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-layering-00 OGPX layering and architectural patterns, Draft 00] : Architectural layering and patterns for OGPX.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=432023</id>
		<title>User:Infinity Linden/IETF Drafts and Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=432023"/>
		<updated>2009-07-14T20:59:10Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Current OGP Related Drafts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming OGPX Meetings ==&lt;br /&gt;
&lt;br /&gt;
The initial OGPX Birds of a Feather meeting will take place in Stockholm, Sweden on Tuesday, the 28th of July at 3:20PM local time (more information about the IETF 75 schedule at http://lptools1.amsl.com/agenda/75/calendar .) The virtual world counterpart to this meeting will take place at &amp;quot;[http://slurl.com/secondlife/Levenhall/80/239/25/?img=http%3A//secondlife.com/app/image/faa9deeb-6410-1146-e84b-7f7b509be79f/1&amp;amp;title=Infinity%20is%20Full%20of%20Stars Infinity is Full of Stars]&amp;quot; at 6:20AM SLT.&lt;br /&gt;
&lt;br /&gt;
== Current OGP Related Drafts ==&lt;br /&gt;
&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In other words, it describes the protocol that allows a client to connect to a RHTTP compliant server to establish a connection, then allows the server to send a request to the client.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-llsd-00 LLSD Abstract Type System, Draft 00] : LLSD describes an abstract type system and a protocol interaction interface description language. OGP services are defined using LLSD.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-intro-00 OGP:Introduction and Requirements, Draft 00] : The &amp;quot;Introduction and Requirements&amp;quot; draft is an attempt to broadly define the problem domain of interoperable virtual worlds and introduce architectural patterns in its solution.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-ogp-base-00 OGP:Base, Draft 00] : This document describes fundamental aspects of OGP including Capabilities and Event Queues.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-launch-00 Open Grid Protocol : Client Application Launch Message, Draft 00] : This document describes a technique for launching a client application by way of an XML message.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-auth-01 OGP:Service Establishment, Draft 01] : This document describes techniques for establishing a seed cap from a remote OGP service, the first step when interacting with an OGP peer.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-clientcap-00 Client Capabilities for OGPX, Draft 00] : Describes the way a network peer can request a capability on a client with an unroutable IP address.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-layering-00 OGPX layering and architectural patterns, Draft 00] : Architectural layering and patterns for OGPX.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=431942</id>
		<title>User:Infinity Linden/IETF Drafts and Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=431942"/>
		<updated>2009-07-14T17:58:11Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Current OGP Related Drafts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming OGPX Meetings ==&lt;br /&gt;
&lt;br /&gt;
The initial OGPX Birds of a Feather meeting will take place in Stockholm, Sweden on Tuesday, the 28th of July at 3:20PM local time (more information about the IETF 75 schedule at http://lptools1.amsl.com/agenda/75/calendar .) The virtual world counterpart to this meeting will take place at &amp;quot;[http://slurl.com/secondlife/Levenhall/80/239/25/?img=http%3A//secondlife.com/app/image/faa9deeb-6410-1146-e84b-7f7b509be79f/1&amp;amp;title=Infinity%20is%20Full%20of%20Stars Infinity is Full of Stars]&amp;quot; at 6:20AM SLT.&lt;br /&gt;
&lt;br /&gt;
== Current OGP Related Drafts ==&lt;br /&gt;
&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In other words, it describes the protocol that allows a client to connect to a RHTTP compliant server to establish a connection, then allows the server to send a request to the client.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-llsd-00 LLSD Abstract Type System, Draft 00] : LLSD describes an abstract type system and a protocol interaction interface description language. OGP services are defined using LLSD.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-intro-00 OGP:Introduction and Requirements, Draft 00] : The &amp;quot;Introduction and Requirements&amp;quot; draft is an attempt to broadly define the problem domain of interoperable virtual worlds and introduce architectural patterns in its solution.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-ogp-base-00 OGP:Base, Draft 00] : This document describes fundamental aspects of OGP including Capabilities and Event Queues.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-auth-01 OGP:Service Establishment, Draft 01] : This document describes techniques for establishing a seed cap from a remote OGP service, the first step when interacting with an OGP peer.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-clientcap-00 Client Capabilities for OGPX, Draft 00] : Describes the way a network peer can request a capability on a client with an unroutable IP address.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-levine-ogp-layering-00 OGPX layering and architectural patterns, Draft 00] : Architectural layering and patterns for OGPX.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=431892</id>
		<title>User:Infinity Linden/IETF Drafts and Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=431892"/>
		<updated>2009-07-14T17:34:47Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming OGPX Meetings ==&lt;br /&gt;
&lt;br /&gt;
The initial OGPX Birds of a Feather meeting will take place in Stockholm, Sweden on Tuesday, the 28th of July at 3:20PM local time (more information about the IETF 75 schedule at http://lptools1.amsl.com/agenda/75/calendar .) The virtual world counterpart to this meeting will take place at &amp;quot;[http://slurl.com/secondlife/Levenhall/80/239/25/?img=http%3A//secondlife.com/app/image/faa9deeb-6410-1146-e84b-7f7b509be79f/1&amp;amp;title=Infinity%20is%20Full%20of%20Stars Infinity is Full of Stars]&amp;quot; at 6:20AM SLT.&lt;br /&gt;
&lt;br /&gt;
== Current OGP Related Drafts ==&lt;br /&gt;
&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In other words, it describes the protocol that allows a client to connect to a RHTTP compliant server to establish a connection, then allows the server to send a request to the client.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-llsd-00 LLSD Abstract Type System, Draft 00] : LLSD describes an abstract type system and a protocol interaction interface description language. OGP services are defined using LLSD.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-intro-00 OGP:Introduction and Requirements, Draft 00] : The &amp;quot;Introduction and Requirements&amp;quot; draft is an attempt to broadly define the problem domain of interoperable virtual worlds and introduce architectural patterns in its solution.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-ogp-base-00 OGP:Base, Draft 00] : This document describes fundamental aspects of OGP including Capabilities and Event Queues.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-auth OGP:Authentication, Draft 00] : This document describes techniques for user authentication, the first step when interacting with an OGP service.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Client_Side_Capabilities&amp;diff=388713</id>
		<title>User:Infinity Linden/OGP Client Side Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Client_Side_Capabilities&amp;diff=388713"/>
		<updated>2009-06-10T21:59:17Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Capabilities are pre-authorized URLs a network host may give to a trusted peer to access a sensitive resource. The Open Grid Protocol (OGP) makes extensive use of capabilities in preference to authentication token to avoid the [http://en.wikipedia.org/wiki/Confused_deputy_problem Confused Deputy Problem] and to support the decoupling of deployment from design. Information about capabilities in OGP may be found in [http://www.ietf.org/mail-archive/web/ogpx/current/msg00026.html An Inquiry into the Nature and Causes of Web Capabilities] and [http://tools.ietf.org/html/draft-lentczner-ogp-base-00#section-2.3 Section 2.3 of the OGP Foundations draft].&lt;br /&gt;
&lt;br /&gt;
As traditionally defined and deployed, capabilities exist exclusively on &amp;quot;server&amp;quot; hosts (i.e. - a host with a routable IP address that provides a service.) Use cases have emerged demonstrating the utility of &amp;quot;client capabilities&amp;quot; where a capability exists on &amp;quot;client&amp;quot; host that may be behind a NATted firewall (i.e. - it doesn&#039;t have a routable IP address.) This document provides a narrative intended to describe the problem domain and offer some solutions.&lt;br /&gt;
&lt;br /&gt;
==Client Side Capabilities With HTTP==&lt;br /&gt;
&lt;br /&gt;
[[Image:Client side cap 01.jpg|frame|Figure 1 : Client Side Capability with HTTP|left|320px]] Figure 1 shows a very simple solution to the problem of exposing capabilities. It also shows the main use case for capabilities. In this flow, the client application wishes to expose a sensitive resource to the a server with which it has established a trust relationship, named &amp;quot;Server 1&amp;quot; in the illustration. The capability can then be used by Server 1 to access the client application or it can be given to Server 2 (which is what this diagram illustrates.)&lt;br /&gt;
&lt;br /&gt;
So the sequence illustrated here is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: The Client Application (on host client1.example.org) creates a capability to represent Resource 1. It begins accepting TCP connection requests itself (say on port 12001) over which it will speak HTTP. When a peer requests the capability, the client will respond with the resource (let&#039;s say the path component of the capability is &amp;quot;/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855&amp;quot;.) The client gives the server the capability http://client1.example.org/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855 by POSTing or PUTting it to Resource 2 on Server 1. (and yes, this should probably all go over HTTPS, but we&#039;ll talk about that later.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: Server 1 decides it needs to defer access to Server 2, a trusted peer. It provides the client capability to Server 2, likely by POSTing or PUTting it to Resource 3.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: At some point in the future, the process implementing Resource 3 needs to access Resource 1, which it does simply by accessing the cap http://client1.example.org/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855 .&lt;br /&gt;
&lt;br /&gt;
===Problems with Client Side Capabilities With HTTP===&lt;br /&gt;
&lt;br /&gt;
[[Image:Client_side_cap_01_problems.jpg|frame|Figure 2 : Problems with Client Side Capabilities with HTTP|right|320px]] But there are two major deficiencies with this scheme: 1. NATted firewalls make it hard for the client to respond to inbound TCP connection requests and 2. What do you do if the client side capability expires?&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Client_Side_Capabilities&amp;diff=387633</id>
		<title>User:Infinity Linden/OGP Client Side Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Client_Side_Capabilities&amp;diff=387633"/>
		<updated>2009-06-09T22:00:04Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: New page: Capabilities are pre-authorized URLs a network host may give to a trusted peer to access a sensitive resource. The Open Grid Protocol (OGP) makes extensive use of capabilities in preferenc...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Capabilities are pre-authorized URLs a network host may give to a trusted peer to access a sensitive resource. The Open Grid Protocol (OGP) makes extensive use of capabilities in preference to authentication token to avoid the [http://en.wikipedia.org/wiki/Confused_deputy_problem Confused Deputy Problem] and to support the decoupling of deployment from design. Information about capabilities in OGP may be found in [http://www.ietf.org/mail-archive/web/ogpx/current/msg00026.html An Inquiry into the Nature and Causes of Web Capabilities] and [http://tools.ietf.org/html/draft-lentczner-ogp-base-00#section-2.3 Section 2.3 of the OGP Foundations draft].&lt;br /&gt;
&lt;br /&gt;
As traditionally defined and deployed, capabilities exist exclusively on &amp;quot;server&amp;quot; hosts (i.e. - a host with a routable IP address that provides a service.) Use cases have emerged demonstrating the utility of &amp;quot;client capabilities&amp;quot; where a capability exists on &amp;quot;client&amp;quot; host that may be behind a NATted firewall (i.e. - it doesn&#039;t have a routable IP address.) This document provides a narrative intended to describe the problem domain and offer some solutions.&lt;br /&gt;
&lt;br /&gt;
==Client Side Capabilities With HTTP==&lt;br /&gt;
&lt;br /&gt;
[[Image:Client side cap 01.jpg|frame|Figure 1 : Client Side Capability with HTTP|left|320px]] Figure 1 shows a very simple solution to the problem of exposing capabilities. It also shows the main use case for capabilities. In this flow, the client application wishes to expose a sensitive resource to the a server with which it has established a trust relationship, named &amp;quot;Server 1&amp;quot; in the illustration. The capability can then be used by Server 1 to access the client application or it can be given to Server 2 (which is what this diagram illustrates.)&lt;br /&gt;
&lt;br /&gt;
So the sequence illustrated here is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: The Client Application (on host client1.example.org) creates a capability to represent Resource 1. It begins accepting TCP connection requests itself (say on port 12001) over which it will speak HTTP. When a peer requests the capability, the client will respond with the resource (let&#039;s say the path component of the capability is &amp;quot;/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855&amp;quot;.) The client gives the server the capability http://client1.example.org/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855 by POSTing or PUTting it to Resource 2 on Server 1. (and yes, this should probably all go over HTTPS, but we&#039;ll talk about that later.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: Server 1 decides it needs to defer access to Server 2, a trusted peer. It provides the client capability to Server 2, likely by POSTing or PUTting it to Resource 3.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: At some point in the future, the process implementing Resource 3 needs to access Resource 1, which it does simply by accessing the cap http://client1.example.org/c/3FF69C95-CCF3-4A1B-94C4-80202E85C855 .&lt;br /&gt;
&lt;br /&gt;
===Problems with Client Side Capabilities With HTTP===&lt;br /&gt;
&lt;br /&gt;
[[Image:Client_side_cap_01_problems.jpg|frame|Figure 2 : Problems with Client Side Capabilities with HTTP|right|320]] But there are two major deficiencies with this scheme: 1. NATted firewalls make it hard for the client to respond to inbound TCP connection requests and 2. What do you do if the client side capability expires?&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01_problems.jpg&amp;diff=387623</id>
		<title>File:Client side cap 01 problems.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01_problems.jpg&amp;diff=387623"/>
		<updated>2009-06-09T21:58:58Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01.jpg&amp;diff=387603</id>
		<title>File:Client side cap 01.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01.jpg&amp;diff=387603"/>
		<updated>2009-06-09T21:33:03Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: uploaded a new version of &amp;quot;Image:Client side cap 01.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01.jpg&amp;diff=387593</id>
		<title>File:Client side cap 01.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Client_side_cap_01.jpg&amp;diff=387593"/>
		<updated>2009-06-09T21:31:42Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369363</id>
		<title>User:Infinity Linden/OGP Service Establishment Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369363"/>
		<updated>2009-05-22T17:43:04Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OGP uses this pattern when establishing a session with a particular service. In the discussions below, note that the client is the system making the request. This is not always the client application; sometimes it&#039;s an agent domain or region domain process or component.&lt;br /&gt;
&lt;br /&gt;
[[Image:Service_initiation_pattern.jpg|640px|thumb|center|service establishment pattern]]&lt;br /&gt;
&lt;br /&gt;
; Step 1 - the client sends the authenticate message to the service establishment protocol endpoint : We assume the client is in possession of the service establishment protocol endpoint&#039;s URL. How it gets the address of the endpoint is outside the scope of this pattern. The contents of this message will look astonishingly similar to the agent_login message in the OGP : Auth document. In fact, i propose we replace agent_login with authenticate.&lt;br /&gt;
&lt;br /&gt;
; Step 2 - the server validates the credentials in the authentication request : Credentials may be the the user authenticator defined in the OGP : Auth document, or an OAuth token or a client certificate. (or in some cases, it;s going to be null.) The service establishment endpoint should have a policy for which credentials it prefers, which it forbids and which it allows.&lt;br /&gt;
&lt;br /&gt;
; Step 3 - the client optionally verifies the server&#039;s certificate : Many service establishment requests will be made via HTTPS. The client SHOULD verify that it trusts a certificate in the server&#039;s cert chain.&lt;br /&gt;
&lt;br /&gt;
; Step 4 - the client requests a set of capabilities by sending the cap/request message to the seed cap : Hmm... we need to specify how this is done. I don&#039;t see it in the current doc set, and the docs from last summer&#039;s interop fest were less than clear.&lt;br /&gt;
&lt;br /&gt;
; Step 5 - the server responds with a set of capabilities for the client : These are the service capabilities; the client uses these to get a service from the server.&lt;br /&gt;
&lt;br /&gt;
; Step 6 - the client sends a service request to a capability : This is how servers offer services to clients.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369353</id>
		<title>User:Infinity Linden/OGP Service Establishment Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369353"/>
		<updated>2009-05-22T17:42:49Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OGP uses this pattern when establishing a session with a particular service. In the discussions below, note that the client is the system making the request. This is not always the client application; sometimes it&#039;s an agent domain or region domain process or component.&lt;br /&gt;
&lt;br /&gt;
[[Image:Service_initiation_pattern.jpg|640px|thumb|left|service establishment pattern]]&lt;br /&gt;
&lt;br /&gt;
; Step 1 - the client sends the authenticate message to the service establishment protocol endpoint : We assume the client is in possession of the service establishment protocol endpoint&#039;s URL. How it gets the address of the endpoint is outside the scope of this pattern. The contents of this message will look astonishingly similar to the agent_login message in the OGP : Auth document. In fact, i propose we replace agent_login with authenticate.&lt;br /&gt;
&lt;br /&gt;
; Step 2 - the server validates the credentials in the authentication request : Credentials may be the the user authenticator defined in the OGP : Auth document, or an OAuth token or a client certificate. (or in some cases, it;s going to be null.) The service establishment endpoint should have a policy for which credentials it prefers, which it forbids and which it allows.&lt;br /&gt;
&lt;br /&gt;
; Step 3 - the client optionally verifies the server&#039;s certificate : Many service establishment requests will be made via HTTPS. The client SHOULD verify that it trusts a certificate in the server&#039;s cert chain.&lt;br /&gt;
&lt;br /&gt;
; Step 4 - the client requests a set of capabilities by sending the cap/request message to the seed cap : Hmm... we need to specify how this is done. I don&#039;t see it in the current doc set, and the docs from last summer&#039;s interop fest were less than clear.&lt;br /&gt;
&lt;br /&gt;
; Step 5 - the server responds with a set of capabilities for the client : These are the service capabilities; the client uses these to get a service from the server.&lt;br /&gt;
&lt;br /&gt;
; Step 6 - the client sends a service request to a capability : This is how servers offer services to clients.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Service_initiation_pattern.jpg&amp;diff=369343</id>
		<title>File:Service initiation pattern.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Service_initiation_pattern.jpg&amp;diff=369343"/>
		<updated>2009-05-22T17:41:06Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369333</id>
		<title>User:Infinity Linden/OGP Service Establishment Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Service_Establishment_Pattern&amp;diff=369333"/>
		<updated>2009-05-22T17:40:29Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: New page: OGP uses this pattern when establishing a session with a particular service. In the discussions below, note that the client is the system making the request. This is not always the client ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OGP uses this pattern when establishing a session with a particular service. In the discussions below, note that the client is the system making the request. This is not always the client application; sometimes it&#039;s an agent domain or region domain process or component.&lt;br /&gt;
&lt;br /&gt;
; Step 1 - the client sends the authenticate message to the service establishment protocol endpoint : We assume the client is in possession of the service establishment protocol endpoint&#039;s URL. How it gets the address of the endpoint is outside the scope of this pattern. The contents of this message will look astonishingly similar to the agent_login message in the OGP : Auth document. In fact, i propose we replace agent_login with authenticate.&lt;br /&gt;
&lt;br /&gt;
; Step 2 - the server validates the credentials in the authentication request : Credentials may be the the user authenticator defined in the OGP : Auth document, or an OAuth token or a client certificate. (or in some cases, it;s going to be null.) The service establishment endpoint should have a policy for which credentials it prefers, which it forbids and which it allows.&lt;br /&gt;
&lt;br /&gt;
; Step 3 - the client optionally verifies the server&#039;s certificate : Many service establishment requests will be made via HTTPS. The client SHOULD verify that it trusts a certificate in the server&#039;s cert chain.&lt;br /&gt;
&lt;br /&gt;
; Step 4 - the client requests a set of capabilities by sending the cap/request message to the seed cap : Hmm... we need to specify how this is done. I don&#039;t see it in the current doc set, and the docs from last summer&#039;s interop fest were less than clear.&lt;br /&gt;
&lt;br /&gt;
; Step 5 - the server responds with a set of capabilities for the client : These are the service capabilities; the client uses these to get a service from the server.&lt;br /&gt;
&lt;br /&gt;
; Step 6 - the client sends a service request to a capability : This is how servers offer services to clients.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=360612</id>
		<title>User:Infinity Linden/IETF Drafts and Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/IETF_Drafts_and_Meetings&amp;diff=360612"/>
		<updated>2009-05-15T21:21:53Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: New page: == Current OGP Related Drafts ==  ; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current OGP Related Drafts ==&lt;br /&gt;
&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-rhttp-00 Reverse HTTP, Draft 00] : Reverse HTTP describes a mechanism for introducing bidirectional http. In other words, it describes the protocol that allows a client to connect to a RHTTP compliant server to establish a connection, then allows the server to send a request to the client.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-llsd-00 LLSD Abstract Type System, Draft 00] : LLSD describes an abstract type system and a protocol interaction interface description language. OGP services are defined using LLSD.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-intro-00 OGP:Introduction and Requirements, Draft 00] : The &amp;quot;Introduction and Requirements&amp;quot; draft is an attempt to broadly define the problem domain of interoperable virtual worlds and introduce architectural patterns in its solution.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-lentczner-ogp-base-00 OGP:Base, Draft 00] : This document describes fundamental aspects of OGP including Capabilities and Event Queues.&lt;br /&gt;
; [http://tools.ietf.org/html/draft-hamrick-ogp-auth OGP:Authentication, Draft 00] : This document describes techniques for user authentication, the first step when interacting with an OGP service.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Notes_On_LLSD&amp;diff=234882</id>
		<title>User:Infinity Linden/Notes On LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Notes_On_LLSD&amp;diff=234882"/>
		<updated>2009-02-12T03:46:02Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: New page: LLSD is the abstract type system used by Linden Lab and some OpenSimulator components. It is described in varying levels of detail in several places. But the motivation for various design ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LLSD is the abstract type system used by Linden Lab and some OpenSimulator components. It is described in varying levels of detail in several places. But the motivation for various design decisions in LLSD have yet to be documented. This document is an effort to more accurately describe LLSD and why it is the way it is.&lt;br /&gt;
&lt;br /&gt;
==What Is LLSD?==&lt;br /&gt;
&lt;br /&gt;
LLSD is an abstract type system which includes an interface description language and serialization formats.  LLSD is a language-neutral facility for maintaining and transporting dynamic structured data.  It provides dynamic data features for loosely-coupled collections of software components, even in statically-typed languages.  It includes an abstract type system, an interface description language (LLIDL) and three canonical serialization schemes (XML, JSON and Binary). The term &amp;quot;LLSD&amp;quot; is used to refer to the abstract type system, code that implements the mapping and conversions between abstract and concrete types and the it&#039;s serializations. This can lead to confusion, so this document will make an effort to be explicit about which aspect is being discussed.&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;language-neutral abstract type system&amp;quot; means that LLSD is used to define the &amp;quot;type&amp;quot; of objects in an application and protocol data being sent across the wire. When we say &amp;quot;type&amp;quot; we mean that different objects may have semantics. For instance, Integers are data objects that can be added together, subtracted one from another, multiplied or divided; Dates represent moments in time; Booleans represent true and false values.&lt;br /&gt;
&lt;br /&gt;
It is &amp;quot;language-neutral&amp;quot;  and &amp;quot;abstract&amp;quot; in the sense that is intended to be usable by programmers of several different computer programming languages. Another way to say this is that type semantics unique to a programming language are &#039;&#039;not&#039;&#039; replicated in LLSD. For instance, in the C programming language, there is not default date type. Rather, it is sometimes represented as an unsigned 32 bit integer and other times represented as a data structure. When represented as an integer, you can add an integer to a date and get the date of some time in the future. But you can&#039;t do this with the data structure from C&#039;s standard library. Because LLSD is language neutral, it makes no attempt to preserve the semantics of dates stored as a 32 bit unsigned integer representing seconds since 1970. LLSD is used to reason about type semantics of protocol data units in a manner independent of any particular programming language.&lt;br /&gt;
&lt;br /&gt;
Saying that LLSD is &amp;quot;abstract&amp;quot; speaks to the fact that there are no programming languages that directly use LLSD&#039;s type system. It also implies that there&#039;s something out there that&#039;s &amp;quot;concrete.&amp;quot; Implementations of LLSD (some of which are identified below) &amp;quot;concretize&amp;quot; it&#039;s abstract behavior. The Python implementation of LLSD for instance, maps LLSD&#039;s abstract types to types understandable by Python programs. C++ implementations do the same for C++ programs.&lt;br /&gt;
&lt;br /&gt;
Finally... the term &amp;quot;dynamic structured data&amp;quot; implies that LLSD structures can be modified at run-time. Note that there are several languages where this is not the case. For languages like C or C++, the LLSD implementation would need to create the illusion that LLSD data structures are malleable at runtime.&lt;br /&gt;
&lt;br /&gt;
===On Serialization===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where Is LLSD Defined?==&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_04.jpg&amp;diff=187672</id>
		<title>File:Conceptual Overview 04.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_04.jpg&amp;diff=187672"/>
		<updated>2008-12-29T04:22:04Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187662</id>
		<title>User:Infinity Linden/Distributed Object Concepts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187662"/>
		<updated>2008-12-29T03:33:01Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brief discussion of how we (or at least some of us) here at Linden Lab view distributed applications. We spend a lot of our day knee-deep in code and specific networking issues, but I thought it might be good to take a breather, come up for air and talk about concepts. You may disagree with us on a number of points, but we figured it was a good idea to communicate how we see the world of distributed applications.&lt;br /&gt;
&lt;br /&gt;
=Concept 1 : Applications Can Be Represented as Collections of Objects=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_00.jpg|200px|thumb|left|a typical object graph representing the state of an application]] This may sound a bit simple for most people reading this... OO systems are a pervasive part of software development these days. Whether you program in C++, Ruby, JavaScript or even PHP, you&#039;ve probably run into &#039;&#039;objects&#039;&#039; and &#039;&#039;classes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
But we figured it was worth re-iterating. We like objects, especially when they&#039;re coded as... well... objects. It&#039;s important to note that just because you&#039;re using an &#039;&#039;object oriented&#039;&#039; programming language, it&#039;s still possible to write code eschews the objectives of object orientation. Conversely, it&#039;s possible to write code that is OO-ish in non-OO languages, it&#039;s just a bit harder.&lt;br /&gt;
&lt;br /&gt;
What we&#039;re talking about with this concept is that it&#039;s possible to model an application as a collection of cooperating objects. The figure to the left is meant to represent such an application. Rather than representing the application&#039;s state in a global data structure, state is distributed across a collection of smaller objects. Objects are intended to represent a conceptual entity manipulated by the application. Rather than writing routines to manipulate global data structures, we write methods that manipulate the state of an object in response to messages from other objects. Objects maintain references to other objects; the arrows in the figure at the left represent these references. Objects send messages to each other via these references, and it&#039;s these messages that trigger code to be executed to manipulate the state of our object friends. Okay.. so now that i&#039;ve completely bored you with an extremely basic discussion that&#039;s so vague it has about zero utility.. let me conclude with the &amp;quot;important bits.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It&#039;s easy to get lost in the details of XML parsing and the wild flurry of UDP messages the SL client emits, but at the end of the day, there&#039;s this &amp;quot;application&amp;quot; thing that is independent of TCP or UDP or HTTP or whatever. It&#039;s a collection of cooperating objects (the mathematically inclined might call it an &amp;quot;object graph&amp;quot;.) The object graph represents the &amp;quot;application logic&amp;quot; (escapees from the web 2.0 era may also occasionally use the term &amp;quot;business logic.&amp;quot;) It represents the core abstractions of the application, independent of network transport, graphics rendering technology or even functional system architecture. We like OO development environments as they generally support concepts such as [http://en.wikipedia.org/wiki/Abstraction_(computer_science) Abstraction], [http://en.wikipedia.org/wiki/Information_hiding Encapsulation] and [http://en.wikipedia.org/wiki/Decoupling Decoupling] that makes maintenance of an evolving system less painful.&lt;br /&gt;
&lt;br /&gt;
=Concept 2 : Object Graphs Abound=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_01.jpg|200px|thumb|right|a client and a server application being represented as object graphs]] Still with me? Great! I was worried I was boring you.&lt;br /&gt;
&lt;br /&gt;
So the next concept is pretty straight forward as well: you can represent a server application as an object graph as easily as you can represent a client application with an object graph. The figure to the right is supposed to represent this concept.&lt;br /&gt;
&lt;br /&gt;
You could go on and say that this concept does not require client-server communications, and you would be right. It would be possible to replace every instance of &#039;&#039;client&#039;&#039; and &#039;&#039;server&#039;&#039; with the word &#039;&#039;peer&#039;&#039; and you would still have a very workable conceptual framework. We talk about client-server a lot at Linden cause:&lt;br /&gt;
&lt;br /&gt;
# we make extensive use of HTTP in our system which uses the Request-Response pattern, thus implying a client and a server, and&lt;br /&gt;
# people sometimes confuse the term &amp;quot;&#039;&#039;network peer&#039;&#039;&amp;quot; with the term &amp;quot;&#039;&#039;peer to peer&#039;&#039;&amp;quot; and freak out, thinking we&#039;re supporting illegal file-sharing or opening an interface that allows &amp;quot;bad guys&amp;quot; to illicitly copy digital assets in contravention of asset permission meta-data. For the record, we go to great lengths to prevent such illicit asset copying.&lt;br /&gt;
&lt;br /&gt;
=Concept 3 : Distributed Applications May Be Modeled as a Collection of Object Graphs=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_02.jpg|200px|thumb|left|a distributed application&#039;s object graph spanning machines]]And here&#039;s where it gets interesting. In the figure to the left we see four different machines each with it&#039;s own object graph. But if you look close you&#039;ll see there are references across machine boundaries. This is what makes this application a &amp;quot;&#039;&#039;distributed application&#039;&#039;&amp;quot; that uses a &amp;quot;&#039;&#039;distributed object graph&#039;&#039;&amp;quot;. It has nothing to do with implementation details of which programming language was used to code it or what networking protocols are used to communicate between machines, but that the design treats remote and local objects the same.&lt;br /&gt;
&lt;br /&gt;
C++ programmers should be aware that references in C++ objects are generally a pointer to a location in memory. They should probably also know that it&#039;s impossible for one CPU to directly access memory connected to another CPU (okay... well.. it&#039;s impossible in a non-multi-processor system that isn&#039;t using [http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access NUMA] clustering technologies like [http://en.wikipedia.org/wiki/Scalable_Coherent_Interconnect SCI])&lt;br /&gt;
&lt;br /&gt;
So assuming we all don&#039;t have a [http://en.wikipedia.org/wiki/Convex_Computer Convex Exemplar] or a [http://en.wikipedia.org/wiki/SGI_Altix SGI Altix] system on our desktops, we&#039;re going to have an application that uses external references that know how to [http://en.wikipedia.org/wiki/Marshalling_(computer_science) Marshall] an object request and send it to its intended target on the network.&lt;br /&gt;
&lt;br /&gt;
For what it&#039;s worth, if you hear discussion of [http://en.wikipedia.org/wiki/CORBA CORBA], [http://en.wikipedia.org/wiki/IBM_System_Object_Model DSOM], or [http://en.wikipedia.org/wiki/Distributed_Component_Object_Model DCOM] in [[Architecture_Working_Group]] meetings, it&#039;s usually related to this concept. CORBA, et al. were technologies intended to make referencing remote objects &amp;quot;easy&amp;quot; for software developers. It is a matter of fierce debate as to whether or not they achieved this objective. Ultimately, most software engineers responded negatively to the perceived complexity of such systems and either rolled their own distributed transaction system or hand-coded methods implementing remote message passing over HTTP(S). Developers familiar with Linden&#039;s SecondLife Viewer will see evidence of both approaches.&lt;br /&gt;
&lt;br /&gt;
But... I digress... The concept I&#039;m trying to communicate here is that from the high level design perspective, we can view a distributed application like Second Life as a big distributed object graph where some objects live on one machine and other objects live on another. Messages that need to pass from one machine to another use some form of request marshaling. The OGP specification attempts to define remote objects in terms of [http://en.wikipedia.org/wiki/REST REST-like resources] explicitly to enable this type of abstraction.&lt;br /&gt;
&lt;br /&gt;
=Concept 4 : Method Invocation on Remote Objects Should be Independent of Transport or Serialization Format=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_03.jpg|200px|thumb|right|a distributed object graph where message invocation semantics are independent of transport]]Okay... open the image to the right in another window... you&#039;ll want to look back and forth often.&lt;br /&gt;
&lt;br /&gt;
One of the things fans of [http://en.wikipedia.org/wiki/Object_Oriented_Analysis Object Oriented Analysis] yammer on about incessantly is this whole concept of clearly separating &amp;quot;[http://en.wikipedia.org/wiki/Business_logic business logic]&amp;quot; from &amp;quot;[http://en.wikipedia.org/wiki/Presentation_logic presentation logic].&amp;quot; If you&#039;re like me, you would rather spend eternity eating double-edged razor blades than have another person explain why [http://en.wikipedia.org/wiki/Separation_of_concerns Separation of Concerns] is a good thing. So, i&#039;ll not mention the motivation behind such architectural issues, only note that a lot of people (some of whom are considerably smarter than you or I) think it&#039;s a good idea.&lt;br /&gt;
&lt;br /&gt;
Remember we talked about &amp;quot;business logic&amp;quot; before? Up at the top of the diagram we have our &amp;quot;business objects.&amp;quot; They represent the state of the important concepts like where your avatar is, what she&#039;s dressed in and how many times she&#039;s been shot with the Bazooka 2000 in the last 15 seconds. They do not represent the state of a TCP/IP connection to remote machine or the number of seconds since the last packet was received.&lt;br /&gt;
&lt;br /&gt;
The arrows between the white circles in the &amp;quot;Client Object Graph&amp;quot; represent references to objects. Links between these objects and the colored circles below represent references to &amp;quot;remote&amp;quot; objects. &amp;quot;Remote objects&amp;quot; live on other machines, and the mythical &amp;quot;remote object manager&amp;quot; is responsible for making the business logic objects think they&#039;re local by receiving message sends, marshaling the request, sending it over the wire and optionally receiving a response.&lt;br /&gt;
&lt;br /&gt;
Below the proxy objects you should note multiple message serialization and transport methods. The fact that there are several of them implies there are several ways to communicate a business object state change to remote peers. Not shown in this diagram is the remote object manager on the peer system which un-marshals the message on the remote system.&lt;br /&gt;
&lt;br /&gt;
So... the important take-aways here are &amp;quot;it&#039;s okay to have multiple transports&amp;quot; and &amp;quot;honestly, don&#039;t hand code message parsers, please&amp;quot; and &amp;quot;your business logic shouldn&#039;t care one whit which transport you use.&amp;quot; (In the real world, there&#039;ll probably be a little bit of hinting by the business object like.. &amp;quot;oh... for the next several messages it would be really nice if they went over RTP, kthxbai,&amp;quot; but we&#039;ll get to that again later.)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_03.jpg&amp;diff=187633</id>
		<title>File:Conceptual Overview 03.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_03.jpg&amp;diff=187633"/>
		<updated>2008-12-29T02:05:03Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187623</id>
		<title>User:Infinity Linden/Distributed Object Concepts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187623"/>
		<updated>2008-12-29T01:33:31Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a brief discussion of how we (or at least some of us) here at Linden Lab view distributed applications. We spend a lot of our day knee-deep in code and specific networking issues, but I thought it might be good to take a breather, come up for air and talk about concepts. You may disagree with us on a number of points, but we figured it was a good idea to communicate how we see the world of distributed applications.&lt;br /&gt;
&lt;br /&gt;
=Concept 1 : Applications Can Be Represented as Collections of Objects=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_00.jpg|200px|thumb|left|a typical object graph representing the state of an application]] This may sound a bit simple for most people reading this... OO systems are a pervasive part of software development these days. Whether you program in C++, Ruby, JavaScript or even PHP, you&#039;ve probably run into &#039;&#039;objects&#039;&#039; and &#039;&#039;classes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
But we figured it was worth re-iterating. We like objects, especially when they&#039;re coded as... well... objects. It&#039;s important to note that just because you&#039;re using an &#039;&#039;object oriented&#039;&#039; programming language, it&#039;s still possible to write code eschews the objectives of object orientation. Conversely, it&#039;s possible to write code that is OO-ish in non-OO languages, it&#039;s just a bit harder.&lt;br /&gt;
&lt;br /&gt;
What we&#039;re talking about with this concept is that it&#039;s possible to model an application as a collection of cooperating objects. The figure to the left is meant to represent such an application. Rather than representing the application&#039;s state in a global data structure, state is distributed across a collection of smaller objects. Objects are intended to represent a conceptual entity manipulated by the application. Rather than writing routines to manipulate global data structures, we write methods that manipulate the state of an object in response to messages from other objects. Objects maintain references to other objects; the arrows in the figure at the left represent these references. Objects send messages to each other via these references, and it&#039;s these messages that trigger code to be executed to manipulate the state of our object friends. Okay.. so now that i&#039;ve completely bored you with an extremely basic discussion that&#039;s so vague it has about zero utility.. let me conclude with the &amp;quot;important bits.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It&#039;s easy to get lost in the details of XML parsing and the wild flurry of UDP messages the SL client emits, but at the end of the day, there&#039;s this &amp;quot;application&amp;quot; thing that is independent of TCP or UDP or HTTP or whatever. It&#039;s a collection of cooperating objects (the mathematically inclined might call it an &amp;quot;object graph&amp;quot;.) The object graph represents the &amp;quot;application logic&amp;quot; (escapees from the web 2.0 era may also occasionally use the term &amp;quot;business logic.&amp;quot;) It represents the core abstractions of the application, independent of network transport, graphics rendering technology or even functional system architecture. We like OO development environments as they generally support concepts such as [http://en.wikipedia.org/wiki/Abstraction_(computer_science) Abstraction], [http://en.wikipedia.org/wiki/Information_hiding Encapsulation] and [http://en.wikipedia.org/wiki/Decoupling Decoupling] that makes maintenance of an evolving system less painful.&lt;br /&gt;
&lt;br /&gt;
=Concept 2 : Object Graphs Abound=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_01.jpg|200px|thumb|right|a client and a server application being represented as object graphs]] Still with me? Great! I was worried I was boring you.&lt;br /&gt;
&lt;br /&gt;
So the next concept is pretty straight forward as well: you can represent a server application as an object graph as easily as you can represent a client application with an object graph. The figure to the right is supposed to represent this concept.&lt;br /&gt;
&lt;br /&gt;
You could go on and say that this concept does not require client-server communications, and you would be right. It would be possible to replace every instance of &#039;&#039;client&#039;&#039; and &#039;&#039;server&#039;&#039; with the word &#039;&#039;peer&#039;&#039; and you would still have a very workable conceptual framework. We talk about client-server a lot at Linden cause:&lt;br /&gt;
&lt;br /&gt;
# we make extensive use of HTTP in our system which uses the Request-Response pattern, thus implying a client and a server, and&lt;br /&gt;
# people sometimes confuse the term &amp;quot;&#039;&#039;network peer&#039;&#039;&amp;quot; with the term &amp;quot;&#039;&#039;peer to peer&#039;&#039;&amp;quot; and freak out, thinking we&#039;re supporting illegal file-sharing or opening an interface that allows &amp;quot;bad guys&amp;quot; to illicitly copy digital assets in contravention of asset permission meta-data. For the record, we go to great lengths to prevent such illicit asset copying.&lt;br /&gt;
&lt;br /&gt;
=Concept 3 : Distributed Applications May Be Modeled as a Collection of Object Graphs=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_02.jpg|200px|thumb|left|a distributed application&#039;s object graph spanning machines]]And here&#039;s where it gets interesting. In the figure to the left we see four different machines each with it&#039;s own object graph. But if you look close you&#039;ll see there are references across machine boundaries. This is what makes this application a &amp;quot;&#039;&#039;distributed application&#039;&#039;&amp;quot; that uses a &amp;quot;&#039;&#039;distributed object graph&#039;&#039;&amp;quot;. It has nothing to do with implementation details of which programming language was used to code it or what networking protocols are used to communicate between machines, but that the design treats remote and local objects the same.&lt;br /&gt;
&lt;br /&gt;
C++ programmers should be aware that references in C++ objects are generally a pointer to a location in memory. They should probably also know that it&#039;s impossible for one CPU to directly access memory connected to another CPU (okay... well.. it&#039;s impossible in a non-multi-processor system that isn&#039;t using [http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access NUMA] clustering technologies like [http://en.wikipedia.org/wiki/Scalable_Coherent_Interconnect SCI])&lt;br /&gt;
&lt;br /&gt;
So assuming we all don&#039;t have a [http://en.wikipedia.org/wiki/Convex_Computer Convex Exemplar] or a [http://en.wikipedia.org/wiki/SGI_Altix SGI Altix] system on our desktops, we&#039;re going to have an application that uses external references that know how to [http://en.wikipedia.org/wiki/Marshalling_(computer_science) Marshall] an object request and send it to its intended target on the network.&lt;br /&gt;
&lt;br /&gt;
For what it&#039;s worth, if you hear discussion of [http://en.wikipedia.org/wiki/CORBA CORBA], [http://en.wikipedia.org/wiki/IBM_System_Object_Model DSOM], or [http://en.wikipedia.org/wiki/Distributed_Component_Object_Model DCOM] in [[Architecture_Working_Group]] meetings, it&#039;s usually related to this concept. CORBA, et al. were technologies intended to make referencing remote objects &amp;quot;easy&amp;quot; for software developers. It is a matter of fierce debate as to whether or not they achieved this objective. Ultimately, most software engineers responded poorly to the perceived complexity of such systems and either rolled their own distributed transaction system or hand-coded methods implementing remote message passing over HTTP(S). Developers familiar with Linden&#039;s SecondLife Viewer will see evidence of both approaches.&lt;br /&gt;
&lt;br /&gt;
But... I digress... The concept I&#039;m trying to communicate here is that from the high level design perspective, we can view a distributed application like Second Life as a big distributed object graph where some objects live on one machine and other objects live on another. Messages that need to pass from one machine to another use some form of request marshaling. The OGP specification attempts to define remote objects in terms of [http://en.wikipedia.org/wiki/REST REST-like resources] explicitly to enable this type of abstraction.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_02.jpg&amp;diff=187613</id>
		<title>File:Conceptual Overview 02.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_02.jpg&amp;diff=187613"/>
		<updated>2008-12-29T00:51:47Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187603</id>
		<title>User:Infinity Linden/Distributed Object Concepts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187603"/>
		<updated>2008-12-29T00:42:46Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a brief discussion of how we (or at least some of us) here at Linden Lab view distributed applications. We spend a lot of our day knee-deep in code and specific networking issues, but I thought it might be good to take a breather, come up for air and talk about concepts. You may disagree with us on a number of points, but we figured it was a good idea to communicate how we see the world of distributed applications.&lt;br /&gt;
&lt;br /&gt;
=Concept 1 : Applications Can Be Represented as Collections of Objects=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_00.jpg|200px|thumb|left|a typical object graph representing the state of an application]] This may sound a bit simple for most people reading this... OO systems are a pervasive part of software development these days. Whether you program in C++, Ruby, JavaScript or even PHP, you&#039;ve probably run into &#039;&#039;objects&#039;&#039; and &#039;&#039;classes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
But we figured it was worth re-iterating. We like objects, especially when they&#039;re coded as... well... objects. It&#039;s important to note that just because you&#039;re using an &#039;&#039;object oriented&#039;&#039; programming language, it&#039;s still possible to write code eschews the objectives of object orientation. Conversely, it&#039;s possible to write code that is OO-ish in non-OO languages, it&#039;s just a bit harder.&lt;br /&gt;
&lt;br /&gt;
What we&#039;re talking about with this concept is that it&#039;s possible to model an application as a collection of cooperating objects. The figure to the left is meant to represent such an application. Rather than representing the application&#039;s state in a global data structure, state is distributed across a collection of smaller objects. Objects are intended to represent a conceptual entity manipulated by the application. Rather than writing routines to manipulate global data structures, we write methods that manipulate the state of an object in response to messages from other objects. Objects maintain references to other objects; the arrows in the figure at the left represent these references. Objects send messages to each other via these references, and it&#039;s these messages that trigger code to be executed to manipulate the state of our object friends. Okay.. so now that i&#039;ve completely bored you with an extremely basic discussion that&#039;s so vague it has about zero utility.. let me conclude with the &amp;quot;important bits.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It&#039;s easy to get lost in the details of XML parsing and the wild flurry of UDP messages the SL client emits, but at the end of the day, there&#039;s this &amp;quot;application&amp;quot; thing that is independent of TCP or UDP or HTTP or whatever. It&#039;s a collection of cooperating objects (the mathematically inclined might call it an &amp;quot;object graph&amp;quot;.) The object graph represents the &amp;quot;application logic&amp;quot; (escapees from the web 2.0 era may also occasionally use the term &amp;quot;business logic.&amp;quot;) It represents the core abstractions of the application, independent of network transport, graphics rendering technology or even functional system architecture. We like OO development environments as they generally support concepts such as [http://en.wikipedia.org/wiki/Abstraction_(computer_science) Abstraction], [http://en.wikipedia.org/wiki/Information_hiding Encapsulation] and [http://en.wikipedia.org/wiki/Decoupling Decoupling] that makes maintenance of an evolving system less painful.&lt;br /&gt;
&lt;br /&gt;
=Concept 2 : Object Graphs Abound=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_01.jpg|200px|thumb|right|a client and a server application being represented as object graphs]] Still with me? Great! I was worried I was boring you.&lt;br /&gt;
&lt;br /&gt;
So the next concept is pretty straight forward as well: you can represent a server application as an object graph as easily as you can represent a client application with an object graph. The figure to the right is supposed to represent this concept.&lt;br /&gt;
&lt;br /&gt;
You could go on and say that this concept does not require client-server communications, and you would be right. It would be possible to replace every instance of &#039;&#039;client&#039;&#039; and &#039;&#039;server&#039;&#039; with the word &#039;&#039;peer&#039;&#039; and you would still have a very workable conceptual framework. We talk about client-server a lot at Linden cause:&lt;br /&gt;
&lt;br /&gt;
# we make extensive use of HTTP in our system which uses the Request-Response pattern, thus implying a client and a server, and&lt;br /&gt;
# people sometimes confuse the term &amp;quot;&#039;&#039;network peer&#039;&#039;&amp;quot; with the term &amp;quot;&#039;&#039;peer to peer&#039;&#039;&amp;quot; and freak out, thinking we&#039;re supporting illegal file-sharing or opening an interface that allows &amp;quot;bad guys&amp;quot; to illicitly copy digital assets in contravention of asset permission meta-data. For the record, we go to great lengths to prevent such illicit asset copying.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_01.jpg&amp;diff=187583</id>
		<title>File:Conceptual Overview 01.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_01.jpg&amp;diff=187583"/>
		<updated>2008-12-29T00:24:50Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187563</id>
		<title>User:Infinity Linden/Distributed Object Concepts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/Distributed_Object_Concepts&amp;diff=187563"/>
		<updated>2008-12-29T00:18:49Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: New page: =Introduction=  This is a brief discussion of how we (or at least some of us) here at Linden Lab view distributed applications. We spend a lot of our day knee-deep in code and specific net...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
This is a brief discussion of how we (or at least some of us) here at Linden Lab view distributed applications. We spend a lot of our day knee-deep in code and specific networking issues, but I thought it might be good to take a breather, come up for air and talk about concepts. You may disagree with us on a number of points, but we figured it was a good idea to communicate how we see the world of distributed applications.&lt;br /&gt;
&lt;br /&gt;
=Concept 1 : Applications Can Be Represented as Collections of Objects=&lt;br /&gt;
&lt;br /&gt;
[[Image:Conceptual_Overview_00.jpg|200px|thumb|left|a typical object graph representing the state of an application]] This may sound a bit simple for most people reading this... OO systems are a pervasive part of software development these days. Whether you program in C++, Ruby, JavaScript or even PHP, you&#039;ve probably run into &#039;&#039;objects&#039;&#039; and &#039;&#039;classes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
But we figured it was worth re-iterating. We like objects, especially when they&#039;re coded as... well... objects. It&#039;s important to note that just because you&#039;re using an &#039;&#039;object oriented&#039;&#039; programming language, it&#039;s still possible to write code eschews the objectives of object orientation. Conversely, it&#039;s possible to write code that is OO-ish in non-OO languages, it&#039;s just a bit harder.&lt;br /&gt;
&lt;br /&gt;
What we&#039;re talking about with this concept is that it&#039;s possible to model an application as a collection of cooperating objects. The figure to the left is meant to represent such an application. Rather than representing the application&#039;s state in a global data structure, state is distributed across a collection of smaller objects. Objects are intended to represent a conceptual entity manipulated by the application. Rather than writing routines to manipulate global data structures, we write methods that manipulate the state of an object in response to messages from other objects. Objects maintain references to other objects; the arrows in the figure at the left represent these references. Objects send messages to each other via these references, and it&#039;s these messages that trigger code to be executed to manipulate the state of our object friends. Okay.. so now that i&#039;ve completely bored you with an extremely basic discussion that&#039;s so vague it has about zero utility.. let me conclude with the &amp;quot;important bits.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It&#039;s easy to get lost in the details of XML parsing and the wild flurry of UDP messages the SL client emits, but at the end of the day, there&#039;s this &amp;quot;application&amp;quot; thing that is independent of TCP or UDP or HTTP or whatever. It&#039;s a collection of cooperating objects (the mathematically inclined might call it an &amp;quot;object graph&amp;quot;.) The object graph represents the &amp;quot;application logic&amp;quot; (escapees from the web 2.0 era may also occasionally use the term &amp;quot;business logic.&amp;quot;) It represents the core abstractions of the application, independent of network transport, graphics rendering technology or even functional system architecture. We like OO development environments as they generally support concepts such as [http://en.wikipedia.org/wiki/Abstraction_(computer_science) Abstraction], [http://en.wikipedia.org/wiki/Information_hiding Encapsulation] and [http://en.wikipedia.org/wiki/Decoupling Decoupling] that makes maintenance of an evolving system less painful.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_00.jpg&amp;diff=187543</id>
		<title>File:Conceptual Overview 00.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Conceptual_Overview_00.jpg&amp;diff=187543"/>
		<updated>2008-12-29T00:14:54Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Sidewinder_platform_001.jpg&amp;diff=172723</id>
		<title>File:Sidewinder platform 001.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Sidewinder_platform_001.jpg&amp;diff=172723"/>
		<updated>2008-12-11T20:24:57Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: gone, but not forgotten, Sidewinder Linden is remembered through the &amp;quot;Sidewinder T. Linden Memorial Diving Platform.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gone, but not forgotten, Sidewinder Linden is remembered through the &amp;quot;Sidewinder T. Linden Memorial Diving Platform.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Slhand.jpg&amp;diff=112503</id>
		<title>File:Slhand.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Slhand.jpg&amp;diff=112503"/>
		<updated>2008-10-24T17:48:22Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Trust_Phase_0&amp;diff=106912</id>
		<title>User:Infinity Linden/OGP Trust Phase 0</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Trust_Phase_0&amp;diff=106912"/>
		<updated>2008-10-21T21:24:50Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: Replacing page with &amp;#039;this proposal has been deprecated&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this proposal has been deprecated&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Trust_Phase_0&amp;diff=106902</id>
		<title>User:Infinity Linden/OGP Trust Phase 0</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Infinity_Linden/OGP_Trust_Phase_0&amp;diff=106902"/>
		<updated>2008-10-21T21:24:21Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;deprecated&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This page describes &amp;quot;near term&amp;quot; trust mechanisms for OGP protocol participants. The objective is not to define the ultimate trust or security system, or even to try to enumerate all trust issues; for that, please visit the [[User:Infinity_Linden/OGP_Trust_Model|OGP Trust Model Page]]. This page is intended to describe &amp;quot;near term&amp;quot; trust issues and how participants in the OGP Beta program may use features that currently exist to establish &amp;quot;trust&amp;quot; between region and agent domains. So.. the [[User:Infinity_Linden/OGP_Trust_Model|OGP Trust Model Page]] is where you will find information regarding Rights Expression Languages, revised permissions for in-world objects, distributed third-party authentication, integrating OpenID or SAML, etc. This page is where you&#039;ll find discussions regarding how client applications, agent domains and region domains establish a base level of trust through the use of X.509 certificates used in conjunction with TLS / HTTPS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;todo:&#039;&#039;&#039; continue fleshing out this section. maybe add links to &amp;quot;howtos&amp;quot; when we&#039;ve reached agreement between LL, OpenSim, PyOGP&lt;br /&gt;
&lt;br /&gt;
=How We Authenticate Protocol Actors=&lt;br /&gt;
[[Image:Sl2008 simplified trust 01.jpg|thumb|300px|simplified trust model]]&lt;br /&gt;
&lt;br /&gt;
The diagram to the right shows how different protocol actors in OGP establish trust. The diagram shows the three major classes of protocol actors: client applications, agent domains and region domains. The objective of this section is to describe how actors establish trust in remote protocol participants. The concept of &amp;quot;trust&amp;quot; is intimately related to the authentication technology used by client and server software, but can be seen to be more than simple authentication. As we&#039;ll see in the section describing the proposed registration authority, authentication &amp;quot;reflects&amp;quot; trust, it does not create it.&lt;br /&gt;
&lt;br /&gt;
==Authenticating Client Application Users to Agent Domain Servers==&lt;br /&gt;
&lt;br /&gt;
Before an end user may enter the virtual world, they must authenticate themselves. This is just as true for automated systems as it is for human users. Three authentication techniques are described in the [[OGP_Authentication_Draft_3|authentication section of the OGP specification]]. When this document was written, only the hashed password authenticator was deployed on the OGP beta grid. It is also thought that for the &amp;quot;near term&amp;quot;, Challenge Response and PKCS#5 PBKDF authenticators will not be deployed. It is important to note that the Second Life main grid and canonical Second Life viewer do not implement OGP at this time. Users will need to download the Open Grid Viewer from the [[Open_Grid_Public_Beta/Open_Grid_Beta_Viewers|Open Grid Beta Viewers page]].&lt;br /&gt;
&lt;br /&gt;
Authentication begins with the user providing their password to the client application. The client application in turn constructs an agent_login message that it sends to the agent domain&#039;s LoginURI. The LoginURI for Linden Lab&#039;s OGP Beta is predefined as the default in the Open Grid Viewer. Users wishing to use a different Agent Domain may use the &amp;lt;code&amp;gt;--loginuri&amp;lt;/code&amp;gt; option on the command line when invoking the viewer.&lt;br /&gt;
&lt;br /&gt;
The details of how an avatar or account name and password are established between the end user and the agent domain is beyond the scope of this document. Linden Lab provides a web resource for account creation end users may access via a traditional web browser. Before Linden Lab will create an account, the end user must agree to a Terms of Service document and view any outstanding Critical Messages. Account Creation interactions take place over a HTTPS TLS-Encrypted transport. This is to ensure that eavesdroppers have a limited opportunity to intercept the new user&#039;s password.&lt;br /&gt;
&lt;br /&gt;
Other Agent Domain operators are free to implement any policy they wish with respect to the security of agent credentials. But it should be noted that the use of HTTPS to transport agent_login requests is STRONGLY RECOMMENDED. Services deployed by Linden Lab will refuse to to agent_login requests that do not use HTTPS. As described later in this document, Linden Lab region domains may reject protocol messages from agent domains that do not require the use HTTPS for username/password establishment or for agent_login requests.&lt;br /&gt;
&lt;br /&gt;
It is also important to note that the Open Grid Beta Viewer from Linden Lab will refuse to attempt to connect to non-https LoginURI. Agent domain operators who do not wish to use HTTPS based LoginURIs will need to distribute their own viewer application.&lt;br /&gt;
&lt;br /&gt;
So... to recap. End users authenticate themselves to agent domains by using a username / password pair. How an agent domain establishes the trustworthiness of the end user is beyond the scope of this document. HTTPS is your friend. Linden Lab&#039;s servers may snub you if you don&#039;t like HTTPS.&lt;br /&gt;
&lt;br /&gt;
==Authenticating Client Applications to Region Domain Servers==&lt;br /&gt;
&lt;br /&gt;
Region domain servers SHOULD NOT make &amp;quot;sensitive&amp;quot; services available to unauthenticated clients.&lt;br /&gt;
&lt;br /&gt;
Client Applications use the possession of a capability by the client as proof of authorization to perform a particular operation.&lt;br /&gt;
&lt;br /&gt;
Ergo, if you operate a Region Domain, do not issue sensitive caps to a client directly. Give the sensitive cap to an agent domain and let it give the cap to the client.&lt;br /&gt;
&lt;br /&gt;
==Authenticating Agent Domain Servers to Client Applications==&lt;br /&gt;
&lt;br /&gt;
Hosts implementing the agent domain portion of OGP SHOULD make services available via HTTPS / TLS. As mentioned above, Linden Lab servers will reject some protocol interactions if they do not take place over HTTPS (or some other secure transport).&lt;br /&gt;
&lt;br /&gt;
Before trusting an Agent Domain server, Client Applications SHOULD check the following to ensure that the server being communicated with is actually the Agent Domain server that it claims to be:&lt;br /&gt;
&lt;br /&gt;
* if the server&#039;s server certificate uses an IP address as part of the X.509 Subject Name, is this the same IP address the peer is using? (i.e. - does the IP address of the server match the IP address in the X.509 Subject Name?)&lt;br /&gt;
* if the server&#039;s server certificate uses a DNS Fully Qualified Domain Name (FQDN) as part of the X.509 Subject Name, does the IP address of the peer match the A record retrieved when doing a reverse DNS lookup?&lt;br /&gt;
* is the server&#039;s server certificate valid? (i.e. - is the current date between the validFrom and validTo dates in the server&#039;s certificate and every certificate in the chain up to a trusted certificate.&lt;br /&gt;
* is the server&#039;s server certificate explicitly trusted for authentication? (i.e. - is the server&#039;s certificate or a certificate in the server&#039;s certificate&#039;s chain explicitly trusted for authentication?)&lt;br /&gt;
&lt;br /&gt;
It should be noted that these are all common options with most (if not all) TLS implementations, including OpenSSL.&lt;br /&gt;
&lt;br /&gt;
It also implies that:&lt;br /&gt;
&lt;br /&gt;
* the Client Application SHOULD  maintain a list of &amp;quot;authentication trust-points&amp;quot; or certificates identifying organizations explicitly trusted by the Client Application for the purpose of authentication.&lt;br /&gt;
* &amp;lt;strike&amp;gt;the Client Application SHOULD NOT accept certificates that contain a wild-card in the Subject Name field of the certificate&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authenticating Agent Domain Servers and Region Domain Servers to Each Other==&lt;br /&gt;
&lt;br /&gt;
Sensitive communications between agent domain hosts and region domain hosts MUST be over a secure transport like TLS / HTTPS.&lt;br /&gt;
&lt;br /&gt;
When an agent domain host initiates communication with a region domain host, it must verify the identity of the region domain via the region domain host&#039;s server certificate. The process listed in the Client Application to Agent Domain section above should be followed for agent to region communications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;To authenticate the agent domain to the region, the agent domain should provide its client certificate to the region domain host. The region domain may then authenticate the agent domain using the same process as above.&lt;br /&gt;
&lt;br /&gt;
When a region domain host initiates communication with an agent domain host, the process is reversed. The Agent Domain&#039;s server certificate is validated first (by the region domain host), then the region domain&#039;s client certificate is validated (by the agent domain host).&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Agent Domains should access sensitive resources ONLY via capabilities issued by the region domain.&lt;br /&gt;
&lt;br /&gt;
Clever readers will note that this implies:&lt;br /&gt;
&lt;br /&gt;
* the ability for both the agent domain and the region domain to generate server certificates for their systems.&lt;br /&gt;
* (and) the ability for both agent and region domains to manage a list of &amp;quot;authentication trust points&amp;quot; in a certificate chain.&lt;br /&gt;
&lt;br /&gt;
Fortunately, this is a relatively well known process (though, administratively, it can be &amp;quot;less than easy&amp;quot; with existing open source tools.)&lt;br /&gt;
&lt;br /&gt;
=Specific Issues With Linden Lab Software=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;note:&#039;&#039;&#039; this section introduces ideas for discussion. no decision has yet been made to implement this proposal. no decision to do so is likely without community discussion.&lt;br /&gt;
&lt;br /&gt;
==Linden Lab Self Signed Certificate For Agent and Region Domain Authentication==&lt;br /&gt;
&lt;br /&gt;
Blergh. Okay, you caught us. We&#039;re using self-signed certificates.&lt;br /&gt;
&lt;br /&gt;
In an environment where we were the only ones offering region hosting, agent hosting and making viewer software, this was not an unreasonable choice. But now we have to open this process up to allow interoperability with trusted agent and region domains.&lt;br /&gt;
&lt;br /&gt;
In terms of the OGP Beta, this is likely not too onerous an administrative task. [&#039;&#039;&#039;note:&#039;&#039;&#039; the person who just wrote that is not, in fact, the person who would be fulfilling service requests, so your mileage may vary.] In the OGP Beta, we are not (yet) attempting to transer potentially sensitive assets and there are a relatively small number of region and agent domain operators.&lt;br /&gt;
&lt;br /&gt;
So... the proposal is we (the community in general) move beyond Self-Signed Certs except for testing purposes.&lt;br /&gt;
&lt;br /&gt;
The simplest way to meet the &amp;quot;move beyond self-signed certificates&amp;quot; requirement is for Linden Lab to operate a registration authority for the purpose of beginning the certification process for external agent and region domain operators.&lt;br /&gt;
&lt;br /&gt;
Or we could use some set of common well-known CAs, like Verisign or somebody.  Although they like charge money.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;todo:&#039;&#039;&#039; fill out this section a touch more, maybe describing the process of registering a peer agent or region domain.&lt;br /&gt;
&lt;br /&gt;
=Specific Issues With OpenSim Software=&lt;br /&gt;
&#039;&#039;&#039;note:&#039;&#039;&#039; Terevus, Zha, et al. do you want to add a few notes here?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teravus:&#039;&#039;&#039; One thing to note here, however..  is you&#039;ll need to add your &#039;&#039;&#039;CA&#039;&#039;&#039; to the client&#039;s &#039;&#039;&#039;app_settings/CA.pem&#039;&#039;&#039; until the Linden/Verisign/Other CA process is worked out sufficiently.   The directions for setting it up are in *svn*/share/junkCA&lt;br /&gt;
&lt;br /&gt;
Certain things don&#039;t work in SSL mode now.  For example: teleporting from Vaak to a SSL enabled OpenSimulator region fails because Vaak rejects self signed certificates and upon reading the response, it terminates the connection.  (So in OpenSimulator, you&#039;ll see Vaak invoke the cap, but it&#039;ll still fail because vaak doesn&#039;t read the response)&lt;br /&gt;
&lt;br /&gt;
==Self Signed Certificates for Agent and Region Domain Authentication==&lt;br /&gt;
==Proposed Registration Authority for OpenSim Operators==&lt;br /&gt;
&lt;br /&gt;
=Specific Issues With PyOGP Software=&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;Tao... Sai... I know we discussed this a bit... but i&#039;m blanking on what we said... so feel free to add stuff here, otherwise i&#039;m going to add my best guess regarding how we want to handle it&#039;&#039;&lt;br /&gt;
=Discussions=&lt;br /&gt;
*Gridnauts IRC&lt;br /&gt;
**Sepember [[User:Infinity_Linden/Gridnauts_2080913|13]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AW Groupies]]&lt;br /&gt;
[[Category:Grid Interoperability]]&lt;br /&gt;
[[Category:AW Groupies User Pages]]&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94609</id>
		<title>Talk:Open Grid Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94609"/>
		<updated>2008-10-06T21:06:59Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Capability Lifetime */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Choosing an Agent ==&lt;br /&gt;
&lt;br /&gt;
=== Round 1 :  Choosing an Agent ===&lt;br /&gt;
&lt;br /&gt;
 The credential presented by the viewer may be valid for more than one agent.&lt;br /&gt;
 If so, then the viewer must specify the agent it  wishes to control. If none is specified, &lt;br /&gt;
 and there are multiple possible agents, then log in will fail, and contain a list of possible agents. &lt;br /&gt;
 The viewer can then choose and reattempt login. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That looks like a security hole, because it means that a person who gets login credentials now knows something they did not prove they knew before, namely the agent list. It should not include a list of agents, instead, an identifiable agent should be considered part of the credentials necessary for login.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:36, 22 August 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Round 2 : Agent Uniqueness is Checked After Account Authentication ===&lt;br /&gt;
&lt;br /&gt;
Hey Lillie... sorry for taking so long to get back to this one...&lt;br /&gt;
&lt;br /&gt;
If you look real close, you can see that the specification expects a compliant implementation to check for the multiple agent condition only after the account has been authenticated.&lt;br /&gt;
&lt;br /&gt;
So... if you&#039;re a bad guy, you still have to know the account shared secret in order to get a list of agents on an account.&lt;br /&gt;
&lt;br /&gt;
One &amp;quot;issue&amp;quot; with the specification is it&#039;s descriptive, not proscriptive. We don&#039;t define this as a requirement in the spec, because the spec defines stuff that flows over the wire. There are still interoperability profiles that will need to be hashed out, and defining that account authentication MUST occur before agent uniqueness is checked is one part of such an interoperability profile.&lt;br /&gt;
&lt;br /&gt;
[[User:Infinity Linden|Infinity Linden]] 13:42, 6 October 2008(PDT)&lt;br /&gt;
&lt;br /&gt;
== Capability Lifetime ==&lt;br /&gt;
&lt;br /&gt;
=== Round 1 : Capability Lifetime ==&lt;br /&gt;
&lt;br /&gt;
Since cryptologically secure means the amount of time since creation to forge, break, or steal. Shouldn&#039;t all capabilities expire? Shouldn&#039;t there be a way of indicating when a capability is set to expire, so that clients of that capability can renew the lease on it? Also having capabilities with known numbers of uses is very valuable, so that clients could hand them out, confident that if they were overly broadly disseminated, the risk is limited to so many invocations, even if that number is a larger number.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:43, 22 August 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Round 2 : Leasing and Seed Caps ===&lt;br /&gt;
&lt;br /&gt;
Hey Lillie... One thing to consider here is we don&#039;t want to introduce a TOCTOU (Time of Check, Time of Use) type vulnerability. Capabilities have a lifetime to ameliorate the TOCTOU ramifications implicit in capabilities. In other words, we don&#039;t (or at least shouldn&#039;t) do leasing on the capability&#039;s name, but on the permission it represents. In other words, if you have a capability named &#039;XXXXXXXX-XXXX-5XXX-XXXX-XXXXXXXXXXXX&#039; which represents the right to rez your avatar in a given region, you don&#039;t want to renew that capability. Instead, what you _should_ do is request a new cap named &#039;YYYYYYYY-YYYY-5YYY-YYYY-YYYYYYYYYYYY&#039; which represents the same thing, then expire the original cap. And... you should request this new capability using whatever authentication scheme you used to get the original cap. This way, if an untrusted third party happens to acquire the first cap, they won&#039;t have the ability to impersonate the agent indefinitely.&lt;br /&gt;
&lt;br /&gt;
Now that i&#039;ve said that... lemme run off to our simulator source and see if that&#039;s what we&#039;re actually doing.&lt;br /&gt;
&lt;br /&gt;
With respect to caps with a wide number of uses... are you talking about seed caps? The expectation is that the seed cap is used just to get caps for other operations. We&#039;re expecting the viewer to get the list of subordinate caps once, then use those caps directly. In theory... after authenticating yourself to the agent domain and receiving the seed cap (which gives access to a list of subordinate caps), we could (and even should) expire the seed. That way, if a bad guy were able to get that seed, it would be expired by the time they could access it.&lt;br /&gt;
&lt;br /&gt;
Again, we have the issue with the spec being descriptive rather than proscriptive. I&#039;ll see if I can add some text to upcoming drafts to either make it clear that this could / should be done, or write an interoperability profile that makes it more clear.&lt;br /&gt;
&lt;br /&gt;
cheers, [[User:Infinity Linden|Infinity Linden]] 14:06, 6 October 2008 (PDT)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94605</id>
		<title>Talk:Open Grid Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94605"/>
		<updated>2008-10-06T20:44:44Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Choosing an Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Choosing an Agent ==&lt;br /&gt;
&lt;br /&gt;
=== Round 1 :  Choosing an Agent ===&lt;br /&gt;
&lt;br /&gt;
 The credential presented by the viewer may be valid for more than one agent.&lt;br /&gt;
 If so, then the viewer must specify the agent it  wishes to control. If none is specified, &lt;br /&gt;
 and there are multiple possible agents, then log in will fail, and contain a list of possible agents. &lt;br /&gt;
 The viewer can then choose and reattempt login. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That looks like a security hole, because it means that a person who gets login credentials now knows something they did not prove they knew before, namely the agent list. It should not include a list of agents, instead, an identifiable agent should be considered part of the credentials necessary for login.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:36, 22 August 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Round 2 : Agent Uniqueness is Checked After Account Authentication ===&lt;br /&gt;
&lt;br /&gt;
Hey Lillie... sorry for taking so long to get back to this one...&lt;br /&gt;
&lt;br /&gt;
If you look real close, you can see that the specification expects a compliant implementation to check for the multiple agent condition only after the account has been authenticated.&lt;br /&gt;
&lt;br /&gt;
So... if you&#039;re a bad guy, you still have to know the account shared secret in order to get a list of agents on an account.&lt;br /&gt;
&lt;br /&gt;
One &amp;quot;issue&amp;quot; with the specification is it&#039;s descriptive, not proscriptive. We don&#039;t define this as a requirement in the spec, because the spec defines stuff that flows over the wire. There are still interoperability profiles that will need to be hashed out, and defining that account authentication MUST occur before agent uniqueness is checked is one part of such an interoperability profile.&lt;br /&gt;
&lt;br /&gt;
[[User:Infinity Linden|Infinity Linden]] 13:42, 6 October 2008(PDT)&lt;br /&gt;
&lt;br /&gt;
== Capability Lifetime ==&lt;br /&gt;
&lt;br /&gt;
Since cryptologically secure means the amount of time since creation to forge, break, or steal. Shouldn&#039;t all capabilities expire? Shouldn&#039;t there be a way of indicating when a capability is set to expire, so that clients of that capability can renew the lease on it? Also having capabilities with known numbers of uses is very valuable, so that clients could hand them out, confident that if they were overly broadly disseminated, the risk is limited to so many invocations, even if that number is a larger number.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:43, 22 August 2008 (PDT)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94603</id>
		<title>Talk:Open Grid Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Open_Grid_Protocol&amp;diff=94603"/>
		<updated>2008-10-06T20:43:11Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: /* Choosing an Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Choosing an Agent ==&lt;br /&gt;
&lt;br /&gt;
=== Problem Statement ===&lt;br /&gt;
 Choosing an Agent&lt;br /&gt;
&lt;br /&gt;
 The credential presented by the viewer may be valid for more than one agent.&lt;br /&gt;
 If so, then the viewer must specify the agent it  wishes to control. If none is specified, &lt;br /&gt;
 and there are multiple possible agents, then log in will fail, and contain a list of possible agents. &lt;br /&gt;
 The viewer can then choose and reattempt login. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That looks like a security hole, because it means that a person who gets login credentials now knows something they did not prove they knew before, namely the agent list. It should not include a list of agents, instead, an identifiable agent should be considered part of the credentials necessary for login.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:36, 22 August 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Solution Statement ===&lt;br /&gt;
&lt;br /&gt;
Hey Lillie... sorry for taking so long to get back to this one...&lt;br /&gt;
&lt;br /&gt;
If you look real close, you can see that the specification expects a compliant implementation to check for the multiple agent condition only after the account has been authenticated.&lt;br /&gt;
&lt;br /&gt;
So... if you&#039;re a bad guy, you still have to know the account shared secret in order to get a list of agents on an account.&lt;br /&gt;
&lt;br /&gt;
One &amp;quot;issue&amp;quot; with the specification is it&#039;s descriptive, not proscriptive. We don&#039;t define this as a requirement in the spec, because the spec defines stuff that flows over the wire. There are still interoperability profiles that will need to be hashed out, and defining that account authentication MUST occur before agent uniqueness is checked is one part of such an interoperability profile.&lt;br /&gt;
&lt;br /&gt;
[[User:Infinity Linden|Infinity Linden]] 13:42, 6 October 2008(PDT)&lt;br /&gt;
&lt;br /&gt;
== Capability Lifetime ==&lt;br /&gt;
&lt;br /&gt;
Since cryptologically secure means the amount of time since creation to forge, break, or steal. Shouldn&#039;t all capabilities expire? Shouldn&#039;t there be a way of indicating when a capability is set to expire, so that clients of that capability can renew the lease on it? Also having capabilities with known numbers of uses is very valuable, so that clients could hand them out, confident that if they were overly broadly disseminated, the risk is limited to so many invocations, even if that number is a larger number.&lt;br /&gt;
&lt;br /&gt;
[[User:Lillie Yifu|Lillie Yifu]] 09:43, 22 August 2008 (PDT)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94261</id>
		<title>LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94261"/>
		<updated>2008-10-02T18:40:50Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: Undo revision 94153 by Infinity Linden (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The LLSD flexible data system =&lt;br /&gt;
&lt;br /&gt;
The following text is from the comments in the source of the file:&lt;br /&gt;
linden\indra\common\llsd.cpp &lt;br /&gt;
&lt;br /&gt;
LLSD stands [http://blog.secondlife.com/2006/07/19/web-services-serialization-format/#comment-101218][according to Andrew Linden] for &#039;&#039;&#039;Linden Lab Structured Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
LLSD provides a flexible data system similar to the data facilities of dynamic languages like Perl and Python.  It is created to support exchange of structured data between loosly coupled systems.  (Here, &amp;quot;loosly coupled&amp;quot; means not compiled together into the same module.)&lt;br /&gt;
	&lt;br /&gt;
Data in such exchanges must be highly tolerant of changes on either side such as:&lt;br /&gt;
- recompilation&lt;br /&gt;
- implementation in a different langauge&lt;br /&gt;
- addition of extra parameters&lt;br /&gt;
- execution of older versions (with fewer parameters)&lt;br /&gt;
&lt;br /&gt;
To this aim, the C++ API of LLSD strives to be very easy to use, and to default to &amp;quot;the right thing&amp;quot; whereever possible.  It is extremely tolerant of errors and unexpected situations.&lt;br /&gt;
	&lt;br /&gt;
The fundamental class is LLSD.  LLSD is a value holding object.  It holds one value that is either undefined, one of the scalar types, or a map or an array.  LLSD objects have value semantics (copying them copies the value, though it can be considered efficient, due to sharing.), and mutable.&lt;br /&gt;
&lt;br /&gt;
Undefined is the singular value given to LLSD objects that are not initialized with any data.&lt;br /&gt;
	&lt;br /&gt;
The scalar data types are:&lt;br /&gt;
* Boolean	- true or false&lt;br /&gt;
* Integer	- a 32 bit signed integer&lt;br /&gt;
* Real		- a 64 bit IEEE 754 floating point value&lt;br /&gt;
* UUID		- a 128 bit unique value&lt;br /&gt;
* String	- a sequence of zero or more Unicode chracters&lt;br /&gt;
* Date		- an absolute point in time, UTC, with resolution to the second&lt;br /&gt;
* URI		- a String that is a URI&lt;br /&gt;
* Binary	- a sequence of zero or more octets (unsigned bytes)&lt;br /&gt;
	&lt;br /&gt;
A map is a dictionary mapping String keys to LLSD values.  The keys are unique within a map, and have only one value (though that value could be an LLSD array).&lt;br /&gt;
	&lt;br /&gt;
An array is a sequence of zero or more LLSD values.&lt;br /&gt;
&lt;br /&gt;
== Scalar Accessors ==&lt;br /&gt;
&lt;br /&gt;
Function: Fetch a scalar value, converting if needed and possible.&lt;br /&gt;
&lt;br /&gt;
Conversion among the basic types, Boolean, Integer, Real and String, is fully defined.  Each type can be converted to another with a reasonable interpretation.  These conversions can be used as a convenience even when you know the data is in one format, but you want it in another.  Of course, many of these conversions lose information.&lt;br /&gt;
&lt;br /&gt;
Note: These conversions are not the same as Perl&#039;s.  In particular, when converting a String to a Boolean, only the empty string converts to false.  Converting the String &amp;quot;0&amp;quot; to Boolean results in true.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from UUID, Date, and URI is only defined to and from String.  Conversion is defined to be information preserving for valid values of those types.  These conversions can be used when one needs to convert data to or from another system that cannot handle these types natively, but can handle strings.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from Binary isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
Conversion of the Undefined value to any scalar type results in a reasonable null or zero value for the type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatic Cast Protection ==&lt;br /&gt;
&lt;br /&gt;
These are not implemented on purpose.  Without them, C++ can perform some conversions that are clearly not what the programmer intended.&lt;br /&gt;
	&lt;br /&gt;
If you get a linker error about these being missing, you have made mistake in your code.  DO NOT IMPLEMENT THESE FUNCTIONS as a fix.&lt;br /&gt;
		&lt;br /&gt;
All of thse problems stem from trying to support char* in LLSD or in std::string.  There are too many automatic casts that will lead to using an arbitrary pointer or scalar type to std::string.&lt;br /&gt;
&lt;br /&gt;
== Attributes and Data ==&lt;br /&gt;
Attributes are only used for encoding parser and formatting instructions. The data in the elements is always data.&lt;br /&gt;
&lt;br /&gt;
== Root Element ==&lt;br /&gt;
The root element is llsd. The root must have only one child element which can be any container or atomic type.&lt;br /&gt;
&lt;br /&gt;
== Atomic Types ==&lt;br /&gt;
Each atomic type represents one value with type information. An atomic does not have a name, but may have attributes to specify format or processing considerations for the parser. &lt;br /&gt;
Consumers of atomics are encouraged to massage the data into the preferred native representation, but further serialization should honor the original type information if possible.&lt;br /&gt;
&lt;br /&gt;
=== undefined ===&lt;br /&gt;
The undefined type is a placeholder to indicate something is there, but it has no value, and cannot be converted to any other atomic type. Though limited in this way, an undefined is still considered a first-class atomic, and is expected to behave like any other atomic structured data type at runtime.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;undef /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== boolean ===&lt;br /&gt;
A true or false value.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||unity||&lt;br /&gt;
|-&lt;br /&gt;
|integer||true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|real||true =&amp;gt; 1.0, false =&amp;gt; 0.0||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||&#039;true&#039;, &#039;false&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|binary||one byte us-ascii where true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- true --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;true&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- false --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;false&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== integer ===&lt;br /&gt;
A signed integer value with a representation of 32 bits.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||unity||&lt;br /&gt;
|-&lt;br /&gt;
|real||closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;289343&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;-3&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer /&amp;gt; &amp;lt;!-- zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== real ===&lt;br /&gt;
A 64 bit double as defined by IEEE.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||exactly 0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||rounded to closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|real||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;-0.28334&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;2983287453.3848387&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real /&amp;gt; &amp;lt;!-- exactly zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uuid ===&lt;br /&gt;
A 128 bit unsigned integer.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||null uuid =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||unity||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard 8-4-4-4-12 serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||16 byte raw representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uuid&amp;gt;d7f4aeca-88f1-42a1-b385-b9db18abb255&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&amp;lt;uuid /&amp;gt; &amp;lt;!-- null uuid &#039;00000000-0000-0000-0000-000000000000&#039; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== string ===&lt;br /&gt;
A simple string of any character data which is intended to be human comprehensible.&lt;br /&gt;
&lt;br /&gt;
Strings in the system that hold text a user might see or enter (chat, IM, notecards, AV names, region names,... basically almost everything!) should move to using a consistent set of acceptable characters. This set is:&lt;br /&gt;
&lt;br /&gt;
* Unicode code points U+20 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF&lt;br /&gt;
* U+9 (tab, &#039;\t&#039;)&lt;br /&gt;
* U+A (newline or line feed, &#039;\n&#039;)&lt;br /&gt;
* U+D (carriage return, &#039;\r&#039;)&lt;br /&gt;
&lt;br /&gt;
Strings may be sequences of zero or more of these characters. Strings *may* be normalized by mapping line ending sequences to U+A. Do not rely on differences in strings that normalize to the same string.&lt;br /&gt;
&lt;br /&gt;
These choices of valid strings are chosen from Unicode 4.0 which defines the following valid code points:&lt;br /&gt;
* Unicode code points U+0 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF (the UTF-16 surrogate pair range)&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF (some historical screw up with Arabic)&lt;br /&gt;
&lt;br /&gt;
The choice for special characters &amp;lt; U+20 is because XML defines acceptable text as all valid Unicode code points &amp;gt;= U+20, and U+9, U+A and U+D. The normalization is because XML defines that all line ending sequences are normalized to U+A.&lt;br /&gt;
&lt;br /&gt;
See: [[Unicode In 5 Minutes]] for a brief introduction to Unicode.&lt;br /&gt;
&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||A simple conversion of the initial characters to an integer||&lt;br /&gt;
|-&lt;br /&gt;
|real||A simple conversion of the initial characters to a real number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||A valid 8-4-4-4-12 is converted to a uuid, all other values =&amp;gt; null uuid||&lt;br /&gt;
|-&lt;br /&gt;
|string||unity||&lt;br /&gt;
|-&lt;br /&gt;
|binary||raw representation of the characters||&lt;br /&gt;
|-&lt;br /&gt;
|date||An interpretation of the string as a date||&lt;br /&gt;
|-&lt;br /&gt;
|uri||An interpretation of the string as a link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;The quick brown fox jumped over the lazy dog.&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;540943c1-7142-4fdd-996f-fc90ed5dd3fa&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string /&amp;gt; &amp;lt;!-- empty string --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== binary data ===&lt;br /&gt;
A chunk of binary data.&lt;br /&gt;
The serialization format is allowed to specify an encoding. Parsers must support base64 encoding. Parsers may support base16 and base85.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
||integer||len &amp;lt; 4 =&amp;gt; 0, otherwise first four bytes are interpreted as a network byte order integer||&lt;br /&gt;
|-&lt;br /&gt;
||real||len &amp;lt; 8 =&amp;gt; 0, otherwise first eight bytes are interpreted as a network byte order double||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||len &amp;lt; 16 =&amp;gt; null uuid, otherwise first sixteen bytes are interpreted as the raw binary uuid||&lt;br /&gt;
|-&lt;br /&gt;
||string||the raw binary data interpreted as utf-8 character data||&lt;br /&gt;
|-&lt;br /&gt;
||binary||unity||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||the raw binary data interpreted as a utf-8 serialized link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;cmFuZG9t&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data --&amp;gt;&lt;br /&gt;
&amp;lt;binary&amp;gt;dGhlIHF1aWNrIGJyb3duIGZveA==&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data is default --&amp;gt;&lt;br /&gt;
&amp;lt;binary /&amp;gt; &amp;lt;!-- empty binary blob --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== date ===&lt;br /&gt;
A specific point in time. Intervals or relative dates are not supported. The serialization and parser only understand ISO-8601 numeric encoding in UTC. The time may be omitted which will be interpreted as midnight at the start of the day. &lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|integer||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|real||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|date||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;date&amp;gt;2006-02-01T14:29:53.43Z&amp;lt;/date&amp;gt;&lt;br /&gt;
&amp;lt;date /&amp;gt; &amp;lt;!-- epoch --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uri ===&lt;br /&gt;
A link to an external resource. The data is expected to conform to [http://www.ietf.org/rfc/rfc2396.txt rfc 2396] for interpretation, meaning, serialization, and deserialization.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
||binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||unity||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uri&amp;gt;http://sim956.agni.lindenlab.com:12035/runtime/agents&amp;lt;/uri&amp;gt;&lt;br /&gt;
&amp;lt;uri /&amp;gt; &amp;lt;!-- an empty link --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Containers ==&lt;br /&gt;
Containers is a special data type which can contain any other data type including other containers.&lt;br /&gt;
&lt;br /&gt;
=== map ===&lt;br /&gt;
A map of key and value pairs where key ordering is unspecified and keys are unique. The key is always interpreted as a character string and any character string is acceptable. If there are any elements in the map, it is serialized as a key followed by an atomic or container value. For every key, there must be one value.&lt;br /&gt;
Well formed and valid serialized maps may contain more non-unique keys. When a deserialized, the implementation should choose one of the the value objects, but that choice is not specified.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;foo&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;bar&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;agent info&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;uuid&amp;gt;93c73b16-cd86-434d-8b4a-76e12eee950a&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;name&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;testtest tester&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array ===&lt;br /&gt;
An ordered collection of data members. Any member can be any atomic or container type.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;array&amp;gt;&lt;br /&gt;
 &amp;lt;real&amp;gt;7343.0194&amp;lt;/real&amp;gt;&lt;br /&gt;
 &amp;lt;array&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;offset&amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;integer&amp;gt;9847&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;da boom&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XML Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When possible, prefer using us-ascii or or UTF-8 xml encoding.&lt;br /&gt;
&lt;br /&gt;
XML is the &amp;quot;standard&amp;quot; serialization format, being future-proof and readable by a wide variety of tools. The XML serialization should be preferred unless profiling reveals that the [[#Binary_Serialization | binary serialization]] provides an essential performance benefit.  All the serialization examples in the above sections are of the XML serialization.&lt;br /&gt;
&lt;br /&gt;
== DTD ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;!DOCTYPE llsd [&lt;br /&gt;
&amp;lt;!ELEMENT llsd (DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DATA (ATOMIC|map|array)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ATOMIC (undef|boolean|integer|real|uuid|string|date|uri|binary)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT KEYDATA (key,DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT key (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT map (KEYDATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT array (DATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT undef (EMPTY)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT boolean (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT integer (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT real (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uuid (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT string (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT date (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uri (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT binary (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST string xml:space (default|preserve) &#039;preserve&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST binary encoding (base64|base16|base85) &#039;base64&#039;&amp;gt;&lt;br /&gt;
]&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example XML Output ==&lt;br /&gt;
This is a sample from a recently running sim (indention for readability):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;$ curl http://localhost:12035/runtime/statistics&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;region_id&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;uuid&amp;gt;67153d5b-3659-afb4-8510-adda2c034649&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;scale&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;one minute&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;simulator statistics&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;time dilation&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.9878624&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38898&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pysics fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38906&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent updates per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;nan&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;lsl instructions per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;total task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active script count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;main agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;child agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;inbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.228283&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;outbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.277508&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending downloads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending uploads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.0001096525&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;frame ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.7757886&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;net ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.3152919&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim other ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1826937&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim physics ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.04323055&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01599029&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;image ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01865955&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;script ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1338836&amp;lt;/real&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Binary Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We also have support for binary serialization and deserialization in c++ and python. The binary format is useful when dealing where optimal parse time is necessary. Binary LLSD is the binary llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/binary?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &#039;1&#039;&lt;br /&gt;
|-&lt;br /&gt;
| false || &#039;0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; + htonl(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; + htond(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; + uuid || uuid is 16 bytes&lt;br /&gt;
|-&lt;br /&gt;
| binary || &#039;b&#039; + htonl(binary.size()) + binary&lt;br /&gt;
|-&lt;br /&gt;
| string || &#039;s&#039; + htonl(string.size()) + string || notation serialization is considered valid&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&#039; + htonl(uri.size()) + uri&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&#039; + htond(seconds_since_epoch)&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; + htonl(array.length()) + (child0, child1, ...) + &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; + htonl(map.length()) + ((key0,value0), (key1, value1), ...)+ &#039;}&#039; || order is not always preserved.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;size()&amp;lt;/b&amp;gt; is a byte count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;length()&amp;lt;/b&amp;gt; is a child count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htonl()&amp;lt;/b&amp;gt; is a function to generate a 4 byte network byte order integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htond()&amp;lt;/b&amp;gt; is a function to generate an 8 byte network byte order double. htond is not a standard system call, but you can find a c implementation in &amp;lt;code&amp;gt;indra/llcommon/llsdserialize.cpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Notation Serialization =&lt;br /&gt;
We also have support for a serialization format meant for human readability. Parsing and formatting are currently only available in c++. Notation LLSD is the notation llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/notation?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &amp;lt;nowiki&amp;gt;&#039;1&#039; |  &#039;t&#039; | &#039;T&#039; | &#039;true&#039; | &#039;TRUE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| false || &amp;lt;nowiki&amp;gt;&#039;0&#039; |  &#039;f&#039; | &#039;F&#039; | &#039;false&#039; | &#039;FALSE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; str(uuid)&lt;br /&gt;
|-&lt;br /&gt;
| binary || &amp;lt;nowiki&amp;gt;&#039;b(&#039; str(size) &#039;)&amp;quot;&#039;  raw_data &#039;&amp;quot;&#039; | &#039;b&#039; base &#039;&amp;quot;&#039; encoded_data &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt;  || Base 16 and 64 encodings are supported.&lt;br /&gt;
|-&lt;br /&gt;
| string || &amp;lt;nowiki&amp;gt;&amp;quot; escaped_string &amp;quot; | &#039; escaped_string &#039; | &#039;s(&#039; str(size) &#039;)&amp;quot;&#039; raw_string &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt; || When using single quotes, double quotes do not need escaping and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&amp;quot;&#039; escaped_uri &#039;&amp;quot;&#039; || See [http://www.faqs.org/rfcs/rfc1738.html rfc 1738] for encoding rules.&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&amp;quot;&#039; YYYY-MM-DD &#039;T&#039; HH:MM:SS [.FF] &#039;Z&amp;quot;&#039; || Fractional seconds are optional&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; object0 &#039;,&#039; object1 &#039;,&#039; ... &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; string0:object0 &#039;,&#039; string1:object1 &#039;,&#039; ... &#039;}&#039; || order is not always preserved. The string is any supported string serialization format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== String Escaping ==&lt;br /&gt;
Strings which contain non-printable characters delimited with quotes or double quotes require escaping. If a single quote delimited string contains single quotes, those must be escaped. If a double quote delimited string contains double quotes, the double quotes must be escaped.&lt;br /&gt;
&lt;br /&gt;
To escape the delimiter character, prefix a backslash. Backslashes must always be escaped with another backslash.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;And then he said, \&amp;quot;I have nothing more to say on the subject.\&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &#039;Look in &amp;quot;C:\\linden\\&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
The most generic escaping is to specify a hex value of the byte after a literal backslash and character &#039;x&#039;. This can be used for any character and is required for all non-printable characters which do not have an abbreviation. For example:&lt;br /&gt;
&lt;br /&gt;
  \x0C&lt;br /&gt;
&lt;br /&gt;
Serialized strings should only contain UTF-8 characters, so non-printable characters other than tab, newline, and carriage return should be avoided. However, common non-printable characters have short-hand abbreviations.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Notation abbreviations&lt;br /&gt;
! character !! value !! serialization&lt;br /&gt;
|-&lt;br /&gt;
| alert/bell ||  0x7 || \a&lt;br /&gt;
|-&lt;br /&gt;
| backspace || 0x8 || \b&lt;br /&gt;
|-&lt;br /&gt;
| form feed || 0xc || \f&lt;br /&gt;
|-&lt;br /&gt;
| newline || 0xa || \n&lt;br /&gt;
|-&lt;br /&gt;
| carriage return || 0xd || \r&lt;br /&gt;
|-&lt;br /&gt;
| horizontal tab || 0x9 || \t&lt;br /&gt;
|-&lt;br /&gt;
| vertical tab || 0xb || \v&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example Notation Output ==&lt;br /&gt;
This is an excerpt from an agent request to enter a region serialized as notation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&#039;destination&#039;:&#039;http://secondlife.com&#039;}, &lt;br /&gt;
  {&#039;version&#039;:i1}, &lt;br /&gt;
  {&lt;br /&gt;
    &#039;agent_id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730, &lt;br /&gt;
    &#039;session_id&#039;:u2c585cec-038c-40b0-b42e-a25ebab4d132, &lt;br /&gt;
    &#039;circuit_code&#039;:i1075, &lt;br /&gt;
    &#039;first_name&#039;:&#039;Phoenix&#039;, &lt;br /&gt;
    &#039;last_name&#039;:&#039;Linden&#039;,&lt;br /&gt;
    &#039;position&#039;:[r70.9247,r254.378,r38.7304], &lt;br /&gt;
    &#039;look_at&#039;:[r-0.043753,r-0.999042,r0], &lt;br /&gt;
    &#039;granters&#039;:[ua2e76fcd-9360-4f6d-a924-000000000003],&lt;br /&gt;
    &#039;attachment_data&#039;:&lt;br /&gt;
    [&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i2,&lt;br /&gt;
        &#039;item_id&#039;:ud6852c11-a74e-309a-0462-50533f1ef9b3,&lt;br /&gt;
        &#039;asset_id&#039;:uc69b29b1-8944-58ae-a7c5-2ca7b23e22fb&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i10, &lt;br /&gt;
        &#039;item_id&#039;:uff852c22-a74e-309a-0462-50533f1ef900,&lt;br /&gt;
        &#039;asset_id&#039;:u5868dd20-c25a-47bd-8b4c-dedc99ef9479&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &#039;creation-date&#039;:d&amp;quot;2007-03-15T18:30:18Z&amp;quot;, &lt;br /&gt;
    &#039;creator-id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730&lt;br /&gt;
  },&lt;br /&gt;
  s(10)&amp;quot;0123456789&amp;quot;,&lt;br /&gt;
  &amp;quot;Where&#039;s the beef?&amp;quot;,&lt;br /&gt;
  &#039;Over here.&#039;,  &lt;br /&gt;
  b(160)&amp;quot;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;,&lt;br /&gt;
  b64&amp;quot;AABAAAAAAAAAAAIAAAA//wAAP/8AAADgAAAA5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AABkAAAAZAAAAAAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAQAAAAAAAA&lt;br /&gt;
AAUAAAAFAAAAABAAAAAAAAAAPgAAAAQAAAAFAGNbXgAAAABgSGVsbG8sIEF2YXRhciEAZgAAAABc&lt;br /&gt;
XgAAAAhwEQjRABeVAAAABQBjW14AAAAAYFRvdWNoZWQuAGYAAAAAXF4AAAAIcBEI0QAXAZUAAEAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&amp;quot; &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Guidelines =&lt;br /&gt;
&lt;br /&gt;
=== Questions &amp;amp; Things To Do ===&lt;br /&gt;
&lt;br /&gt;
Would Binary be more convenient as usigned char* buffer semantics?&lt;br /&gt;
&lt;br /&gt;
Should Binary be convertable to/from String, and if so how?&lt;br /&gt;
* as UTF8 encoded strings (making not like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
* as Base64 or Base96 encoded (making like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
&lt;br /&gt;
Conversions to std::string and LLUUID do not result in easy assignment to std::string, LLString or LLUUID due to non-unique conversion paths.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94153</id>
		<title>LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94153"/>
		<updated>2008-10-01T23:09:19Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: Undo revision 90766 by SignpostMarv Martin (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The LLSD flexible data system =&lt;br /&gt;
&lt;br /&gt;
The following text is from the comments in the source of the file:&lt;br /&gt;
linden\indra\common\llsd.cpp &lt;br /&gt;
&lt;br /&gt;
LLSD stands [http://blog.secondlife.com/2006/07/19/web-services-serialization-format/#comment-101218][according to Andrew Linden] for &#039;&#039;&#039;Linden Lab Structured Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
LLSD provides a flexible data system similar to the data facilities of dynamic languages like Perl and Python.  It is created to support exchange of structured data between loosly coupled systems.  (Here, &amp;quot;loosly coupled&amp;quot; means not compiled together into the same module.)&lt;br /&gt;
	&lt;br /&gt;
Data in such exchanges must be highly tolerant of changes on either side such as:&lt;br /&gt;
- recompilation&lt;br /&gt;
- implementation in a different langauge&lt;br /&gt;
- addition of extra parameters&lt;br /&gt;
- execution of older versions (with fewer parameters)&lt;br /&gt;
&lt;br /&gt;
To this aim, the C++ API of LLSD strives to be very easy to use, and to default to &amp;quot;the right thing&amp;quot; whereever possible.  It is extremely tolerant of errors and unexpected situations.&lt;br /&gt;
	&lt;br /&gt;
The fundamental class is LLSD.  LLSD is a value holding object.  It holds one value that is either undefined, one of the scalar types, or a map or an array.  LLSD objects have value semantics (copying them copies the value, though it can be considered efficient, due to sharing.), and mutable.&lt;br /&gt;
&lt;br /&gt;
Undefined is the singular value given to LLSD objects that are not initialized with any data.&lt;br /&gt;
	&lt;br /&gt;
The scalar data types are:&lt;br /&gt;
* Boolean	- true or false&lt;br /&gt;
* Integer	- a 32 bit signed integer&lt;br /&gt;
* Real		- a 64 bit IEEE 754 floating point value&lt;br /&gt;
* UUID		- a 128 bit unique value&lt;br /&gt;
* String	- a sequence of zero or more Unicode chracters&lt;br /&gt;
* Date		- an absolute point in time, UTC, with resolution to the second&lt;br /&gt;
* URI		- a String that is a URI&lt;br /&gt;
* Binary	- a sequence of zero or more octets (unsigned bytes)&lt;br /&gt;
	&lt;br /&gt;
A map is a dictionary mapping String keys to LLSD values.  The keys are unique within a map, and have only one value (though that value could be an LLSD array).&lt;br /&gt;
	&lt;br /&gt;
An array is a sequence of zero or more LLSD values.&lt;br /&gt;
&lt;br /&gt;
== Scalar Accessors ==&lt;br /&gt;
&lt;br /&gt;
Function: Fetch a scalar value, converting if needed and possible.&lt;br /&gt;
&lt;br /&gt;
Conversion among the basic types, Boolean, Integer, Real and String, is fully defined.  Each type can be converted to another with a reasonable interpretation.  These conversions can be used as a convenience even when you know the data is in one format, but you want it in another.  Of course, many of these conversions lose information.&lt;br /&gt;
&lt;br /&gt;
Note: These conversions are not the same as Perl&#039;s.  In particular, when converting a String to a Boolean, only the empty string converts to false.  Converting the String &amp;quot;0&amp;quot; to Boolean results in true.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from UUID, Date, and URI is only defined to and from String.  Conversion is defined to be information preserving for valid values of those types.  These conversions can be used when one needs to convert data to or from another system that cannot handle these types natively, but can handle strings.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from Binary isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
Conversion of the Undefined value to any scalar type results in a reasonable null or zero value for the type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatic Cast Protection ==&lt;br /&gt;
&lt;br /&gt;
These are not implemented on purpose.  Without them, C++ can perform some conversions that are clearly not what the programmer intended.&lt;br /&gt;
	&lt;br /&gt;
If you get a linker error about these being missing, you have made mistake in your code.  DO NOT IMPLEMENT THESE FUNCTIONS as a fix.&lt;br /&gt;
		&lt;br /&gt;
All of thse problems stem from trying to support char* in LLSD or in std::string.  There are too many automatic casts that will lead to using an arbitrary pointer or scalar type to std::string.&lt;br /&gt;
&lt;br /&gt;
== Attributes and Data ==&lt;br /&gt;
Attributes are only used for encoding parser and formatting instructions. The data in the elements is always data.&lt;br /&gt;
&lt;br /&gt;
== Root Element ==&lt;br /&gt;
The root element is llsd. The root must have only one child element which can be any container or atomic type.&lt;br /&gt;
&lt;br /&gt;
== Atomic Types ==&lt;br /&gt;
Each atomic type represents one value with type information. An atomic does not have a name, but may have attributes to specify format or processing considerations for the parser. &lt;br /&gt;
Consumers of atomics are encouraged to massage the data into the preferred native representation, but further serialization should honor the original type information if possible.&lt;br /&gt;
&lt;br /&gt;
=== undefined ===&lt;br /&gt;
The undefined type is a placeholder to indicate something is there, but it has no value, and cannot be converted to any other atomic type. Though limited in this way, an undefined is still considered a first-class atomic, and is expected to behave like any other atomic structured data type at runtime.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;undef /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== boolean ===&lt;br /&gt;
A true or false value.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||unity||&lt;br /&gt;
|-&lt;br /&gt;
|integer||true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|real||true =&amp;gt; 1.0, false =&amp;gt; 0.0||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||&#039;true&#039;, &#039;false&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|binary||one byte us-ascii where true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- true --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;true&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- false --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;false&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== integer ===&lt;br /&gt;
A signed integer value with a representation of 32 bits.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||unity||&lt;br /&gt;
|-&lt;br /&gt;
|real||closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;289343&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;-3&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer /&amp;gt; &amp;lt;!-- zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== real ===&lt;br /&gt;
A 64 bit double as defined by IEEE.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||exactly 0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||rounded to closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|real||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;-0.28334&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;2983287453.3848387&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real /&amp;gt; &amp;lt;!-- exactly zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uuid ===&lt;br /&gt;
A 128 bit unsigned integer.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||null uuid =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||unity||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard 8-4-4-4-12 serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||16 byte raw representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uuid&amp;gt;d7f4aeca-88f1-42a1-b385-b9db18abb255&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&amp;lt;uuid /&amp;gt; &amp;lt;!-- null uuid &#039;00000000-0000-0000-0000-000000000000&#039; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== string ===&lt;br /&gt;
A simple string of any character data which is intended to be human comprehensible.&lt;br /&gt;
&lt;br /&gt;
Strings in the system that hold text a user might see or enter (chat, IM, notecards, AV names, region names,... basically almost everything!) should move to using a consistent set of acceptable characters. This set is:&lt;br /&gt;
&lt;br /&gt;
* Unicode code points U+20 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF&lt;br /&gt;
* U+9 (tab, &#039;\t&#039;)&lt;br /&gt;
* U+A (newline or line feed, &#039;\n&#039;)&lt;br /&gt;
* U+D (carriage return, &#039;\r&#039;)&lt;br /&gt;
&lt;br /&gt;
Strings may be sequences of zero or more of these characters. Strings *may* be normalized by mapping line ending sequences to U+A. Do not rely on differences in strings that normalize to the same string.&lt;br /&gt;
&lt;br /&gt;
These choices of valid strings are chosen from Unicode 4.0 which defines the following valid code points:&lt;br /&gt;
* Unicode code points U+0 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF (the UTF-16 surrogate pair range)&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF (some historical screw up with Arabic)&lt;br /&gt;
&lt;br /&gt;
The choice for special characters &amp;lt; U+20 is because XML defines acceptable text as all valid Unicode code points &amp;gt;= U+20, and U+9, U+A and U+D. The normalization is because XML defines that all line ending sequences are normalized to U+A.&lt;br /&gt;
&lt;br /&gt;
See: [[Unicode In 5 Minutes]] for a brief introduction to Unicode.&lt;br /&gt;
&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||A simple conversion of the initial characters to an integer||&lt;br /&gt;
|-&lt;br /&gt;
|real||A simple conversion of the initial characters to a real number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||A valid 8-4-4-4-12 is converted to a uuid, all other values =&amp;gt; null uuid||&lt;br /&gt;
|-&lt;br /&gt;
|string||unity||&lt;br /&gt;
|-&lt;br /&gt;
|binary||raw representation of the characters||&lt;br /&gt;
|-&lt;br /&gt;
|date||An interpretation of the string as a date||&lt;br /&gt;
|-&lt;br /&gt;
|uri||An interpretation of the string as a link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;The quick brown fox jumped over the lazy dog.&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;540943c1-7142-4fdd-996f-fc90ed5dd3fa&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string /&amp;gt; &amp;lt;!-- empty string --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== binary data ===&lt;br /&gt;
A chunk of binary data.&lt;br /&gt;
The serialization format is allowed to specify an encoding. Parsers must support base64 encoding. Parsers may support base16 and base85.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
||integer||len &amp;lt; 4 =&amp;gt; 0, otherwise first four bytes are interpreted as a network byte order integer||&lt;br /&gt;
|-&lt;br /&gt;
||real||len &amp;lt; 8 =&amp;gt; 0, otherwise first eight bytes are interpreted as a network byte order double||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||len &amp;lt; 16 =&amp;gt; null uuid, otherwise first sixteen bytes are interpreted as the raw binary uuid||&lt;br /&gt;
|-&lt;br /&gt;
||string||the raw binary data interpreted as utf-8 character data||&lt;br /&gt;
|-&lt;br /&gt;
||binary||unity||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||the raw binary data interpreted as a utf-8 serialized link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;cmFuZG9t&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data --&amp;gt;&lt;br /&gt;
&amp;lt;binary&amp;gt;dGhlIHF1aWNrIGJyb3duIGZveA==&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data is default --&amp;gt;&lt;br /&gt;
&amp;lt;binary /&amp;gt; &amp;lt;!-- empty binary blob --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== date ===&lt;br /&gt;
A specific point in time. Intervals or relative dates are not supported. The serialization and parser only understand ISO-8601 numeric encoding in UTC. The time may be omitted which will be interpreted as midnight at the start of the day. &lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|integer||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|real||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|date||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;date&amp;gt;2006-02-01T14:29:53.43Z&amp;lt;/date&amp;gt;&lt;br /&gt;
&amp;lt;date /&amp;gt; &amp;lt;!-- epoch --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uri ===&lt;br /&gt;
A link to an external resource. The data is expected to conform to [http://www.ietf.org/rfc/rfc2396.txt rfc 2396] for interpretation, meaning, serialization, and deserialization.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
||binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||unity||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uri&amp;gt;http://sim956.agni.lindenlab.com:12035/runtime/agents&amp;lt;/uri&amp;gt;&lt;br /&gt;
&amp;lt;uri /&amp;gt; &amp;lt;!-- an empty link --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Containers ==&lt;br /&gt;
Containers is a special data type which can contain any other data type including other containers.&lt;br /&gt;
&lt;br /&gt;
=== map ===&lt;br /&gt;
A map of key and value pairs where key ordering is unspecified and keys are unique. The key is always interpreted as a character string and any character string is acceptable. If there are any elements in the map, it is serialized as a key followed by an atomic or container value. For every key, there must be one value.&lt;br /&gt;
Well formed and valid serialized maps may contain more non-unique keys. When a deserialized, the implementation should choose one of the the value objects, but that choice is not specified.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;foo&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;bar&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;agent info&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;uuid&amp;gt;93c73b16-cd86-434d-8b4a-76e12eee950a&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;name&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;testtest tester&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array ===&lt;br /&gt;
An ordered collection of data members. Any member can be any atomic or container type.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;array&amp;gt;&lt;br /&gt;
 &amp;lt;real&amp;gt;7343.0194&amp;lt;/real&amp;gt;&lt;br /&gt;
 &amp;lt;array&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;offset&amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;integer&amp;gt;9847&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;da boom&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XML Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When possible, prefer using us-ascii or or UTF-8 xml encoding.&lt;br /&gt;
&lt;br /&gt;
XML is the &amp;quot;standard&amp;quot; serialization format, being future-proof and readable by a wide variety of tools. The XML serialization should be preferred unless profiling reveals that the [[#Binary_Serialization | binary serialization]] provides an essential performance benefit.  All the serialization examples in the above sections are of the XML serialization.&lt;br /&gt;
&lt;br /&gt;
== DTD ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;!DOCTYPE llsd [&lt;br /&gt;
&amp;lt;!ELEMENT llsd (DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DATA (ATOMIC|map|array)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ATOMIC (undef|boolean|integer|real|uuid|string|date|uri|binary)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT KEYDATA (key,DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT key (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT map (KEYDATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT array (DATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT undef (EMPTY)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT boolean (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT integer (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT real (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uuid (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT string (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT date (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uri (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT binary (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST string xml:space (default|preserve) &#039;preserve&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST binary encoding CDATA &amp;quot;base64&amp;quot;&amp;gt;&lt;br /&gt;
]&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example XML Output ==&lt;br /&gt;
This is a sample from a recently running sim (indention for readability):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;$ curl http://localhost:12035/runtime/statistics&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;region_id&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;uuid&amp;gt;67153d5b-3659-afb4-8510-adda2c034649&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;scale&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;one minute&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;simulator statistics&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;time dilation&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.9878624&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38898&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pysics fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38906&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent updates per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;nan&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;lsl instructions per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;total task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active script count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;main agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;child agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;inbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.228283&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;outbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.277508&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending downloads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending uploads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.0001096525&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;frame ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.7757886&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;net ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.3152919&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim other ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1826937&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim physics ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.04323055&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01599029&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;image ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01865955&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;script ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1338836&amp;lt;/real&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Binary Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We also have support for binary serialization and deserialization in c++ and python. The binary format is useful when dealing where optimal parse time is necessary. Binary LLSD is the binary llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/binary?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &#039;1&#039;&lt;br /&gt;
|-&lt;br /&gt;
| false || &#039;0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; + htonl(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; + htond(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; + uuid || uuid is 16 bytes&lt;br /&gt;
|-&lt;br /&gt;
| binary || &#039;b&#039; + htonl(binary.size()) + binary&lt;br /&gt;
|-&lt;br /&gt;
| string || &#039;s&#039; + htonl(string.size()) + string || notation serialization is considered valid&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&#039; + htonl(uri.size()) + uri&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&#039; + htond(seconds_since_epoch)&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; + htonl(array.length()) + (child0, child1, ...) + &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; + htonl(map.length()) + ((key0,value0), (key1, value1), ...)+ &#039;}&#039; || order is not always preserved.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;size()&amp;lt;/b&amp;gt; is a byte count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;length()&amp;lt;/b&amp;gt; is a child count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htonl()&amp;lt;/b&amp;gt; is a function to generate a 4 byte network byte order integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htond()&amp;lt;/b&amp;gt; is a function to generate an 8 byte network byte order double. htond is not a standard system call, but you can find a c implementation in &amp;lt;code&amp;gt;indra/llcommon/llsdserialize.cpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Notation Serialization =&lt;br /&gt;
We also have support for a serialization format meant for human readability. Parsing and formatting are currently only available in c++. Notation LLSD is the notation llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/notation?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &amp;lt;nowiki&amp;gt;&#039;1&#039; |  &#039;t&#039; | &#039;T&#039; | &#039;true&#039; | &#039;TRUE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| false || &amp;lt;nowiki&amp;gt;&#039;0&#039; |  &#039;f&#039; | &#039;F&#039; | &#039;false&#039; | &#039;FALSE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; str(uuid)&lt;br /&gt;
|-&lt;br /&gt;
| binary || &amp;lt;nowiki&amp;gt;&#039;b(&#039; str(size) &#039;)&amp;quot;&#039;  raw_data &#039;&amp;quot;&#039; | &#039;b&#039; base &#039;&amp;quot;&#039; encoded_data &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt;  || Base 16 and 64 encodings are supported.&lt;br /&gt;
|-&lt;br /&gt;
| string || &amp;lt;nowiki&amp;gt;&amp;quot; escaped_string &amp;quot; | &#039; escaped_string &#039; | &#039;s(&#039; str(size) &#039;)&amp;quot;&#039; raw_string &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt; || When using single quotes, double quotes do not need escaping and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&amp;quot;&#039; escaped_uri &#039;&amp;quot;&#039; || See [http://www.faqs.org/rfcs/rfc1738.html rfc 1738] for encoding rules.&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&amp;quot;&#039; YYYY-MM-DD &#039;T&#039; HH:MM:SS [.FF] &#039;Z&amp;quot;&#039; || Fractional seconds are optional&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; object0 &#039;,&#039; object1 &#039;,&#039; ... &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; string0:object0 &#039;,&#039; string1:object1 &#039;,&#039; ... &#039;}&#039; || order is not always preserved. The string is any supported string serialization format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== String Escaping ==&lt;br /&gt;
Strings which contain non-printable characters delimited with quotes or double quotes require escaping. If a single quote delimited string contains single quotes, those must be escaped. If a double quote delimited string contains double quotes, the double quotes must be escaped.&lt;br /&gt;
&lt;br /&gt;
To escape the delimiter character, prefix a backslash. Backslashes must always be escaped with another backslash.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;And then he said, \&amp;quot;I have nothing more to say on the subject.\&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &#039;Look in &amp;quot;C:\\linden\\&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
The most generic escaping is to specify a hex value of the byte after a literal backslash and character &#039;x&#039;. This can be used for any character and is required for all non-printable characters which do not have an abbreviation. For example:&lt;br /&gt;
&lt;br /&gt;
  \x0C&lt;br /&gt;
&lt;br /&gt;
Serialized strings should only contain UTF-8 characters, so non-printable characters other than tab, newline, and carriage return should be avoided. However, common non-printable characters have short-hand abbreviations.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Notation abbreviations&lt;br /&gt;
! character !! value !! serialization&lt;br /&gt;
|-&lt;br /&gt;
| alert/bell ||  0x7 || \a&lt;br /&gt;
|-&lt;br /&gt;
| backspace || 0x8 || \b&lt;br /&gt;
|-&lt;br /&gt;
| form feed || 0xc || \f&lt;br /&gt;
|-&lt;br /&gt;
| newline || 0xa || \n&lt;br /&gt;
|-&lt;br /&gt;
| carriage return || 0xd || \r&lt;br /&gt;
|-&lt;br /&gt;
| horizontal tab || 0x9 || \t&lt;br /&gt;
|-&lt;br /&gt;
| vertical tab || 0xb || \v&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example Notation Output ==&lt;br /&gt;
This is an excerpt from an agent request to enter a region serialized as notation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&#039;destination&#039;:&#039;http://secondlife.com&#039;}, &lt;br /&gt;
  {&#039;version&#039;:i1}, &lt;br /&gt;
  {&lt;br /&gt;
    &#039;agent_id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730, &lt;br /&gt;
    &#039;session_id&#039;:u2c585cec-038c-40b0-b42e-a25ebab4d132, &lt;br /&gt;
    &#039;circuit_code&#039;:i1075, &lt;br /&gt;
    &#039;first_name&#039;:&#039;Phoenix&#039;, &lt;br /&gt;
    &#039;last_name&#039;:&#039;Linden&#039;,&lt;br /&gt;
    &#039;position&#039;:[r70.9247,r254.378,r38.7304], &lt;br /&gt;
    &#039;look_at&#039;:[r-0.043753,r-0.999042,r0], &lt;br /&gt;
    &#039;granters&#039;:[ua2e76fcd-9360-4f6d-a924-000000000003],&lt;br /&gt;
    &#039;attachment_data&#039;:&lt;br /&gt;
    [&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i2,&lt;br /&gt;
        &#039;item_id&#039;:ud6852c11-a74e-309a-0462-50533f1ef9b3,&lt;br /&gt;
        &#039;asset_id&#039;:uc69b29b1-8944-58ae-a7c5-2ca7b23e22fb&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i10, &lt;br /&gt;
        &#039;item_id&#039;:uff852c22-a74e-309a-0462-50533f1ef900,&lt;br /&gt;
        &#039;asset_id&#039;:u5868dd20-c25a-47bd-8b4c-dedc99ef9479&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &#039;creation-date&#039;:d&amp;quot;2007-03-15T18:30:18Z&amp;quot;, &lt;br /&gt;
    &#039;creator-id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730&lt;br /&gt;
  },&lt;br /&gt;
  s(10)&amp;quot;0123456789&amp;quot;,&lt;br /&gt;
  &amp;quot;Where&#039;s the beef?&amp;quot;,&lt;br /&gt;
  &#039;Over here.&#039;,  &lt;br /&gt;
  b(160)&amp;quot;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;,&lt;br /&gt;
  b64&amp;quot;AABAAAAAAAAAAAIAAAA//wAAP/8AAADgAAAA5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AABkAAAAZAAAAAAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAQAAAAAAAA&lt;br /&gt;
AAUAAAAFAAAAABAAAAAAAAAAPgAAAAQAAAAFAGNbXgAAAABgSGVsbG8sIEF2YXRhciEAZgAAAABc&lt;br /&gt;
XgAAAAhwEQjRABeVAAAABQBjW14AAAAAYFRvdWNoZWQuAGYAAAAAXF4AAAAIcBEI0QAXAZUAAEAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&amp;quot; &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Guidelines =&lt;br /&gt;
&lt;br /&gt;
=== Questions &amp;amp; Things To Do ===&lt;br /&gt;
&lt;br /&gt;
Would Binary be more convenient as usigned char* buffer semantics?&lt;br /&gt;
&lt;br /&gt;
Should Binary be convertable to/from String, and if so how?&lt;br /&gt;
* as UTF8 encoded strings (making not like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
* as Base64 or Base96 encoded (making like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
&lt;br /&gt;
Conversions to std::string and LLUUID do not result in easy assignment to std::string, LLString or LLUUID due to non-unique conversion paths.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94152</id>
		<title>LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94152"/>
		<updated>2008-10-01T23:09:00Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: Undo revision 94148 by Infinity Linden (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The LLSD flexible data system =&lt;br /&gt;
&lt;br /&gt;
The following text is from the comments in the source of the file:&lt;br /&gt;
linden\indra\common\llsd.cpp &lt;br /&gt;
&lt;br /&gt;
LLSD stands [http://blog.secondlife.com/2006/07/19/web-services-serialization-format/#comment-101218][according to Andrew Linden] for &#039;&#039;&#039;Linden Lab Structured Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
LLSD provides a flexible data system similar to the data facilities of dynamic languages like Perl and Python.  It is created to support exchange of structured data between loosly coupled systems.  (Here, &amp;quot;loosly coupled&amp;quot; means not compiled together into the same module.)&lt;br /&gt;
	&lt;br /&gt;
Data in such exchanges must be highly tolerant of changes on either side such as:&lt;br /&gt;
- recompilation&lt;br /&gt;
- implementation in a different langauge&lt;br /&gt;
- addition of extra parameters&lt;br /&gt;
- execution of older versions (with fewer parameters)&lt;br /&gt;
&lt;br /&gt;
To this aim, the C++ API of LLSD strives to be very easy to use, and to default to &amp;quot;the right thing&amp;quot; whereever possible.  It is extremely tolerant of errors and unexpected situations.&lt;br /&gt;
	&lt;br /&gt;
The fundamental class is LLSD.  LLSD is a value holding object.  It holds one value that is either undefined, one of the scalar types, or a map or an array.  LLSD objects have value semantics (copying them copies the value, though it can be considered efficient, due to sharing.), and mutable.&lt;br /&gt;
&lt;br /&gt;
Undefined is the singular value given to LLSD objects that are not initialized with any data.&lt;br /&gt;
	&lt;br /&gt;
The scalar data types are:&lt;br /&gt;
* Boolean	- true or false&lt;br /&gt;
* Integer	- a 32 bit signed integer&lt;br /&gt;
* Real		- a 64 bit IEEE 754 floating point value&lt;br /&gt;
* UUID		- a 128 bit unique value&lt;br /&gt;
* String	- a sequence of zero or more Unicode chracters&lt;br /&gt;
* Date		- an absolute point in time, UTC, with resolution to the second&lt;br /&gt;
* URI		- a String that is a URI&lt;br /&gt;
* Binary	- a sequence of zero or more octets (unsigned bytes)&lt;br /&gt;
	&lt;br /&gt;
A map is a dictionary mapping String keys to LLSD values.  The keys are unique within a map, and have only one value (though that value could be an LLSD array).&lt;br /&gt;
	&lt;br /&gt;
An array is a sequence of zero or more LLSD values.&lt;br /&gt;
&lt;br /&gt;
== Scalar Accessors ==&lt;br /&gt;
&lt;br /&gt;
Function: Fetch a scalar value, converting if needed and possible.&lt;br /&gt;
&lt;br /&gt;
Conversion among the basic types, Boolean, Integer, Real and String, is fully defined.  Each type can be converted to another with a reasonable interpretation.  These conversions can be used as a convenience even when you know the data is in one format, but you want it in another.  Of course, many of these conversions lose information.&lt;br /&gt;
&lt;br /&gt;
Note: These conversions are not the same as Perl&#039;s.  In particular, when converting a String to a Boolean, only the empty string converts to false.  Converting the String &amp;quot;0&amp;quot; to Boolean results in true.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from UUID, Date, and URI is only defined to and from String.  Conversion is defined to be information preserving for valid values of those types.  These conversions can be used when one needs to convert data to or from another system that cannot handle these types natively, but can handle strings.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from Binary isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
Conversion of the Undefined value to any scalar type results in a reasonable null or zero value for the type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatic Cast Protection ==&lt;br /&gt;
&lt;br /&gt;
These are not implemented on purpose.  Without them, C++ can perform some conversions that are clearly not what the programmer intended.&lt;br /&gt;
	&lt;br /&gt;
If you get a linker error about these being missing, you have made mistake in your code.  DO NOT IMPLEMENT THESE FUNCTIONS as a fix.&lt;br /&gt;
		&lt;br /&gt;
All of thse problems stem from trying to support char* in LLSD or in std::string.  There are too many automatic casts that will lead to using an arbitrary pointer or scalar type to std::string.&lt;br /&gt;
&lt;br /&gt;
== Attributes and Data ==&lt;br /&gt;
Attributes are only used for encoding parser and formatting instructions. The data in the elements is always data.&lt;br /&gt;
&lt;br /&gt;
== Root Element ==&lt;br /&gt;
The root element is llsd. The root must have only one child element which can be any container or atomic type.&lt;br /&gt;
&lt;br /&gt;
== Atomic Types ==&lt;br /&gt;
Each atomic type represents one value with type information. An atomic does not have a name, but may have attributes to specify format or processing considerations for the parser. &lt;br /&gt;
Consumers of atomics are encouraged to massage the data into the preferred native representation, but further serialization should honor the original type information if possible.&lt;br /&gt;
&lt;br /&gt;
=== undefined ===&lt;br /&gt;
The undefined type is a placeholder to indicate something is there, but it has no value, and cannot be converted to any other atomic type. Though limited in this way, an undefined is still considered a first-class atomic, and is expected to behave like any other atomic structured data type at runtime.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;undef /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== boolean ===&lt;br /&gt;
A true or false value.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||unity||&lt;br /&gt;
|-&lt;br /&gt;
|integer||true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|real||true =&amp;gt; 1.0, false =&amp;gt; 0.0||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||&#039;true&#039;, &#039;false&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|binary||one byte us-ascii where true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- true --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;true&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- false --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;false&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== integer ===&lt;br /&gt;
A signed integer value with a representation of 32 bits.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||unity||&lt;br /&gt;
|-&lt;br /&gt;
|real||closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;289343&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;-3&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer /&amp;gt; &amp;lt;!-- zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== real ===&lt;br /&gt;
A 64 bit double as defined by IEEE.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||exactly 0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||rounded to closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|real||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;-0.28334&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;2983287453.3848387&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real /&amp;gt; &amp;lt;!-- exactly zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uuid ===&lt;br /&gt;
A 128 bit unsigned integer.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||null uuid =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||unity||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard 8-4-4-4-12 serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||16 byte raw representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uuid&amp;gt;d7f4aeca-88f1-42a1-b385-b9db18abb255&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&amp;lt;uuid /&amp;gt; &amp;lt;!-- null uuid &#039;00000000-0000-0000-0000-000000000000&#039; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== string ===&lt;br /&gt;
A simple string of any character data which is intended to be human comprehensible.&lt;br /&gt;
&lt;br /&gt;
Strings in the system that hold text a user might see or enter (chat, IM, notecards, AV names, region names,... basically almost everything!) should move to using a consistent set of acceptable characters. This set is:&lt;br /&gt;
&lt;br /&gt;
* Unicode code points U+20 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF&lt;br /&gt;
* U+9 (tab, &#039;\t&#039;)&lt;br /&gt;
* U+A (newline or line feed, &#039;\n&#039;)&lt;br /&gt;
* U+D (carriage return, &#039;\r&#039;)&lt;br /&gt;
&lt;br /&gt;
Strings may be sequences of zero or more of these characters. Strings *may* be normalized by mapping line ending sequences to U+A. Do not rely on differences in strings that normalize to the same string.&lt;br /&gt;
&lt;br /&gt;
These choices of valid strings are chosen from Unicode 4.0 which defines the following valid code points:&lt;br /&gt;
* Unicode code points U+0 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF (the UTF-16 surrogate pair range)&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF (some historical screw up with Arabic)&lt;br /&gt;
&lt;br /&gt;
The choice for special characters &amp;lt; U+20 is because XML defines acceptable text as all valid Unicode code points &amp;gt;= U+20, and U+9, U+A and U+D. The normalization is because XML defines that all line ending sequences are normalized to U+A.&lt;br /&gt;
&lt;br /&gt;
See: [[Unicode In 5 Minutes]] for a brief introduction to Unicode.&lt;br /&gt;
&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||A simple conversion of the initial characters to an integer||&lt;br /&gt;
|-&lt;br /&gt;
|real||A simple conversion of the initial characters to a real number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||A valid 8-4-4-4-12 is converted to a uuid, all other values =&amp;gt; null uuid||&lt;br /&gt;
|-&lt;br /&gt;
|string||unity||&lt;br /&gt;
|-&lt;br /&gt;
|binary||raw representation of the characters||&lt;br /&gt;
|-&lt;br /&gt;
|date||An interpretation of the string as a date||&lt;br /&gt;
|-&lt;br /&gt;
|uri||An interpretation of the string as a link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;The quick brown fox jumped over the lazy dog.&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;540943c1-7142-4fdd-996f-fc90ed5dd3fa&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string /&amp;gt; &amp;lt;!-- empty string --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== binary data ===&lt;br /&gt;
A chunk of binary data.&lt;br /&gt;
The serialization format is allowed to specify an encoding. Parsers must support base64 encoding. Parsers may support base16 and base85.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
||integer||len &amp;lt; 4 =&amp;gt; 0, otherwise first four bytes are interpreted as a network byte order integer||&lt;br /&gt;
|-&lt;br /&gt;
||real||len &amp;lt; 8 =&amp;gt; 0, otherwise first eight bytes are interpreted as a network byte order double||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||len &amp;lt; 16 =&amp;gt; null uuid, otherwise first sixteen bytes are interpreted as the raw binary uuid||&lt;br /&gt;
|-&lt;br /&gt;
||string||the raw binary data interpreted as utf-8 character data||&lt;br /&gt;
|-&lt;br /&gt;
||binary||unity||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||the raw binary data interpreted as a utf-8 serialized link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;cmFuZG9t&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data --&amp;gt;&lt;br /&gt;
&amp;lt;binary&amp;gt;dGhlIHF1aWNrIGJyb3duIGZveA==&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data is default --&amp;gt;&lt;br /&gt;
&amp;lt;binary /&amp;gt; &amp;lt;!-- empty binary blob --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== date ===&lt;br /&gt;
A specific point in time. Intervals or relative dates are not supported. The serialization and parser only understand ISO-8601 numeric encoding in UTC. The time may be omitted which will be interpreted as midnight at the start of the day. &lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|integer||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|real||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|date||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;date&amp;gt;2006-02-01T14:29:53.43Z&amp;lt;/date&amp;gt;&lt;br /&gt;
&amp;lt;date /&amp;gt; &amp;lt;!-- epoch --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uri ===&lt;br /&gt;
A link to an external resource. The data is expected to conform to [http://www.ietf.org/rfc/rfc2396.txt rfc 2396] for interpretation, meaning, serialization, and deserialization.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
||binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||unity||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uri&amp;gt;http://sim956.agni.lindenlab.com:12035/runtime/agents&amp;lt;/uri&amp;gt;&lt;br /&gt;
&amp;lt;uri /&amp;gt; &amp;lt;!-- an empty link --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Containers ==&lt;br /&gt;
Containers is a special data type which can contain any other data type including other containers.&lt;br /&gt;
&lt;br /&gt;
=== map ===&lt;br /&gt;
A map of key and value pairs where key ordering is unspecified and keys are unique. The key is always interpreted as a character string and any character string is acceptable. If there are any elements in the map, it is serialized as a key followed by an atomic or container value. For every key, there must be one value.&lt;br /&gt;
Well formed and valid serialized maps may contain more non-unique keys. When a deserialized, the implementation should choose one of the the value objects, but that choice is not specified.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;foo&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;bar&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;agent info&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;uuid&amp;gt;93c73b16-cd86-434d-8b4a-76e12eee950a&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;name&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;testtest tester&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array ===&lt;br /&gt;
An ordered collection of data members. Any member can be any atomic or container type.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;array&amp;gt;&lt;br /&gt;
 &amp;lt;real&amp;gt;7343.0194&amp;lt;/real&amp;gt;&lt;br /&gt;
 &amp;lt;array&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;offset&amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;integer&amp;gt;9847&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;da boom&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XML Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When possible, prefer using us-ascii or or UTF-8 xml encoding.&lt;br /&gt;
&lt;br /&gt;
XML is the &amp;quot;standard&amp;quot; serialization format, being future-proof and readable by a wide variety of tools. The XML serialization should be preferred unless profiling reveals that the [[#Binary_Serialization | binary serialization]] provides an essential performance benefit.  All the serialization examples in the above sections are of the XML serialization.&lt;br /&gt;
&lt;br /&gt;
== DTD ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;!DOCTYPE llsd [&lt;br /&gt;
&amp;lt;!ELEMENT llsd (DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DATA (ATOMIC|map|array)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ATOMIC (undef|boolean|integer|real|uuid|string|date|uri|binary)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT KEYDATA (key,DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT key (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT map (KEYDATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT array (DATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT undef (EMPTY)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT boolean (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT integer (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT real (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uuid (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT string (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT date (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uri (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT binary (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST string xml:space (default|preserve) &#039;preserve&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST binary encoding (base64|base16|base85) &#039;base64&#039;&amp;gt;&lt;br /&gt;
]&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example XML Output ==&lt;br /&gt;
This is a sample from a recently running sim (indention for readability):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;$ curl http://localhost:12035/runtime/statistics&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;region_id&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;uuid&amp;gt;67153d5b-3659-afb4-8510-adda2c034649&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;scale&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;one minute&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;simulator statistics&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;time dilation&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.9878624&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38898&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pysics fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38906&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent updates per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;nan&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;lsl instructions per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;total task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active script count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;main agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;child agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;inbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.228283&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;outbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.277508&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending downloads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending uploads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.0001096525&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;frame ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.7757886&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;net ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.3152919&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim other ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1826937&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim physics ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.04323055&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01599029&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;image ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01865955&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;script ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1338836&amp;lt;/real&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Binary Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We also have support for binary serialization and deserialization in c++ and python. The binary format is useful when dealing where optimal parse time is necessary. Binary LLSD is the binary llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/binary?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &#039;1&#039;&lt;br /&gt;
|-&lt;br /&gt;
| false || &#039;0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; + htonl(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; + htond(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; + uuid || uuid is 16 bytes&lt;br /&gt;
|-&lt;br /&gt;
| binary || &#039;b&#039; + htonl(binary.size()) + binary&lt;br /&gt;
|-&lt;br /&gt;
| string || &#039;s&#039; + htonl(string.size()) + string || notation serialization is considered valid&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&#039; + htonl(uri.size()) + uri&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&#039; + htond(seconds_since_epoch)&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; + htonl(array.length()) + (child0, child1, ...) + &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; + htonl(map.length()) + ((key0,value0), (key1, value1), ...)+ &#039;}&#039; || order is not always preserved.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;size()&amp;lt;/b&amp;gt; is a byte count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;length()&amp;lt;/b&amp;gt; is a child count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htonl()&amp;lt;/b&amp;gt; is a function to generate a 4 byte network byte order integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htond()&amp;lt;/b&amp;gt; is a function to generate an 8 byte network byte order double. htond is not a standard system call, but you can find a c implementation in &amp;lt;code&amp;gt;indra/llcommon/llsdserialize.cpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Notation Serialization =&lt;br /&gt;
We also have support for a serialization format meant for human readability. Parsing and formatting are currently only available in c++. Notation LLSD is the notation llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/notation?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &amp;lt;nowiki&amp;gt;&#039;1&#039; |  &#039;t&#039; | &#039;T&#039; | &#039;true&#039; | &#039;TRUE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| false || &amp;lt;nowiki&amp;gt;&#039;0&#039; |  &#039;f&#039; | &#039;F&#039; | &#039;false&#039; | &#039;FALSE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; str(uuid)&lt;br /&gt;
|-&lt;br /&gt;
| binary || &amp;lt;nowiki&amp;gt;&#039;b(&#039; str(size) &#039;)&amp;quot;&#039;  raw_data &#039;&amp;quot;&#039; | &#039;b&#039; base &#039;&amp;quot;&#039; encoded_data &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt;  || Base 16 and 64 encodings are supported.&lt;br /&gt;
|-&lt;br /&gt;
| string || &amp;lt;nowiki&amp;gt;&amp;quot; escaped_string &amp;quot; | &#039; escaped_string &#039; | &#039;s(&#039; str(size) &#039;)&amp;quot;&#039; raw_string &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt; || When using single quotes, double quotes do not need escaping and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&amp;quot;&#039; escaped_uri &#039;&amp;quot;&#039; || See [http://www.faqs.org/rfcs/rfc1738.html rfc 1738] for encoding rules.&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&amp;quot;&#039; YYYY-MM-DD &#039;T&#039; HH:MM:SS [.FF] &#039;Z&amp;quot;&#039; || Fractional seconds are optional&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; object0 &#039;,&#039; object1 &#039;,&#039; ... &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; string0:object0 &#039;,&#039; string1:object1 &#039;,&#039; ... &#039;}&#039; || order is not always preserved. The string is any supported string serialization format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== String Escaping ==&lt;br /&gt;
Strings which contain non-printable characters delimited with quotes or double quotes require escaping. If a single quote delimited string contains single quotes, those must be escaped. If a double quote delimited string contains double quotes, the double quotes must be escaped.&lt;br /&gt;
&lt;br /&gt;
To escape the delimiter character, prefix a backslash. Backslashes must always be escaped with another backslash.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;And then he said, \&amp;quot;I have nothing more to say on the subject.\&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &#039;Look in &amp;quot;C:\\linden\\&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
The most generic escaping is to specify a hex value of the byte after a literal backslash and character &#039;x&#039;. This can be used for any character and is required for all non-printable characters which do not have an abbreviation. For example:&lt;br /&gt;
&lt;br /&gt;
  \x0C&lt;br /&gt;
&lt;br /&gt;
Serialized strings should only contain UTF-8 characters, so non-printable characters other than tab, newline, and carriage return should be avoided. However, common non-printable characters have short-hand abbreviations.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Notation abbreviations&lt;br /&gt;
! character !! value !! serialization&lt;br /&gt;
|-&lt;br /&gt;
| alert/bell ||  0x7 || \a&lt;br /&gt;
|-&lt;br /&gt;
| backspace || 0x8 || \b&lt;br /&gt;
|-&lt;br /&gt;
| form feed || 0xc || \f&lt;br /&gt;
|-&lt;br /&gt;
| newline || 0xa || \n&lt;br /&gt;
|-&lt;br /&gt;
| carriage return || 0xd || \r&lt;br /&gt;
|-&lt;br /&gt;
| horizontal tab || 0x9 || \t&lt;br /&gt;
|-&lt;br /&gt;
| vertical tab || 0xb || \v&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example Notation Output ==&lt;br /&gt;
This is an excerpt from an agent request to enter a region serialized as notation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&#039;destination&#039;:&#039;http://secondlife.com&#039;}, &lt;br /&gt;
  {&#039;version&#039;:i1}, &lt;br /&gt;
  {&lt;br /&gt;
    &#039;agent_id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730, &lt;br /&gt;
    &#039;session_id&#039;:u2c585cec-038c-40b0-b42e-a25ebab4d132, &lt;br /&gt;
    &#039;circuit_code&#039;:i1075, &lt;br /&gt;
    &#039;first_name&#039;:&#039;Phoenix&#039;, &lt;br /&gt;
    &#039;last_name&#039;:&#039;Linden&#039;,&lt;br /&gt;
    &#039;position&#039;:[r70.9247,r254.378,r38.7304], &lt;br /&gt;
    &#039;look_at&#039;:[r-0.043753,r-0.999042,r0], &lt;br /&gt;
    &#039;granters&#039;:[ua2e76fcd-9360-4f6d-a924-000000000003],&lt;br /&gt;
    &#039;attachment_data&#039;:&lt;br /&gt;
    [&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i2,&lt;br /&gt;
        &#039;item_id&#039;:ud6852c11-a74e-309a-0462-50533f1ef9b3,&lt;br /&gt;
        &#039;asset_id&#039;:uc69b29b1-8944-58ae-a7c5-2ca7b23e22fb&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i10, &lt;br /&gt;
        &#039;item_id&#039;:uff852c22-a74e-309a-0462-50533f1ef900,&lt;br /&gt;
        &#039;asset_id&#039;:u5868dd20-c25a-47bd-8b4c-dedc99ef9479&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &#039;creation-date&#039;:d&amp;quot;2007-03-15T18:30:18Z&amp;quot;, &lt;br /&gt;
    &#039;creator-id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730&lt;br /&gt;
  },&lt;br /&gt;
  s(10)&amp;quot;0123456789&amp;quot;,&lt;br /&gt;
  &amp;quot;Where&#039;s the beef?&amp;quot;,&lt;br /&gt;
  &#039;Over here.&#039;,  &lt;br /&gt;
  b(160)&amp;quot;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;,&lt;br /&gt;
  b64&amp;quot;AABAAAAAAAAAAAIAAAA//wAAP/8AAADgAAAA5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AABkAAAAZAAAAAAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAQAAAAAAAA&lt;br /&gt;
AAUAAAAFAAAAABAAAAAAAAAAPgAAAAQAAAAFAGNbXgAAAABgSGVsbG8sIEF2YXRhciEAZgAAAABc&lt;br /&gt;
XgAAAAhwEQjRABeVAAAABQBjW14AAAAAYFRvdWNoZWQuAGYAAAAAXF4AAAAIcBEI0QAXAZUAAEAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&amp;quot; &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Guidelines =&lt;br /&gt;
&lt;br /&gt;
=== Questions &amp;amp; Things To Do ===&lt;br /&gt;
&lt;br /&gt;
Would Binary be more convenient as usigned char* buffer semantics?&lt;br /&gt;
&lt;br /&gt;
Should Binary be convertable to/from String, and if so how?&lt;br /&gt;
* as UTF8 encoded strings (making not like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
* as Base64 or Base96 encoded (making like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
&lt;br /&gt;
Conversions to std::string and LLUUID do not result in easy assignment to std::string, LLString or LLUUID due to non-unique conversion paths.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LLSD&amp;diff=94149</id>
		<title>Talk:LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LLSD&amp;diff=94149"/>
		<updated>2008-10-01T22:59:14Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Open Source Talk Page}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LLSD JSON-ish notation ==&lt;br /&gt;
&lt;br /&gt;
The login sequence appears to use &amp;quot;binary&amp;quot; LLSD for two of the variables, home and look_at. Unfortunately the format doesn&#039;t match up exactly with what is documented on this wiki. Sample values:&lt;br /&gt;
&lt;br /&gt;
{&#039;region_handle&#039;:[r255232, r256512], &#039;position&#039;:[r33.6, r33.71, r43.13], &#039;look_at&#039;:[r34.6, r33.71, r43.13]}&lt;br /&gt;
&lt;br /&gt;
[r0.99967899999999998428,r-0.025334599999999998787,r0]&lt;br /&gt;
&lt;br /&gt;
No size values, and the map keys are encased in single quotes. Is this normal? -- {{Unsigned|Eddy Stryker}}&lt;br /&gt;
&lt;br /&gt;
:Oh wow, notation format. Ummmmm, I never documented that, did I. LLSD started it&#039;s life as a json-like language, with a well defined serialization which is not actually documented. I&#039;ll get on that. [[User:Phoenix Linden|Phoenix Linden]] 16:10, 6 April 2007 (PDT)&lt;br /&gt;
:Documentation has been added. [[User:Phoenix Linden|Phoenix Linden]] 17:34, 12 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Versioning? ==&lt;br /&gt;
&lt;br /&gt;
Personally I miss a few things here, especially the versioning/compatibility. Sure you can asume that older request just have less keys in a map, and that might work well for things like statistics results. But as soon as you want to call a method, it is much better to make the version obvious. You can encode that in a key/value pair, but it is much better to have that in a fixed element for routing (you can route requests for inventories to different servers, depending on the interface version)&lt;br /&gt;
&lt;br /&gt;
I see a Version:i1 in the notation example for the teleport, which makes it clear, that this element is used already in LL. Maybe it is hard for you to make it to a llsd envelop, but I think you guys will have great use for it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;method version=&amp;quot;1&amp;quot; interface=&amp;quot;simstatistics&amp;quot; message=&amp;quot;result&amp;quot; /&amp;gt;&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or something like that.--[[User:Bernd Elswit|Bernd Elswit]] 10:27, 18 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Efficient binary support ==&lt;br /&gt;
&lt;br /&gt;
maybe a more efficient binary transport can be added, too? For example Adobe&#039;s ASCII85 allows better compression (however you need to escape less-than and ampersand and CDATA). Very efficient could be precalculated huffman tables for the most common file formats.&lt;br /&gt;
&lt;br /&gt;
Sample code at the end of the page: http://www.javaworld.com/javaworld/javatips/jw-javatip117.html&lt;br /&gt;
&lt;br /&gt;
--[[User:Bernd Elswit|Bernd Elswit]] 10:26, 18 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
:Any time that we need to conserve space or cpu resources, we will use zlib routines or [[LLSD#Binary_Serialization|binary serialization]]. [[User:Phoenix Linden|Phoenix Linden]] 12:41, 21 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== hexadecimal ? ==&lt;br /&gt;
&lt;br /&gt;
does the integer type allow hexadecimal values ? e.g. 0xffcc00 instead of entering 16763904 ?&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 09:54, 31 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Binary map and array encoding ? ==&lt;br /&gt;
The description is not clear how the delimiters for map and array elements should be encoded.&lt;br /&gt;
See here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array      &#039;[&#039; + htonl(array.length()) + &#039;&#039;(&#039;&#039;child0&#039;&#039;,&#039;&#039; child1&#039;&#039;,&#039;&#039; ...&#039;&#039;)&#039;&#039; + &#039;]&#039;&lt;br /&gt;
&lt;br /&gt;
map        &#039;{&#039; + htonl(map.length()) + &#039;&#039;((&#039;&#039;key0&#039;&#039;,&#039;&#039;value0&#039;&#039;),(&#039;&#039;key1, value1&#039;&#039;),&#039;&#039; ...&#039;&#039;)&#039;&#039; + &#039;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
                             &lt;br /&gt;
Especially the binary encoding of the &amp;lt;pre&amp;gt;&#039;&#039;&amp;lt;/pre&amp;gt; marked values is not defined. As I am sitting at an implementation of this, I will try with the supposed reference implementation llsd.py and see what that actually does for this part.&lt;br /&gt;
--[[User:Leffard Lassard|Leffard Lassard]] 10:04, 27 March 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
From my own research it is more like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array      &#039;[&#039; + htonl(array.length()) + child0 + child1 + &#039;]&#039;&lt;br /&gt;
&lt;br /&gt;
map        &#039;{&#039; + htonl(map.length()) + &#039;k&#039; + htonl(key0.length) + key0 + value0 + &#039;k&#039; + htonl(key1.length) + key1 + value 1 ... + &#039;}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Leffard Lassard|Leffard Lassard]] 11:26, 28 March 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
== XML &amp;lt;-&amp;gt; Notation? ==&lt;br /&gt;
&lt;br /&gt;
The XML format is, let&#039;s face it, not fun to read or write, for humans, in those weird cases where humans have to. Is there a serialization converter, somewhere, or should I just rig my own? --[[User:Ky Aska|Ky Aska]] 06:12, 3 June 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Motivations Behind LLSD ==&lt;br /&gt;
&lt;br /&gt;
Just a quick note to say i&#039;ve been having discussions with peeps about why LLSD was invented in the first place; more discussions than I ever thought I would have on the subject. The best answer I could give was a) we like dynamic data models and b) it helps a bit to avoid the Fragile Binary Interface problem. If we ever get around to updating the intro, we may want to mention why dynamic data models are &amp;quot;nice&amp;quot; from an agile programming perspective and why FBI is bad. And BTW, here&#039;s the wikipedia entry on FBI: http://en.wikipedia.org/wiki/Fragile_binary_interface_problem . --[[User:Infinity Linden|Infinity Linden]]&lt;br /&gt;
&lt;br /&gt;
== base85 considered harmful ==&lt;br /&gt;
&lt;br /&gt;
Please note: base85 as an encoding for binary elements in the XML serialization of LLSD data is not canonical.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94148</id>
		<title>LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLSD&amp;diff=94148"/>
		<updated>2008-10-01T22:55:28Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The LLSD flexible data system =&lt;br /&gt;
&lt;br /&gt;
The following text is from the comments in the source of the file:&lt;br /&gt;
linden\indra\common\llsd.cpp &lt;br /&gt;
&lt;br /&gt;
LLSD stands [http://blog.secondlife.com/2006/07/19/web-services-serialization-format/#comment-101218][according to Andrew Linden] for &#039;&#039;&#039;Linden Lab Structured Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
LLSD provides a flexible data system similar to the data facilities of dynamic languages like Perl and Python.  It is created to support exchange of structured data between loosly coupled systems.  (Here, &amp;quot;loosly coupled&amp;quot; means not compiled together into the same module.)&lt;br /&gt;
	&lt;br /&gt;
Data in such exchanges must be highly tolerant of changes on either side such as:&lt;br /&gt;
- recompilation&lt;br /&gt;
- implementation in a different langauge&lt;br /&gt;
- addition of extra parameters&lt;br /&gt;
- execution of older versions (with fewer parameters)&lt;br /&gt;
&lt;br /&gt;
To this aim, the C++ API of LLSD strives to be very easy to use, and to default to &amp;quot;the right thing&amp;quot; whereever possible.  It is extremely tolerant of errors and unexpected situations.&lt;br /&gt;
	&lt;br /&gt;
The fundamental class is LLSD.  LLSD is a value holding object.  It holds one value that is either undefined, one of the scalar types, or a map or an array.  LLSD objects have value semantics (copying them copies the value, though it can be considered efficient, due to sharing.), and mutable.&lt;br /&gt;
&lt;br /&gt;
Undefined is the singular value given to LLSD objects that are not initialized with any data.&lt;br /&gt;
	&lt;br /&gt;
The scalar data types are:&lt;br /&gt;
* Boolean	- true or false&lt;br /&gt;
* Integer	- a 32 bit signed integer&lt;br /&gt;
* Real		- a 64 bit IEEE 754 floating point value&lt;br /&gt;
* UUID		- a 128 bit unique value&lt;br /&gt;
* String	- a sequence of zero or more Unicode chracters&lt;br /&gt;
* Date		- an absolute point in time, UTC, with resolution to the second&lt;br /&gt;
* URI		- a String that is a URI&lt;br /&gt;
* Binary	- a sequence of zero or more octets (unsigned bytes)&lt;br /&gt;
	&lt;br /&gt;
A map is a dictionary mapping String keys to LLSD values.  The keys are unique within a map, and have only one value (though that value could be an LLSD array).&lt;br /&gt;
	&lt;br /&gt;
An array is a sequence of zero or more LLSD values.&lt;br /&gt;
&lt;br /&gt;
== Scalar Accessors ==&lt;br /&gt;
&lt;br /&gt;
Function: Fetch a scalar value, converting if needed and possible.&lt;br /&gt;
&lt;br /&gt;
Conversion among the basic types, Boolean, Integer, Real and String, is fully defined.  Each type can be converted to another with a reasonable interpretation.  These conversions can be used as a convenience even when you know the data is in one format, but you want it in another.  Of course, many of these conversions lose information.&lt;br /&gt;
&lt;br /&gt;
Note: These conversions are not the same as Perl&#039;s.  In particular, when converting a String to a Boolean, only the empty string converts to false.  Converting the String &amp;quot;0&amp;quot; to Boolean results in true.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from UUID, Date, and URI is only defined to and from String.  Conversion is defined to be information preserving for valid values of those types.  These conversions can be used when one needs to convert data to or from another system that cannot handle these types natively, but can handle strings.&lt;br /&gt;
&lt;br /&gt;
Conversion to and from Binary isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
Conversion of the Undefined value to any scalar type results in a reasonable null or zero value for the type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatic Cast Protection ==&lt;br /&gt;
&lt;br /&gt;
These are not implemented on purpose.  Without them, C++ can perform some conversions that are clearly not what the programmer intended.&lt;br /&gt;
	&lt;br /&gt;
If you get a linker error about these being missing, you have made mistake in your code.  DO NOT IMPLEMENT THESE FUNCTIONS as a fix.&lt;br /&gt;
		&lt;br /&gt;
All of thse problems stem from trying to support char* in LLSD or in std::string.  There are too many automatic casts that will lead to using an arbitrary pointer or scalar type to std::string.&lt;br /&gt;
&lt;br /&gt;
== Attributes and Data ==&lt;br /&gt;
Attributes are only used for encoding parser and formatting instructions. The data in the elements is always data.&lt;br /&gt;
&lt;br /&gt;
== Root Element ==&lt;br /&gt;
The root element is llsd. The root must have only one child element which can be any container or atomic type.&lt;br /&gt;
&lt;br /&gt;
== Atomic Types ==&lt;br /&gt;
Each atomic type represents one value with type information. An atomic does not have a name, but may have attributes to specify format or processing considerations for the parser. &lt;br /&gt;
Consumers of atomics are encouraged to massage the data into the preferred native representation, but further serialization should honor the original type information if possible.&lt;br /&gt;
&lt;br /&gt;
=== undefined ===&lt;br /&gt;
The undefined type is a placeholder to indicate something is there, but it has no value, and cannot be converted to any other atomic type. Though limited in this way, an undefined is still considered a first-class atomic, and is expected to behave like any other atomic structured data type at runtime.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;undef /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== boolean ===&lt;br /&gt;
A true or false value.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||unity||&lt;br /&gt;
|-&lt;br /&gt;
|integer||true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|real||true =&amp;gt; 1.0, false =&amp;gt; 0.0||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||&#039;true&#039;, &#039;false&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|binary||one byte us-ascii where true =&amp;gt; 1, false =&amp;gt; 0||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- true --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;true&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- false --&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean&amp;gt;false&amp;lt;/boolean&amp;gt;&lt;br /&gt;
&amp;lt;boolean /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== integer ===&lt;br /&gt;
A signed integer value with a representation of 32 bits.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||unity||&lt;br /&gt;
|-&lt;br /&gt;
|real||closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;289343&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer&amp;gt;-3&amp;lt;/integer&amp;gt;&lt;br /&gt;
&amp;lt;integer /&amp;gt; &amp;lt;!-- zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== real ===&lt;br /&gt;
A 64 bit double as defined by IEEE.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||exactly 0 =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||rounded to closest representable number||&lt;br /&gt;
|-&lt;br /&gt;
|real||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||human readable string||&lt;br /&gt;
|-&lt;br /&gt;
|binary||8 byte network byte order representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;-0.28334&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real&amp;gt;2983287453.3848387&amp;lt;/real&amp;gt;&lt;br /&gt;
&amp;lt;real /&amp;gt; &amp;lt;!-- exactly zero --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uuid ===&lt;br /&gt;
A 128 bit unsigned integer.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||null uuid =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||unity||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard 8-4-4-4-12 serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||16 byte raw representation||&lt;br /&gt;
|-&lt;br /&gt;
|date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uuid&amp;gt;d7f4aeca-88f1-42a1-b385-b9db18abb255&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&amp;lt;uuid /&amp;gt; &amp;lt;!-- null uuid &#039;00000000-0000-0000-0000-000000000000&#039; --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== string ===&lt;br /&gt;
A simple string of any character data which is intended to be human comprehensible.&lt;br /&gt;
&lt;br /&gt;
Strings in the system that hold text a user might see or enter (chat, IM, notecards, AV names, region names,... basically almost everything!) should move to using a consistent set of acceptable characters. This set is:&lt;br /&gt;
&lt;br /&gt;
* Unicode code points U+20 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF&lt;br /&gt;
* U+9 (tab, &#039;\t&#039;)&lt;br /&gt;
* U+A (newline or line feed, &#039;\n&#039;)&lt;br /&gt;
* U+D (carriage return, &#039;\r&#039;)&lt;br /&gt;
&lt;br /&gt;
Strings may be sequences of zero or more of these characters. Strings *may* be normalized by mapping line ending sequences to U+A. Do not rely on differences in strings that normalize to the same string.&lt;br /&gt;
&lt;br /&gt;
These choices of valid strings are chosen from Unicode 4.0 which defines the following valid code points:&lt;br /&gt;
* Unicode code points U+0 through U+10FFFD&lt;br /&gt;
** except U+D800 through U+DFFF (the UTF-16 surrogate pair range)&lt;br /&gt;
** except U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFE, U+2FFF ... U+10FFFE, U+10FFFF&lt;br /&gt;
** except U+FDDD through U+FDEF (some historical screw up with Arabic)&lt;br /&gt;
&lt;br /&gt;
The choice for special characters &amp;lt; U+20 is because XML defines acceptable text as all valid Unicode code points &amp;gt;= U+20, and U+9, U+A and U+D. The normalization is because XML defines that all line ending sequences are normalized to U+A.&lt;br /&gt;
&lt;br /&gt;
See: [[Unicode In 5 Minutes]] for a brief introduction to Unicode.&lt;br /&gt;
&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
|integer||A simple conversion of the initial characters to an integer||&lt;br /&gt;
|-&lt;br /&gt;
|real||A simple conversion of the initial characters to a real number||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||A valid 8-4-4-4-12 is converted to a uuid, all other values =&amp;gt; null uuid||&lt;br /&gt;
|-&lt;br /&gt;
|string||unity||&lt;br /&gt;
|-&lt;br /&gt;
|binary||raw representation of the characters||&lt;br /&gt;
|-&lt;br /&gt;
|date||An interpretation of the string as a date||&lt;br /&gt;
|-&lt;br /&gt;
|uri||An interpretation of the string as a link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;The quick brown fox jumped over the lazy dog.&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;540943c1-7142-4fdd-996f-fc90ed5dd3fa&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string /&amp;gt; &amp;lt;!-- empty string --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== binary data ===&lt;br /&gt;
A chunk of binary data.&lt;br /&gt;
The serialization format is allowed to specify an encoding. Parsers must support base64 encoding. Parsers may support base16 and base85.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||empty =&amp;gt; false, all other values =&amp;gt; true||&lt;br /&gt;
|-&lt;br /&gt;
||integer||len &amp;lt; 4 =&amp;gt; 0, otherwise first four bytes are interpreted as a network byte order integer||&lt;br /&gt;
|-&lt;br /&gt;
||real||len &amp;lt; 8 =&amp;gt; 0, otherwise first eight bytes are interpreted as a network byte order double||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||len &amp;lt; 16 =&amp;gt; null uuid, otherwise first sixteen bytes are interpreted as the raw binary uuid||&lt;br /&gt;
|-&lt;br /&gt;
||string||the raw binary data interpreted as utf-8 character data||&lt;br /&gt;
|-&lt;br /&gt;
||binary||unity||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||the raw binary data interpreted as a utf-8 serialized link||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;cmFuZG9t&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data --&amp;gt;&lt;br /&gt;
&amp;lt;binary&amp;gt;dGhlIHF1aWNrIGJyb3duIGZveA==&amp;lt;/binary&amp;gt; &amp;lt;!-- base 64 encoded binary data is default --&amp;gt;&lt;br /&gt;
&amp;lt;binary /&amp;gt; &amp;lt;!-- empty binary blob --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== date ===&lt;br /&gt;
A specific point in time. Intervals or relative dates are not supported. The serialization and parser only understand ISO-8601 numeric encoding in UTC. The time may be omitted which will be interpreted as midnight at the start of the day. &lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
|boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|integer||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|real||seconds since epoch||&lt;br /&gt;
|-&lt;br /&gt;
|uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
|binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
|date||unity||&lt;br /&gt;
|-&lt;br /&gt;
|uri||n/a||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;date&amp;gt;2006-02-01T14:29:53.43Z&amp;lt;/date&amp;gt;&lt;br /&gt;
&amp;lt;date /&amp;gt; &amp;lt;!-- epoch --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uri ===&lt;br /&gt;
A link to an external resource. The data is expected to conform to [http://www.ietf.org/rfc/rfc2396.txt rfc 2396] for interpretation, meaning, serialization, and deserialization.&lt;br /&gt;
==== Conversion ====&lt;br /&gt;
{|&lt;br /&gt;
||&#039;&#039;&#039;type&#039;&#039;&#039;||&#039;&#039;&#039;rules&#039;&#039;&#039;||&lt;br /&gt;
|-&lt;br /&gt;
||boolean||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||integer||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||real||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uuid||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||string||standard serialization format||&lt;br /&gt;
|-&lt;br /&gt;
||binary||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||date||n/a||&lt;br /&gt;
|-&lt;br /&gt;
||uri||unity||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Serialization examples ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;uri&amp;gt;http://sim956.agni.lindenlab.com:12035/runtime/agents&amp;lt;/uri&amp;gt;&lt;br /&gt;
&amp;lt;uri /&amp;gt; &amp;lt;!-- an empty link --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Containers ==&lt;br /&gt;
Containers is a special data type which can contain any other data type including other containers.&lt;br /&gt;
&lt;br /&gt;
=== map ===&lt;br /&gt;
A map of key and value pairs where key ordering is unspecified and keys are unique. The key is always interpreted as a character string and any character string is acceptable. If there are any elements in the map, it is serialized as a key followed by an atomic or container value. For every key, there must be one value.&lt;br /&gt;
Well formed and valid serialized maps may contain more non-unique keys. When a deserialized, the implementation should choose one of the the value objects, but that choice is not specified.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;foo&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;bar&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;agent info&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;uuid&amp;gt;93c73b16-cd86-434d-8b4a-76e12eee950a&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;name&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;testtest tester&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== array ===&lt;br /&gt;
An ordered collection of data members. Any member can be any atomic or container type.&lt;br /&gt;
==== Serialization example ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;array&amp;gt;&lt;br /&gt;
 &amp;lt;real&amp;gt;7343.0194&amp;lt;/real&amp;gt;&lt;br /&gt;
 &amp;lt;array&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;offset&amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;integer&amp;gt;9847&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;da boom&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XML Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When possible, prefer using us-ascii or or UTF-8 xml encoding.&lt;br /&gt;
&lt;br /&gt;
XML is the &amp;quot;standard&amp;quot; serialization format, being future-proof and readable by a wide variety of tools. The XML serialization should be preferred unless profiling reveals that the [[#Binary_Serialization | binary serialization]] provides an essential performance benefit.  All the serialization examples in the above sections are of the XML serialization.&lt;br /&gt;
&lt;br /&gt;
== DTD ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;&amp;lt;!DOCTYPE llsd [&lt;br /&gt;
&amp;lt;!ELEMENT llsd (DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DATA (ATOMIC|map|array)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ATOMIC (undef|boolean|integer|real|uuid|string|date|uri|binary)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT KEYDATA (key,DATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT key (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT map (KEYDATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT array (DATA*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT undef (EMPTY)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT boolean (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT integer (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT real (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uuid (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT string (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT date (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT uri (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT binary (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST string xml:space (default|preserve) &#039;preserve&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST binary encoding (base64|base16) &#039;base64&#039;&amp;gt;&lt;br /&gt;
]&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example XML Output ==&lt;br /&gt;
This is a sample from a recently running sim (indention for readability):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.6em;&amp;quot;&amp;gt;&amp;lt;xml&amp;gt;$ curl http://localhost:12035/runtime/statistics&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
&amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;region_id&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;uuid&amp;gt;67153d5b-3659-afb4-8510-adda2c034649&amp;lt;/uuid&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;scale&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;one minute&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;simulator statistics&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;time dilation&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.9878624&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38898&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pysics fps&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;44.38906&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent updates per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;nan&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;lsl instructions per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;total task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active task count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;active script count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;main agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;child agent count&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;inbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.228283&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;outbound packets per second&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;1.277508&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending downloads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;pending uploads&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.0001096525&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;frame ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.7757886&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;net ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.3152919&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim other ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1826937&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;sim physics ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.04323055&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;agent ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01599029&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;image ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.01865955&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;script ms&amp;lt;/key&amp;gt;&amp;lt;real&amp;gt;0.1338836&amp;lt;/real&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/xml&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Binary Serialization =&lt;br /&gt;
MIME type: &amp;lt;code&amp;gt;application/llsd+binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We also have support for binary serialization and deserialization in c++ and python. The binary format is useful when dealing where optimal parse time is necessary. Binary LLSD is the binary llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/binary?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &#039;1&#039;&lt;br /&gt;
|-&lt;br /&gt;
| false || &#039;0&#039;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; + htonl(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; + htond(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; + uuid || uuid is 16 bytes&lt;br /&gt;
|-&lt;br /&gt;
| binary || &#039;b&#039; + htonl(binary.size()) + binary&lt;br /&gt;
|-&lt;br /&gt;
| string || &#039;s&#039; + htonl(string.size()) + string || notation serialization is considered valid&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&#039; + htonl(uri.size()) + uri&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&#039; + htond(seconds_since_epoch)&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; + htonl(array.length()) + (child0, child1, ...) + &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; + htonl(map.length()) + ((key0,value0), (key1, value1), ...)+ &#039;}&#039; || order is not always preserved.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;size()&amp;lt;/b&amp;gt; is a byte count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;length()&amp;lt;/b&amp;gt; is a child count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htonl()&amp;lt;/b&amp;gt; is a function to generate a 4 byte network byte order integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;htond()&amp;lt;/b&amp;gt; is a function to generate an 8 byte network byte order double. htond is not a standard system call, but you can find a c implementation in &amp;lt;code&amp;gt;indra/llcommon/llsdserialize.cpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Notation Serialization =&lt;br /&gt;
We also have support for a serialization format meant for human readability. Parsing and formatting are currently only available in c++. Notation LLSD is the notation llsd prefix followed by a single LLSD element of any type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?llsd/notation?&amp;gt;\n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Binary element serialization&lt;br /&gt;
! type !! serialization !! notes&lt;br /&gt;
|-&lt;br /&gt;
| undef || &#039;!&#039;&lt;br /&gt;
|-&lt;br /&gt;
| true || &amp;lt;nowiki&amp;gt;&#039;1&#039; |  &#039;t&#039; | &#039;T&#039; | &#039;true&#039; | &#039;TRUE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| false || &amp;lt;nowiki&amp;gt;&#039;0&#039; |  &#039;f&#039; | &#039;F&#039; | &#039;false&#039; | &#039;FALSE&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| integer || &#039;i&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| real || &#039;r&#039; str(value)&lt;br /&gt;
|-&lt;br /&gt;
| uuid || &#039;u&#039; str(uuid)&lt;br /&gt;
|-&lt;br /&gt;
| binary || &amp;lt;nowiki&amp;gt;&#039;b(&#039; str(size) &#039;)&amp;quot;&#039;  raw_data &#039;&amp;quot;&#039; | &#039;b&#039; base &#039;&amp;quot;&#039; encoded_data &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt;  || Base 16 and 64 encodings are supported.&lt;br /&gt;
|-&lt;br /&gt;
| string || &amp;lt;nowiki&amp;gt;&amp;quot; escaped_string &amp;quot; | &#039; escaped_string &#039; | &#039;s(&#039; str(size) &#039;)&amp;quot;&#039; raw_string &#039;&amp;quot;&#039;&amp;lt;/nowiki&amp;gt; || When using single quotes, double quotes do not need escaping and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
| uri || &#039;l&amp;quot;&#039; escaped_uri &#039;&amp;quot;&#039; || See [http://www.faqs.org/rfcs/rfc1738.html rfc 1738] for encoding rules.&lt;br /&gt;
|-&lt;br /&gt;
| date || &#039;d&amp;quot;&#039; YYYY-MM-DD &#039;T&#039; HH:MM:SS [.FF] &#039;Z&amp;quot;&#039; || Fractional seconds are optional&lt;br /&gt;
|-&lt;br /&gt;
| array || &#039;[&#039; object0 &#039;,&#039; object1 &#039;,&#039; ... &#039;]&#039; || order is always preserved&lt;br /&gt;
|-&lt;br /&gt;
| map || &#039;{&#039; string0:object0 &#039;,&#039; string1:object1 &#039;,&#039; ... &#039;}&#039; || order is not always preserved. The string is any supported string serialization format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== String Escaping ==&lt;br /&gt;
Strings which contain non-printable characters delimited with quotes or double quotes require escaping. If a single quote delimited string contains single quotes, those must be escaped. If a double quote delimited string contains double quotes, the double quotes must be escaped.&lt;br /&gt;
&lt;br /&gt;
To escape the delimiter character, prefix a backslash. Backslashes must always be escaped with another backslash.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;And then he said, \&amp;quot;I have nothing more to say on the subject.\&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &#039;Look in &amp;quot;C:\\linden\\&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
The most generic escaping is to specify a hex value of the byte after a literal backslash and character &#039;x&#039;. This can be used for any character and is required for all non-printable characters which do not have an abbreviation. For example:&lt;br /&gt;
&lt;br /&gt;
  \x0C&lt;br /&gt;
&lt;br /&gt;
Serialized strings should only contain UTF-8 characters, so non-printable characters other than tab, newline, and carriage return should be avoided. However, common non-printable characters have short-hand abbreviations.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Notation abbreviations&lt;br /&gt;
! character !! value !! serialization&lt;br /&gt;
|-&lt;br /&gt;
| alert/bell ||  0x7 || \a&lt;br /&gt;
|-&lt;br /&gt;
| backspace || 0x8 || \b&lt;br /&gt;
|-&lt;br /&gt;
| form feed || 0xc || \f&lt;br /&gt;
|-&lt;br /&gt;
| newline || 0xa || \n&lt;br /&gt;
|-&lt;br /&gt;
| carriage return || 0xd || \r&lt;br /&gt;
|-&lt;br /&gt;
| horizontal tab || 0x9 || \t&lt;br /&gt;
|-&lt;br /&gt;
| vertical tab || 0xb || \v&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example Notation Output ==&lt;br /&gt;
This is an excerpt from an agent request to enter a region serialized as notation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&#039;destination&#039;:&#039;http://secondlife.com&#039;}, &lt;br /&gt;
  {&#039;version&#039;:i1}, &lt;br /&gt;
  {&lt;br /&gt;
    &#039;agent_id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730, &lt;br /&gt;
    &#039;session_id&#039;:u2c585cec-038c-40b0-b42e-a25ebab4d132, &lt;br /&gt;
    &#039;circuit_code&#039;:i1075, &lt;br /&gt;
    &#039;first_name&#039;:&#039;Phoenix&#039;, &lt;br /&gt;
    &#039;last_name&#039;:&#039;Linden&#039;,&lt;br /&gt;
    &#039;position&#039;:[r70.9247,r254.378,r38.7304], &lt;br /&gt;
    &#039;look_at&#039;:[r-0.043753,r-0.999042,r0], &lt;br /&gt;
    &#039;granters&#039;:[ua2e76fcd-9360-4f6d-a924-000000000003],&lt;br /&gt;
    &#039;attachment_data&#039;:&lt;br /&gt;
    [&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i2,&lt;br /&gt;
        &#039;item_id&#039;:ud6852c11-a74e-309a-0462-50533f1ef9b3,&lt;br /&gt;
        &#039;asset_id&#039;:uc69b29b1-8944-58ae-a7c5-2ca7b23e22fb&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &#039;attachment_point&#039;:i10, &lt;br /&gt;
        &#039;item_id&#039;:uff852c22-a74e-309a-0462-50533f1ef900,&lt;br /&gt;
        &#039;asset_id&#039;:u5868dd20-c25a-47bd-8b4c-dedc99ef9479&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &#039;creation-date&#039;:d&amp;quot;2007-03-15T18:30:18Z&amp;quot;, &lt;br /&gt;
    &#039;creator-id&#039;:u3c115e51-04f4-523c-9fa6-98aff1034730&lt;br /&gt;
  },&lt;br /&gt;
  s(10)&amp;quot;0123456789&amp;quot;,&lt;br /&gt;
  &amp;quot;Where&#039;s the beef?&amp;quot;,&lt;br /&gt;
  &#039;Over here.&#039;,  &lt;br /&gt;
  b(160)&amp;quot;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;,&lt;br /&gt;
  b64&amp;quot;AABAAAAAAAAAAAIAAAA//wAAP/8AAADgAAAA5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AABkAAAAZAAAAAAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAQAAAAAAAA&lt;br /&gt;
AAUAAAAFAAAAABAAAAAAAAAAPgAAAAQAAAAFAGNbXgAAAABgSGVsbG8sIEF2YXRhciEAZgAAAABc&lt;br /&gt;
XgAAAAhwEQjRABeVAAAABQBjW14AAAAAYFRvdWNoZWQuAGYAAAAAXF4AAAAIcBEI0QAXAZUAAEAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&amp;quot; &lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Guidelines =&lt;br /&gt;
&lt;br /&gt;
=== Questions &amp;amp; Things To Do ===&lt;br /&gt;
&lt;br /&gt;
Would Binary be more convenient as usigned char* buffer semantics?&lt;br /&gt;
&lt;br /&gt;
Should Binary be convertable to/from String, and if so how?&lt;br /&gt;
* as UTF8 encoded strings (making not like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
* as Base64 or Base96 encoded (making like UUID&amp;lt;-&amp;gt;String)&lt;br /&gt;
&lt;br /&gt;
Conversions to std::string and LLUUID do not result in easy assignment to std::string, LLString or LLUUID due to non-unique conversion paths.&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:OGP_LLSD&amp;diff=94145</id>
		<title>Talk:OGP LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:OGP_LLSD&amp;diff=94145"/>
		<updated>2008-10-01T22:51:58Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add an unsigned 32-bit integer type to LLSD. LLSD XML human readability is shot when it comes to uints, and a lot of time is spent doing the Base64 encoding/decoding. See [http://jira.secondlife.com/browse/MU-18 MU-18]. --[[User:Eddy Stryker|Eddy Stryker]] 17:53, 30 September 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eddy... &lt;br /&gt;
&lt;br /&gt;
# how much is &amp;quot;a lot of time&amp;quot; ?&lt;br /&gt;
# what is the alternative binary encoding that you&#039;re recommending?&lt;br /&gt;
# wrt integer encoding.. can&#039;t you just assume two&#039;s complement and convert negative values to positive ones?&lt;br /&gt;
&lt;br /&gt;
-- [[User:Infinity Linden|Infinity Linden]] 19:22, 30 September 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hmm.. okay... how&#039;s this for an idea...&lt;br /&gt;
&lt;br /&gt;
LLSD is really supposed to be an abstract syntax *yeah... i know... why are we defining int&#039;s as being signed and 32 bits wide in an abstract syntax* but the XML serialization really is an XML serialization, not the definition of LLSD. Maybe we could specify that concrete implementations of integers MUST support 32 bits of 2s complement integer (as most all modern systems do). We could then add ( signed, unsigned and IPV4) as encodings of the int element of the XML serialization, the same way that we are thinking of supporting base64 and base16 encodings of binary elements. so... where you would have something like this now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;ipAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;binary encoding=&amp;quot;base16&amp;quot;&amp;gt;1501A8C0&amp;lt;/binary&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;unsignedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;/////w==&amp;lt;/binary&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;signedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;-1&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we would have something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;ipAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer encoding=&amp;quot;ipv4&amp;quot;&amp;gt;192.168.1.21&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;unsignedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer encoding=&amp;quot;unsigned&amp;quot;&amp;gt;4294967295&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;signedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;-1&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it is, however, vaguely problematic in that we would have to add annotation to LLIDL to define the preferred encoding of each element.. though we might be able to simply say that this is a detail for implementations, not the definition of LLIDL. -- [[User:Infinity Linden|Infinity Linden]] 15:12, 1 October 2008 (PDT)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:OGP_LLSD&amp;diff=94129</id>
		<title>Talk:OGP LLSD</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:OGP_LLSD&amp;diff=94129"/>
		<updated>2008-10-01T22:33:22Z</updated>

		<summary type="html">&lt;p&gt;Infinity Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add an unsigned 32-bit integer type to LLSD. LLSD XML human readability is shot when it comes to uints, and a lot of time is spent doing the Base64 encoding/decoding. See [http://jira.secondlife.com/browse/MU-18 MU-18]. --[[User:Eddy Stryker|Eddy Stryker]] 17:53, 30 September 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eddy... &lt;br /&gt;
&lt;br /&gt;
# how much is &amp;quot;a lot of time&amp;quot; ?&lt;br /&gt;
# what is the alternative binary encoding that you&#039;re recommending?&lt;br /&gt;
# wrt integer encoding.. can&#039;t you just assume two&#039;s complement and convert negative values to positive ones?&lt;br /&gt;
&lt;br /&gt;
-- [[User:Infinity Linden|Infinity Linden]] 19:22, 30 September 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hmm.. okay... how&#039;s this for an idea...&lt;br /&gt;
&lt;br /&gt;
LLSD is really supposed to be an abstract syntax *yeah... i know... why are we defining int&#039;s as being signed and 32 bits wide in an abstract syntax* but the XML serialization really is an XML serialization, not the definition of LLSD. Maybe we could specify that concrete implementations of integers MUST support 32 bits of 2s complement integer (as most all modern systems do). We could then add ( signed, unsigned and IPV4) as encodings of the int element of the XML serialization, the same way that we are thinking of supporting base64 and base16 encodings of binary elements. so... where you would have something like this now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;ipAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;binary encoding=&amp;quot;base16&amp;quot;&amp;gt;1501A8C0&amp;lt;/binary&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;unsignedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;binary encoding=&amp;quot;base64&amp;quot;&amp;gt;/////w==&amp;lt;/binary&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;signedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;int&amp;gt;-1&amp;lt;/int&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we would have something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;ipAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;int encoding=&amp;quot;ipv4&amp;quot;&amp;gt;192.168.1.21&amp;lt;/int&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;unsignedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;int encoding=&amp;quot;unsigned&amp;quot;&amp;gt;4294967295&amp;lt;/int&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;signedInteger&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;int&amp;gt;-1&amp;lt;/int&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it is, however, vaguely problematic in that we would have to add annotation to LLIDL to define the preferred encoding of each element.. though we might be able to simply say that this is a detail for implementations, not the definition of LLIDL. -- [[User:Infinity Linden|Infinity Linden]] 15:12, 1 October 2008 (PDT)&lt;/div&gt;</summary>
		<author><name>Infinity Linden</name></author>
	</entry>
</feed>