<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel">
    <title>gmane.comp.lang.smalltalk.croquet.devel</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3961"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3960"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3959"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3958"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3957"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3956"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3954"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3953"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3952"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3951"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3950"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3949"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3948"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3947"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3946"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3945"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3944"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3943"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3942"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3940"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3961">
    <title>Re: Hard to find instance variables in Croquet.</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3961</link>
    <description>
Thanks. When stepping through code with the debugger, do those "fields"
behave correctly? How do I inspect their values in the debugger?

Aik-Siong Koh




John Dougan wrote:

</description>
    <dc:creator>askoh</dc:creator>
    <dc:date>2008-12-03T17:44:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3960">
    <title>Re: Hard to find instance variables in Croquet.</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3960</link>
    <description>They're almost certainly not instance vars, but "fields".   Fields are
something like instance vars but they are represented in the myProperties
dict in the CObject. If a field is not used it won't take up storage in the
dict.  Tweak uses a modified compiler that translates variable reference
syntax into accessor message sends and creates accessors automatically so
that the vars are never actually accessed directly.
So in Tweak: (assuming that foo is not a method temporary var)
    foo := self bar: 4 + 5.
    self foo: (self bar: 4 + 5).
do pretty much the same thing in the bytecode. This is useful as it means
that it's hard to accidentally bypass the event mechanisms in Tweak.

If you browse a subclass of CObject and right click on one of the instance
vars you'll see a pop up giving you the options for the var.  The
color/emphasis of the var name tells you what kind of var it is.

Some description of the fields is at
http://tweakproject.org/TECHNOLOGY/Tutorials/BankAccountTutorial/ and at
http://tweakprojec</description>
    <dc:creator>John Dougan</dc:creator>
    <dc:date>2008-12-03T09:41:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3959">
    <title>Hard to find instance variables in Croquet.</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3959</link>
    <description>
There seem to be many instance variables in the class CPlayer that are not
showing up in the debugger and 'show hierarchy'. Why? Is this a known bug or
something special?

Aik-Siong Koh
</description>
    <dc:creator>askoh</dc:creator>
    <dc:date>2008-12-03T07:46:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3958">
    <title>FreeType fonts</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3958</link>
    <description>I managed to get the FreeType fonts package installed in John's latest
cobalt image.

It was a bit of a hassle. The SqueakMap gave me a bunch of errors when I
loaded the 0.4 FreeType Plus package, and I used the list to copy and paste
the offending methods from a Squeak 3.10 image, but it worked. I was
actually very impressed that it was able to change fundamental behavior on
the various scanner classes without kicking the image out from under me.
Kudos to whoever figured out how to make that work!

Now I would like to package my changes back up and publish them to a
monticello repository somewhere. I thought I'd be able to just reload the
packages and find them in an MC change set.

Any suggestions on how to do this? I probably loaded this up completely
incorrectly, but my fonts look better now. They do seem to be a bit fuzzy
but I'm not sure if that's the fonts, my monitor or something I did to my
eyes in the past hour :)

Steve
</description>
    <dc:creator>Steve Wart</dc:creator>
    <dc:date>2008-11-29T00:56:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3957">
    <title>New Cobalt Release for 20081120</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3957</link>
    <description>Hi,
I noticed a little less system load (minus 5-8%) with this new version.

My machines specs are...
Celeron-M 2GHz, 1024Mb, GeForce FX5200

and I'm running Cobalt on Ubuntu Linux 8.04 with the latest binary drivers from
NVidias website.

Regards...
Th. Braun

</description>
    <dc:creator>tb&lt; at &gt;tcltalk.ath.cx</dc:creator>
    <dc:date>2008-11-26T15:12:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3956">
    <title>OpenAL Harness</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3956</link>
    <description>Did you ever wonder if OpenALHarness belongs in the CroquetHarness class
hierarchy? I wanted to test the sound stuff independently of Croquet, so I
made a sound player class and I needed a harness to hold the OpenAL so I
copied OpenALHarness out and deleted the voice chat code that was
referencing the avatar instance variable. It was easy to do, and I had the
impression that it was never designed to fit that way to begin with.

It seems the original CroquetHarness is quite nice with lots of helpful
comments and it doesn't seem that a deep hierarchy of classes is the right
way to organize this code.

Has anyone been looking at refactoring this? Should I give it a go? Or maybe
it's a paragon of clarity and I just haven't yet achieved enlightenment...

Steve
</description>
    <dc:creator>Steve Wart</dc:creator>
    <dc:date>2008-11-21T18:34:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3954">
    <title>Re: TBoundSphere performance</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3954</link>
    <description>
Since we are on the topic of TBoundSphere, dont mind me asking one question.
I have a problem working with TMesh which is related to the TBoundSphere and
its picking. My situation is described below:-

I have a few meshes created with TMesh by specifying the vertices, normals
and texture coordinates. When I add all the meshes under 1 TGroup class, the
boundSphere and picking seems to work fine. 

The problem comes when I have a hierarchy of several TGroup classes and the
TMesh are added into the lowest part. An example would be
Model&gt;Geo&gt;Mesh&gt;Triangle where Model, Geo and Mesh (there can be several Geo
and Mesh objects) are subclasses of  TGroups and Triangle is the created
TMesh. When done this way, the TMesh objects cannot be picked or displayed
properly (invisible at certain angle and distance), I suspect its a problem
with the TBoundSphere. Anyone encounter this problem? 

Additional information to this scenario :-

-initBounds is sent to the Model class only after all the TMesh objects are
created and </description>
    <dc:creator>Phua Khai Fong</dc:creator>
    <dc:date>2008-11-17T21:53:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3953">
    <title>Re: TBoundSphere performance</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3953</link>
    <description>Thanks David,

I am also thinking of pre-calculating the spheres to cache them with my
meshes.

The hit-testing is fast, it's the initial creation that's expensive.

Moving this complex code into C is a bit daunting, although I found a few
free(ish) libraries that can take an arbitrary vector of 3d points and
return the center and radius of a minimal (or close to it) sphere containing
the points. Since we are doing most everything else in Smalltalk that might
also provide a nice win. We are creating a large number of objects in this
method, but as you say, it is only invoked at certain times.

I am activating about 200 frames when I enter a new space and the bounds
init is taking on the order of 500ms to 3000ms for each one.

Steve

On Mon, Nov 17, 2008 at 11:53 AM, David P. Reed &lt;dpreed&lt; at &gt;reed.com&gt; wrote:

</description>
    <dc:creator>Steve Wart</dc:creator>
    <dc:date>2008-11-17T20:08:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3952">
    <title>Re: TBoundSphere performance</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3952</link>
    <description>It's not surprising that so much time is spent on this.   It takes the 
mesh and creates a tight sphere-covering to accelerate ray intersection 
testing.

It's possible to trade space for time by storing the resulting 
sphere-tree with the mesh source, rather than recalculating it at load 
time.   But the storage space explosion factor is enormous, and it's not 
clear whether reading in the sphere-tree wouldn't be slow due to file 
reading (it certainly is slow to send across a slowish network).

You could get a constant factor by just making a primitive out of a few 
of the inner loops, or even much better improvement by using CUDA 
organized parallelized code (nice research project).

Alternatively, and probably much better, change the ray-mesh 
intersection code (the only client for the sphere-tree) by subclassing 
the operation by known techniques optimiized for your mesh's 
properties.  OOP is designed for this!



Steve Wart wrote:

</description>
    <dc:creator>David P. Reed</dc:creator>
    <dc:date>2008-11-17T19:53:09</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3951">
    <title>TBoundSphere performance</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3951</link>
    <description>Hi,

I have some large meshes that are taking a long time to activate. It looks
like a lot of the time is spent in a method called initBounds, which in turn
is spending a lot of time in TBoundSphere&gt;&gt;calcTree:faces:depth:

Have there been any efforts in optimizing this method (e.g. making it a
primitive)?

Any suggestions on how to approach this? Slang? FFI? Something more clever?

Steve
</description>
    <dc:creator>Steve Wart</dc:creator>
    <dc:date>2008-11-17T17:48:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3950">
    <title>Re: New Cobalt Release for 20081112</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3950</link>
    <description>
Here's a quick hack to get him facing the other way:

In 'TLoadOgreMesh&gt;&gt;buildMesh' comment out the line 'theMesh
addRotationAroundY: 180.0'. It's the second to last statement in the method.


Mark P. McCahill-2 wrote:

</description>
    <dc:creator>pshouse</dc:creator>
    <dc:date>2008-11-15T20:52:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3949">
    <title>Strange problem in my harness</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3949</link>
    <description>I'm trying to get up to speed on the master/participant model in croquet and
have run into a few problems with process interactions and was wondering if
anyone can suggest what might be going on.

I have a method where my AvatarUser is entering a new space and it calls a
TTeleportUtilities method makePortalToAnotherWorld.

In that method, it tries to connect to a postcard using the following
snippet:

    harness := Processor activeIsland project ownerMorph harness.

It quite often comes back with nil. When I step into the code occasionally
there's my harness, and occasionally it's not.

Any pointers on where I can find out how this stuff is supposed to be wired
together?

Thanks,
Steve
</description>
    <dc:creator>Steve Wart</dc:creator>
    <dc:date>2008-11-15T01:08:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3948">
    <title>New KMZ Importer Release 0.2</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3948</link>
    <description>
Download the package 
http://croquet-src-01.oit.duke.edu:8886/KMZImporter/Collada-kayef.22.mcz
here 

Package requires  http://croquet-src-01.oit.duke.edu/cobalt.html
Cobalt20081112  and above.

Demo video can be viewed  http://www.youtube.com/watch?v=mGCLMkYYY6s here 

More info at  http://www.oopgames.com/freecad/release-kmz-importer-ver-02
http://www.oopgames.com/freecad/release-kmz-importer-ver-02 

Feedback will be most appreciated!!

Regards,
Fong
</description>
    <dc:creator>Phua Khai Fong</dc:creator>
    <dc:date>2008-11-14T14:59:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3947">
    <title>Re: FloatingPointException</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3947</link>
    <description>Of course you are right, Josh,  I didn't realize that the function in
question was a library function, so that is why I made the suggestion I
did.

Regards,
Les H
On Wed, 2008-11-12 at 01:05 -0800, Joshua Gargus wrote:


</description>
    <dc:creator>Les</dc:creator>
    <dc:date>2008-11-14T14:57:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3946">
    <title>Re: New Cobalt Release for 20081112</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3946</link>
    <description>Rats, I was worried about that.  Which hardware do you have? Use glview if
you can (link in the 2008-12-11 notice) and post the xml save file, or
glxinfo if you can't and post it's output.

Thanks,
 -- John

On Thu, Nov 13, 2008 at 19:01, askoh &lt;askoh&lt; at &gt;askoh.com&gt; wrote:



</description>
    <dc:creator>John Dougan</dc:creator>
    <dc:date>2008-11-14T03:11:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3945">
    <title>Re: New Cobalt Release for 20081112</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3945</link>
    <description>
I got the following error:
GL_ARB_vertex_buffer_object is not present
</description>
    <dc:creator>askoh</dc:creator>
    <dc:date>2008-11-14T03:01:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3944">
    <title>Re: New Cobalt Release for 20081112</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3944</link>
    <description>
On Nov 13, 2008, at 1:19 AM, Andreas Raab wrote:


I assume this is because virtual Ninja warriors never willingly turn  
their backs on players like Andreas who are holding weaponized mice ;-)

I think that Ninja is in a total-player-distrust coordinate system -  
he always faces me, too



</description>
    <dc:creator>Mark P. McCahill</dc:creator>
    <dc:date>2008-11-13T16:30:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3943">
    <title>Question about tutorial</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3943</link>
    <description>Dear Croquet-Dev,

  I've seen the tutorial at:

http://opencroquet.org/index.php/Island_Creator/Blender_Basic_Lessons_TO
C

it's very interesting and detailed, it's great! The part to which I'm
nost interested is the lesson:

 

Blender Basic Lessons TOC

(http://opencroquet.org/index.php/Island_Creator/Blender_Basic_Lessons_T
OC)

 

Unfortunately it is not complete.. Could you please help me to
understand:

 

- how it is possible to create the 3D "panels" containing informations

 

- what else 3D panels can do 

 

- which is the effort required to develop custom 3D objects with
"custom" behaviour, for example:

   A panel shows a picture, when the user clicks on it it shows
"information" (doc/pdf,etc...) - or if this is already available

 

- if "putting a new object" into the world requires programming, or it
could be done via a graphical interface by a not-programmer user.

 

Thanks in Advance,

Best Regards,

Elisabetta

 

 

</description>
    <dc:creator>Parodi Elisabetta</dc:creator>
    <dc:date>2008-11-13T11:22:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3942">
    <title>Re: New Cobalt Release for 20081112</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3942</link>
    <description>Much better! And you even got the download link right ;-) The avatar 
animation works great btw on my little box with no shader support. The 
only thing I was wondering about is that the default ninja (?) is 
pointed towards the viewer. I'm not sure if this is intentional or if 
it's a problem with the software version but other than that this 
version works fine. Good job!

Cheers,
   - Andreas

John Dougan wrote:

</description>
    <dc:creator>Andreas Raab</dc:creator>
    <dc:date>2008-11-13T06:19:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3940">
    <title>Re: FloatingPointException</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3940</link>
    <description>
We seem to be veering off into wild speculation.  Let's see if we can
avoid doing so...

There are two methods that Les might be talking about when he was "just
examining the code again":
    - FloatArray&gt;&gt;dot:
    - FloatArrayPlugin&gt;&gt;primitiveDotProduct:

I'm assuming that we're talking about FloatArray&gt;&gt;dot:, since that's the
one that is indexed from 1 to size.  It's easy to verify that this is
the way that FloatArray is supposed to be used.  Try evaluating the
following expressions:

#(1 2 3) asFloatArray at: 1 "answers 1.0"
#(1 2 3) asFloatArray at: 2 "answers 2.0"
#(1 2 3) asFloatArray at: 3 "answers 3.0"
#(1 2 3) asFloatArray at: 0 "error"
#(1 2 3) asFloatArray at: 4 "error"

So, if we are executing the Smalltalk code in FloatArray&gt;&gt;dot:, we can't
do an out-of-bounds access.

However, note that under normal conditions, the Smalltalk code in
FloatArray&gt;&gt;dot: will never be executed.  Instead, it will execute the
primitive specified by FloatArrayPlugin&gt;&gt;primitiveDotProduct:.  If
you're not familiar with </description>
    <dc:creator>Joshua Gargus</dc:creator>
    <dc:date>2008-11-12T09:05:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3939">
    <title>Re: New Cobalt Release For 20081111 - Fixed Link</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.croquet.devel/3939</link>
    <description>This version doesn't seem to work at all - it blows up right away 
(SqueakDebug.log attached).

Cheers,
   - Andreas

John Dougan wrote:
Error: attempt to index non-existent element in an ordered collection
11 November 2008 11:28:30 pm

VM: Win32 - a SmalltalkImage
Image: Croquet1.0beta [latest update: #2]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Cobalt\cobalt-base-current-build-20081111
Trusted Dir C:\Cobalt\cobalt-base-current-build-20081111\andreas
Untrusted Dir C:\My Squeak\andreas

OrderedCollection(Object)&gt;&gt;error:
Receiver: an OrderedCollection('Icon' 'Choose another name' 'Cancel')
Arguments and temporary variables: 
aString: 'attempt to index non-existent element in an ordered collection'
Receiver's instance variables: 
array: #(nil nil 'Icon' 'Choose another name' 'Cancel' nil nil nil nil nil)
firstIndex: 3
lastIndex: 5

OrderedCollection&gt;&gt;errorNoSuchElement
Receiver: an OrderedCollection('Icon' 'Choose another name' 'Cancel')
Argu</description>
    <dc:creator>Andreas Raab</dc:creator>
    <dc:date>2008-11-12T07:31:30</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.croquet.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.croquet.devel</link>
  </textinput>
</rdf:RDF>
