[jboss-svn-commits] JBL Code SVN: r34916 - in labs/jbosstm/trunk/XTS/docs: Transactions_XTS_Programmers_Guide and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 27 01:55:05 EDT 2010


Author: misty at redhat.com
Date: 2010-08-27 01:55:04 -0400 (Fri, 27 Aug 2010)
New Revision: 34916

Added:
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/About_This_Guide.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Author_Group.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Book_Info.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Chapter.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Getting_Started.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Introduction.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participant_Crash_Recovery.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participants.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Preface.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Protocols_Overview.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Revision_History.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Stand_Alone_Coordination.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_Overview.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.ent
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/XTS_API.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-PersistableBAParticipant.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSATRecoveryModule.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryManager.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryModule.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-prepare-method.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-register-for-recovery.java
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-interfaces.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-registration.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/schemas.xml
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/icons/
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/icons/icon.svg
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-2pc-participant-state-transitions.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-at-model.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-back-end-pattern.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawcc-state-transitions.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawpc-state-transitions.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-context-handlers-registered-with-soap-server.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-interpositions.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-participant-backend-control.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-two-phase-commit-overview.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-context-flow.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-transaction.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-c-overview.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-trans-services-participants.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-four-roles.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-wst-interop.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/icon.svg
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/ws-trans-global-view.png
   labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/publican.cfg
Log:
Added Docbook version of XTS Development Guide

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/About_This_Guide.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/About_This_Guide.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/About_This_Guide.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  <title>About This Guide</title>
+  <para>
+    The XTS Programmer's Guide explains how to add resilience to distributed
+    business processes based on web services, making them reliable in the event
+    of system or network failures. The &APPSERVER; implements Web
+    Services Transactions standards using <firstterm>XTS (XML Transaction
+    Service)</firstterm>. XTS supports development and deployment of
+    transaction-aware web services. It also enables web service clients to
+    create and manage web service transactions from which transactional web
+    services can be invoked. XTS ensures that the client and web services
+    achieve consistent outcomes even if the systems on which they are running
+    crash or temporarily lose network connectivity.
+  </para>
+  <para>
+    XTS is compliant with the <firstterm>WS-Coordination</firstterm>,
+    <firstterm>WS-Atomic Transaction</firstterm>, and <firstterm>WS-Business
+    Activity</firstterm> specifications. The implementation supports web
+    services and clients which are based on the JaxWS standard. XTS is itself
+    implemented using services based on JaxWS.  While this guide discusses many
+    Web Services standards like SOAP and WSDL, it does not attempt to address
+    all of their fundamental constructs. However, basic concepts are provided
+    where necessary.
+  </para>
+  <section>
+    <title>Audience</title>
+    <para>
+      This guide is most relevant for application developers and Web service developers who are interested in building applications and Web services that are transaction-aware. It is also useful for system analysts and project managers who are unfamiliar with transactions as they pertain to Web services.
+    </para>
+  </section>
+  
+  <section>
+    <title>Prerequisites</title>
+    <para>
+      JBoss Transaction Service uses the Java programming language and this manual assumes that you are familiar with programming in Java. Additional helpful skills are outlined in <xref linkend="prereqs-list" />.
+    </para>
+    <itemizedlist id="prereqs-list">
+      <title>Prerequisite Skills for XTS Developers</title>
+      <listitem><para>A Working knowledge of Web Services, including XML, SOAP, and WSDL</para></listitem>
+      <listitem><para>A general understanding of transactions</para></listitem>
+      <listitem><para>A general understanding of WS-Coordination, WS-Atomic Transaction and WS-Business Activity protocols</para></listitem>
+    </itemizedlist>
+    <para>
+      This guide presents overview information for all of the above. However, to aid in understanding the Web Services component of JBoss Transaction Service, the WS-C<footnote><para><ulink url="http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-tx/WS-Coordination.pdf" /></para></footnote>, WS-Atomic Transaction<footnote><para><ulink url="http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-tx/WS-AtomicTransaction.pdf" /></para></footnote>, and WS-Business Activity<footnote><para><ulink url="http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-tx/WS-BusinessActivity.pdf" /></para></footnote> specifications are discussed in great detail.
+    </para>
+  </section>
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Author_Group.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<authorgroup>
+  <author>
+    <firstname>Andrew</firstname>
+    <surname>Dinn</surname>
+    <affiliation>
+      <orgname>Red Hat</orgname>
+    </affiliation>
+    <email>adinn at redhat.com</email>
+  </author>
+  <author>
+    <firstname>Kevin</firstname>
+    <surname>Connor</surname>
+    <affiliation>
+      <orgname>Red Hat</orgname>
+    </affiliation>
+    <email>kconnor at redhat.com</email>
+  </author>
+  <author>
+    <firstname>Mark</firstname>
+    <surname>Little</surname>
+    <affiliation>
+      <orgname>Red Hat</orgname>
+    </affiliation>
+    <email>mlittle at redhat.com</email>
+  </author>
+</authorgroup>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Book_Info.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<bookinfo id="book-Transactions_XTS_Programmers_Guide-Transactions_XTS_Programmers_Guide">
+	<title>Transactions XTS Development Guide</title>
+	<subtitle>Using the XTS Module of &PRODUCT; to provide Web Services Transactions</subtitle>
+	<productname>&PRODUCT;</productname>
+	<productnumber>&VERSION;</productnumber>
+	<edition>0</edition>
+	<pubsnumber>0</pubsnumber>
+	<abstract>
+		<para>
+		  The XTS Development Guide contains information on how to use JBoss Transaction Service to develop service-based applications that use transaction technology to manage business processes.
+		</para>
+	</abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
+			</imageobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Chapter.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Chapter.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Chapter.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Transactions_XTS_Programmers_Guide-Test_Chapter">
+	<title>Test Chapter</title>
+	<para>
+		This is a test paragraph
+	</para>
+	<section id="sect-Transactions_XTS_Programmers_Guide-Test_Chapter-Test_Section_1">
+		<title>Test Section 1</title>
+		<para>
+			This is a test paragraph in a section
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_XTS_Programmers_Guide-Test_Chapter-Test_Section_2">
+		<title>Test Section 2</title>
+		<para>
+			This is a test paragraph in Section 2
+			<orderedlist>
+				<listitem>
+					<para>
+						listitem text
+					</para>
+				</listitem>
+			</orderedlist>
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Getting_Started.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Getting_Started.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Getting_Started.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,280 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Getting Started</title>
+
+  <indexterm><primary>user transactions</primary></indexterm>
+  <indexterm><primary>business activities</primary></indexterm>
+  <indexterm><primary>context handlers</primary></indexterm>
+  <indexterm><primary>participants</primary></indexterm>
+  <indexterm><primary>service-side handlers</primary></indexterm>
+  <indexterm><primary>JAX-RPC</primary></indexterm>
+  <indexterm><primary>com.arjuna.mw.wst11</primary><secondary>XTS API</secondary></indexterm>
+
+
+  <section>
+    <title>Installing the XTS Service Archive into JBoss Transaction Service</title>
+    <para>
+      XTS, which is the Web Services component of JBoss Transaction Service, provides WS-AT and WS-BA support for Web Services hosted on the &APPSERVER;. The module is packaged as a <firstterm>Service Archive (.sar)</firstterm> located in <filename><replaceable>$JBOSS_HOME</replaceable>/docs/examples/transactions/</filename>. To install it, follow <xref linkend="procedure-install-xts" />.
+    </para>
+
+    <procedure id="procedure-install-xts">
+      <title>Installing the XTS Module</title>
+      <step>
+	<para>
+	  Create a sub-directory in the <filename><replaceable>$JBOSS_HOME</replaceable>/server/[<replaceable>name</replaceable>]/deploy/</filename> directory, called <filename>jbossxts.sar/</filename>.
+	</para>
+      </step>
+      <step>
+	<para>
+	  Unpack the SAR, which is a ZIP archive, into this new directory.
+	</para>
+      </step>
+      <step>
+	<para>
+	  Restart &APPSERVER; to activate the module.
+	</para>
+      </step>
+    </procedure>
+  </section>
+  
+  <section>
+    <title>Creating Client Applications</title>
+
+    <para>
+      There are two aspects to a client application using XTS, the transaction declaration aspects, and the business logic. The business logic includes the invocation of Web Services.
+    </para>
+    <para>
+      Transaction declaration aspects are handled automatically with the XTS client API. This API provides simple transaction directives such as <methodname>begin</methodname>, <methodname>commit</methodname>, and <methodname>rollback</methodname>, which the client application can use to initialize, manage, and terminate transactions. Internally, this API uses SOAP to invoke operations on the various WS-C, WS-AT and WS-BA services, in order to create a coordinator and drive the transaction to completion.
+    </para>
+
+    <section>
+      <title>User Transactions</title>
+      <para>
+	A client uses the <classname>UserTransactionFactory</classname> and <classname>UserTransaction</classname> classes to create and manage WS-AT transactions.  These classes provide a simple API which operates in a manner similar to the JTA API. A WS-AT transaction is started and associated with the client thread by calling the <methodname>begin</methodname> method of the <methodname>UserTransaction</methodname> class. The transaction can be committed by calling the <methodname>commit</methodname> method, and rolled back by calling the <methodname>rollback</methodname> method.
+      </para>
+      <para>
+	More complex transaction management, such as suspension and resumption of transactions, is supported by the <classname>TransactionManagerFactory</classname> and <classname>TransactionManager</classname> classes.
+      </para>
+      <para>
+	Full details of the WS-AT APIs are provided in <xref linkend="sec-xts-api" />.
+      </para>
+    </section>
+
+    <section>
+      <title>Business Activities</title>
+
+      <para>
+	A client creates and manages Business Activities using the <classname>UserBusinessActivityFactory</classname> and <classname>UserBusinessActivity</classname> classes. A WS-BA activity is started and associated with the client thread by calling the <methodname>begin</methodname> method of the <methodname>UserBusinessActivity</methodname> class. A client can terminate a business activity by calling the <methodname>close</methodname> method, and cancel it by calling the <methodname>cancel</methodname> method.
+      </para>
+      <para>
+	If any of the Web Services invoked by the client register for the  <systemitem>BusinessActivityWithCoordinatorCompletion</systemitem> protocol, the client can call the <methodname>completed</methodname> method before calling the <methodname>close</methodname> method, to notify the services that it has finished making service invocations in the current activity.
+      </para>
+      <para>
+	More complex business activity management, such as suspension and resumption of business activities, is supported by the <classname>BusinessActivityManagerFactory</classname> and <classname>BusinessActivityManager</classname> classes.
+      </para>
+      <para>
+	Full details of the WS-AT APIs are provided in <xref linkend="sec-xts-api" />.
+      </para>
+    </section>
+
+    <section>
+      <title>Client-Side Handler Configuration</title>
+
+      <para>
+	XTS does not require the client application to use a specific API to perform invocations on transactional Web Services. The client is free to use any appropriate API to send SOAP messages to the server and receive SOAP responses.  The only requirements imposed on the client are:
+      </para>
+      <itemizedlist>
+	<listitem>
+	  <para>
+	    It must forward details of the current transaction to the server when invoking a web service.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    It must process any responses from the server in the context of the correct transaction.
+	  </para>
+	</listitem>
+      </itemizedlist>
+      <para>
+	In order to achieve this, the client must insert details of the current XTS context into the headers of outgoing SOAP messages, and extract the context details from the headers of incoming messages and associate the context with the current thread. To simplify this process, the XTS module includes handlers which can perform this task automatically. These handlers are designed to work with JAX-WS clients.
+      </para>
+      
+      <note>
+	<para>
+	  If you choose to use a different SOAP client/server infrastructure for business service invocations, you must provide for header processing. XTS only provides interceptors for or JAX-WS. A JAX-RPC handler is provided only for the 1.0 implementation.
+	</para>
+      </note>
+      <!--
+      <section>
+	<title>JAX-RPC Client Context Handlers</title>
+	<para>
+	  To register the JAX-RPC client-side context handler used by the client applications, a handler chain must be included in the definition of the <varname>service-ref</varname> in the client's <filename>web.xml</filename> deployment descriptor.  Please refer to the example application located in <filename>ddrpc/jboss/client-web-app.xml</filename> for an example of such a handler.
+	</para>
+	<para>
+	  You need to instantiate the <classname>com.arjuna.mw.wst11.client.JaxRPCHeaderContextProcessor</classname> class  when registering a JAX-RPC client context handler.
+	</para>
+	<note>
+	  <para>
+	    A JAX-RPC client handler is not provided for the 1.1 implementation.
+	  </para>
+	</note>
+      </section>
+      -->
+      <section>
+	<title>JAX-WS Client Context Handlers</title>
+	<para>
+	  In order to register the JAX-WS client-side context handler, the client application uses the APIs provided by the <classname>javax.xml.ws.BindingProvider</classname> and <classname>javax.xml.ws.Binding</classname> classes, to install a handler chain on the service proxy which is used to invoke the remote endpoint. Refer to the example application client implementation located in the <filename>src/com/jboss/jbosstm/xts/demo/BasicClient.java</filename> file for an example.
+	</para>
+	<para>
+	  You can also specify the handlers by using a configuration file deployed with the application. The file is identified by attaching a <systemitem>javax.jws.HandlerChain</systemitem> annotation to the interface class, which declares the JAX-WS client API. This interface is normally generated from the web service WSDL port definition.
+	</para>
+	<para>
+	  You need to instantiate the <classname>com.arjuna.mw.wst11.client.JaxWSHeaderContextProcessor</classname> class when registering a JAX-WS client context handler.
+	</para>
+	<!--
+	<note>
+	  <para>
+	    The class used in the 1.1 implementation is <classname>com.arjuna.mw.wst11.client.JaxWSHeaderContextProcessor</classname>.
+	  </para>
+	</note>
+	-->
+      </section>
+    </section>
+  </section>
+
+  <section>
+    <title>Creating Transactional Web Services</title>
+
+    <para>
+      The two parts to implementing a Web service using XTS are the transaction management and the business logic.
+    </para>
+    <para>
+      The bulk of the transaction management aspects are organized in a clear and easy-to-implement model by means of the XTS’s <firstterm>Participant API</firstterm>, provides a structured model for negotiation between the web service and the transaction coordinator. It allows the web service to manage its own local transactional data, in accordance with the needs of the business logic, while ensuring that its activities are in step with those of the client and other services involved in the transaction. Internally, this API uses SOAP to invokes operations on the various WS-C, WS-AT and WS-BA services, to drive the transaction to completion.
+    </para>
+    
+    <section>
+      <title>Participants</title>
+      <para>
+	A <firstterm>participant</firstterm> is a software entity which is driven by the transaction manager on behalf of a Web service. When a web service wants to participate in a particular transaction, it must enroll a participant to act as a proxy for the service in subsequent negotiations with the coordinator. The participant implements an API appropriate to the type of transaction it is enrolled in, and the participant model selected when it is enrolled. For example, a Durable2PC participant, as part of a WS-Atomic Transaction, implements the Durable2PCParticipant interface.  The use of participants allows the transactional control management aspects of the Web service to be factored into the participant implementation, while staying separate from the the rest of the Web service's business logic and private transactional data management.
+      </para>
+      <para>
+	The creation of participants is not trivial, since they ultimately reflect the state of a Web service’s back-end processing facilities, an aspect normally associated with an enterprise’s own IT infrastructure. Implementations must use one of the following interfaces, depending upon the protocol it will participate within: <interfacename>com.arjuna.wst11.Durable2PCParticipant</interfacename>, <interfacename>com.arjuna.wst11.Volatile2PCParticipant</interfacename>, <interfacename>com.arjuna.wst11.BusinessAgreementWithParticipantCompletionParticipant</interfacename>, or <interfacename>com.arjuna.wst11.BusinessAgreementWithCoordinatorCompletionParticipant</interfacename>.
+      </para>
+      <para>
+	A full description of XTS’s participant features is provided in <remark>Fix me</remark>.
+      </para>
+<!--
+      <note>
+	<para>
+	  The 1.1 XTS implementation expects participants to implement the same APIs as the 1.0 implementation.
+	</para>
+      </note>
+-->
+    </section>
+
+    <section>
+      <title>Service-Side Handler Configuration</title>
+      <para>
+	A transactional Web service must ensure that a service invocation is included in the appropriate transaction. This usually only affects the operation of the participants and has no impact on the operation of the rest of the Web service. XTS simplifies this task and decouples it from the business logic, in much the same way as for transactional clients<remark>Add an xref</remark>. XTS provides a handler which detects and extracts the context details from the headers in incoming SOAP headers, and associates the web service thread with the transaction. The handler clears this association when dispatching SOAP responses, and writes the context into the outgoing message headers. This is shown in <xref linkend="fig-context-handlers-registered-with-soap-server" />.
+      </para>
+      <para>
+	The service side handlers for JAX-WS come in two different versions. The normal handler resumes any transaction identified by an incoming context when the service is invoked, and suspends this transaction when the service call completes. The alternative handler is used to interpose a local coordinator. The first time an incoming parent context is seen, the local coordinator service creates a subordinate transaction, which is resumed before the web service is called. The handler ensures that this subordinate transaction is resumed each time the service is invoked with the same parent context. When the subordinate transaction completes, the association between the parent transaction and its subordinate is cleared.
+      </para>
+      <note>
+	<para>
+	  The subordinate service side handler is only able to interpose a subordinate coordinator for an Atomic Transaction.
+	</para>
+      </note>
+      <note>
+	<para>
+	  JAX-RPC is provided for the 1.0 implementation only.
+	</para>
+      </note>
+      <!--
+      <section>
+	<title>JAX-RPC Service Context Handlers</title>
+
+	<para>
+	  In order to register the JAX-RPC server-side context handler with the deployed Web Services, you must include a handler chain in the Web Services deployment descriptor.  Please refer to the example application located in the <filename>ddrpc/jboss/webservices.xml</filename> deployment descriptor for an example.
+	</para>
+	<para>
+	  When registering a normal JAX-RPC service context handler, you must instantiate the <classname>com.arjuna.mw.wst11.service.JaxRPCHeaderContextProcessor</classname> class. If you need coordinator interposition, you need to employ the <classname>com.arjuna.mw.wst11.service.JaxRPCSubordinateHeaderContextProcessor</classname> instead.
+	</para>
+	<note>
+	  <para>
+	    A JAX-RPC client handler is not provided for the 1.1 implementation.
+	  </para>
+	</note>
+      </section>
+      -->
+      <section>
+	<title>JAX-WS Service Context Handlers</title>
+	<para>
+	  To register the JAX-WS server-side context handler with the deployed Web Services, you must install a handler chain on the Server Endpoint Implementation class. The endpoint implementation class annotation, which is the one annotated with a <systemitem>javax.jws.WebService</systemitem>, must be supplemented with a <systemitem>javax.jws.HandlerChain</systemitem> annotation which identifies a handler configuration file deployed with the application. Please refer to the example application configuration file  located at <filename>dd/jboss/context-handlers.xml</filename> and the endpoint implementation classes located in <filename>src/com/jboss/jbosstm/xts/demo/services</filename> for an example.
+	</para>
+	<para>
+	  When registering a normal JAX-WS service context handler, you must instantiate the <classname>com.arjuna.mw.wst11.service.JaxWSHeaderContextProcessor</classname> class. If you need coordinator interposition, employ the <classname>com.arjuna.mw.wst11.service.JaxWSSubordinateHeaderContextProcessor</classname> instead.
+	</para>
+	<!--
+	    <note>
+	    <para>
+	    The classes used in the 1.1 implementation are <classname>com.arjuna.mw.wst11.service.JaxWSHeaderContextProcessor</classname> and <classname>com.arjuna.mw.wst11.service.JaxWSSubordinateHeaderContextProcessor</classname>.
+	    </para>
+	    </note>
+	-->
+	<figure id="fig-context-handlers-registered-with-soap-server">
+	  <title>Context Handlers Registered with the SOAP Server</title>
+	  <mediaobject>
+	    <imageobject>
+	      <imagedata fileref="images/fig-context-handlers-registered-with-soap-server.png" format="PNG"/>
+	    </imageobject>
+	    <textobject>
+	      <para></para>
+	    </textobject>
+	  </mediaobject>
+	</figure>
+
+      </section>
+    </section>
+
+<!--
+    <section>
+      <title>Implementing the Web Service Business Logic</title>
+      <para>
+	Details about the context management that the context processor performs are normally unimportant to the Web service application logic as well as work performed by other protocol-specific context handlers. However, back-end systems used by the Web service application logic, such as databases, need to track the front-end transaction context, in order to map any operations invoked within its scope onto a back-end transaction context.
+      </para>
+      <para>
+	The back-end typically wraps a database driver in a decorator pattern which extends the interface of the original driver to hook into the service-side API, so that it can access the transaction context details. The general architecture for this pattern is shown in <xref linkend="fig-back-end-pattern" />.
+      </para>
+      <figure id="fig-back-end-pattern">
+	<title>General Pattern for Back-End Integration, from the Service Side</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata fileref="images/fig-back-end-pattern.png" format="PNG"/>
+	  </imageobject>
+	</mediaobject>
+      </figure>
+      <para>
+	The missing element in <xref linkend="fig-back-end-pattern" /> is the <systemitem>commit</systemitem> protocol which allows back-end work to be made durable or roll back at the end of a transaction. This is covered in the <remark>Add an xref</remark> participant chapter, which explores the participant/back-end relation.
+      </para>
+    </section>
+-->
+  </section>
+
+  <section>
+    <title>Summary</title>
+
+    <para>
+      This chapter gives a high-level overview of each of the major software pieces used by the Web Services transactions component of JBoss Transaction Service. The Web Services transaction manager provided by JBoss Transaction Service is the hub of the architecture and is the only piece of software that user-level software does not bind to directly. XTS provides header-processing infrastructure for use with Web Services transactions contexts for both client applications and Web Services. XTS provides a simple interface for developing transaction participants, along with the necessary document-handling code.
+    </para>
+    <para>
+      This chapter is only an overview, and does not address the more difficult and subtle aspects of programming Web Services. For fuller explanations of the components, please continue reading.
+    </para>
+  </section>
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Introduction.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Introduction.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Introduction.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Introduction</title>
+
+  <indexterm><primary>XTS</primary><secondary>XML Transaction Service</secondary></indexterm>
+  <indexterm><primary>Web Services</primary></indexterm>
+  <indexterm><primary>transactions</primary></indexterm>
+  <indexterm><primary>WS-Coordination</primary><secondary>WS-C</secondary></indexterm>
+  <indexterm><primary>WS-Atomic Transaction</primary><secondary>WS-AT</secondary></indexterm>
+  <indexterm><primary>WS-Business Activity</primary><secondary>WS-BA</secondary></indexterm>
+  <indexterm><primary>XTS 1.0</primary><secondary>XTS 1.1</secondary></indexterm>
+  <indexterm><primary>SOAP</primary></indexterm>
+  <indexterm><primary>fault-tolerance</primary></indexterm>
+  <indexterm><primary>undesirable outcomes</primary></indexterm>
+  <indexterm><primary>participants</primary><secondary>transaction participants</secondary></indexterm>
+  <indexterm><primary>active component</primary></indexterm>
+  <indexterm><primary>servlets</primary><secondary>Java servlets</secondary></indexterm>
+  <indexterm><primary>RPC</primary><secondary>Remote Procedure Calls</secondary></indexterm>
+  <indexterm><primary>DE</primary><secondary>Document Exchange</secondary></indexterm>
+  <indexterm><primary>WSDL</primary><secondary>Web Services Description Language</secondary></indexterm>
+
+  <para>
+    The <firstterm>XML Transaction Service (XTS)</firstterm> component of JBoss Transaction Service supports the coordination of private and public Web Services in a business transaction. Therefore, to understand XTS, you must be familiar with Web Services, and also understand something about transactions. This chapter introduces XTS and provides a brief overview of the technologies that form the Web Services standard. Additionally, this chapter explores some of the fundamentals of transactioning technology and how it can be applied to Web Services. Much of the content presented in this chapter is detailed throughout this guide. However, only overview information about Web Services is provided. If you are new to creating Web services, please see consult your Web Services platform documentation.
+  </para>
+  <para>
+    JBoss Transaction Service provides the XTS component as a transaction solution for Web Services. Using XTS, business partners can coordinate complex business transactions in a controlled and reliable manner. The XTS API supports a transactional coordination model based on the <firstterm>WS-Coordination</firstterm>, <firstterm>WS-Atomic Transaction</firstterm>, and <firstterm>WS-Business Activity</firstterm> specifications.
+  </para>
+  <itemizedlist id="protocol-spec-list">
+    <title>Protocols Included in XTS</title>
+    <listitem><para>WS-Coordination (WS-C) is a generic coordination framework developed by IBM, Microsoft and BEA.</para></listitem>
+    <listitem><para>WS-Atomic Transaction (WS-AT) and WS-Business Activity (WS-BA) together comprise the WS-Transaction (WS-T) transaction protocols that utilize this framework.</para></listitem>
+  </itemizedlist>
+  <para>
+    JBoss Transaction Service implements versions 1.0, 1.1, and 1.2 of these three specifications. Version specifications are available from <ulink url="http://www.oasis-open.org/specs/" />.
+  </para>
+  <note>
+    <para>
+      The 1.0, 1.1, and 1.2  specifications only differ in a small number of details. The rest of this document employs version 1.1 of these specifications when providing explanations and example code. On the few occasions where the modifications required to adapt these to the 1.1 specifications are not obvious, an explanatory note is provided.
+    </para>
+  </note>
+
+  <para>
+    <firstterm>Web Services</firstterm> are modular, reusable software components that are created by exposing business functionality through a Web service interface. Web Services communicate directly with other Web Services using standards-based technologies such as SOAP and HTTP. These standards-based communication technologies enable customers, suppliers, and trading partners to access Web Services, independent of hardware operating system, or programming environment. The result is a vastly improved collaboration environment as compared to today's EDI and <firstterm>business-to-business (B2B)</firstterm> solutions, an environment where businesses can expose their current and future business applications as Web Services that can be easily discovered and accessed by external partners.
+  </para>
+
+  <para>
+    Web Services, by themselves, are not fault-tolerant. In fact, some of the reasons that the Web Services model is an attractive development solution are also the same reasons that service-based applications may have drawbacks.
+  </para>
+  <itemizedlist>
+    <title>Properties of Web Services</title>
+    <listitem><para>Application components that are exposed as Web Services may be owned by third parties, which provides benefits in terms of cost of maintenance, but drawbacks in terms of having exclusive control over their behavior.</para></listitem>
+    <listitem><para>Web Services are usually remotely located, increasing risk of failure due to increased network travel for invocations.</para></listitem>
+  </itemizedlist>
+
+  <para>
+    Applications that have high dependability requirements need a method of minimizing the effects of errors that may occur when an application consumes Web Services. One method of safeguarding against such failures is to interact with an application’s Web Services within the context of a <firstterm>transaction</firstterm>. A transaction is a unit of work which is completed entirely, or in the case of failures is reversed to some agreed consistent state. The goal, in the event of a failure, is normally to appear as if the work had never occurred in the first place. With XTS, transactions can span multiple Web Services, meaning that work performed across multiple enterprises can be managed with transactional support.
+  </para>
+    
+  <section>
+    <title>Managing service-Based Processes</title>
+    <para>
+      XTS allows you to create transactions that drive complex business processes, spanning multiple Web Services. Current Web Services standards do not address the requirements for a high-level coordination of services. This is because in today’s Web Services applications, which use single request/receive interactions, coordination is typically not a problem. However, for applications that engage multiple services among multiple business partners, coordinating and controlling the resulting interactions is essential. This becomes even more apparent when you realize that you generally have little in the way of formal guarantees when interacting with third-party Web Services.
+    </para>
+    <para>
+      XTS provides the infrastructure for coordinating services during a business process. By organizing processes as transactions, business partners can collaborate on complex business interactions in a reliable manner, insuring the integrity of their data - usually represented by multiple changes to a database – but without the usual overheads and drawbacks of directly exposing traditional transaction-processing engines directly onto the web. <xref linkend="example-application" /> demonstrates how an application may manage service-based processes as transactions:
+    </para>
+    <formalpara id="example-application">
+      <title>An Evening On the Town</title>
+      <para>
+	The application in question allows a user to plan a social evening. This application is responsible for reserving a table at a restaurant, and reserving tickets to a show. Both activities are paid for using a credit card. In this example, each service represents exposed Web Services provided by different service providers. XTS is used to envelop the interactions between the theater and restaurant services into a single (potentially) long-running business transaction. The business transaction must insure that seats are reserved both at the restaurant and the theater. If one event fails the user has the ability to decline both events, thus returning both services back to their original state. If both events are successful, the user’s credit card is charged and both seats are booked. As you may expect, the interaction between the services must be controlled in a reliable manner over a period of time. In addition, management must span several third-party services that are re!
 motely deployed.
+      </para>
+    </formalpara>
+    <para>
+      Without the backing of a transaction, an undesirable outcome may occur. For example, the user credit card may be charged, even if one or both of the bookings fail.
+    </para>
+    <para>
+      <xref linkend="example-application" /> describes the situations where XTS excels at supporting business processes across multiple enterprises. This example is further refined throughout this guide, and appears as a standard demonstrator (including source code) with the XTS distribution.
+    </para>
+  </section>
+
+  <section>
+    <title>Servlets</title>
+
+    <para>
+      The WS-Coordination, WS-Atomic Transaction, and WS-Business Activity protocols are based on one-way interactions of entities rather than traditional synchronous request/response RPC-style interactions. One group of entities, called transaction participants, invoke operations on other entities, such as the transaction coordinator, in order to return responses to requests. The programming model is based on peer-to-peer relationships, with the result that all services, whether they are participants, coordinators or clients, must have an <firstterm>active component</firstterm> that allows them to receive unsolicited messages.
+    </para>
+    <para>
+      <!--
+      In XTS, the active component is achieved through the use of <firstterm>Java servlet</firstterm> technology. Each endpoint that can be communicated with via SOAP/XML is represented as a servlet, and published within JNDI. Fortunately for the developer, this use of servlets occurs transparently. The only drawback is that clients must reside within a domain capable of hosting servlets, such as an application server. In the case of Enterprise Application Platform, JBoss Application Server provides this functionality.-->
+      In XTS, the active component is achieved through deployment of JaxWS
+      endpoints. Each XTS endpoint that is reachable through SOAP/XML is
+      published via JaxWS, without developer intevention. The only requirement
+      is that transactional client applications and transactional web services
+      must reside within a domain capable of hosting JaxWS endpoints, such as an
+      application server. JBoss Application Server can provide this functionality.
+    </para>
+
+    <note>
+      <para>
+	The XTS 1.0 protocol implementation is based on servlets.
+      </para>
+    </note>
+  </section>
+
+  <section>
+    <title>SOAP</title>
+
+    <para>
+      SOAP has emerged as the <foreignphrase>de facto</foreignphrase> message format for XML-based communication in the Web Services arena. It is a lightweight protocol that allows the user to define the content of a message and to provide hints as to how recipients should process that message.
+    </para>
+    <!--
+    <para>
+      SOAP messages can be divided into two main categories: <firstterm>Remote Procedure Call (RPC)</firstterm> and <firstterm>Document Exchange (DE)</firstterm>. The primary difference between the two categories is that the SOAP specification defines encoding rules and conventions for RPC. The document exchange model allows the exchange of arbitrary XML documents, which is a key ingredient of B2B document exchange. XTS is based on the loosely coupled DE style, yet it can support transactions spanning Web service that use either DE or RPC.
+    </para>
+    -->
+  </section>
+
+  <section>
+    <title>Web Services Description Language (WDSL)</title>
+    <para>
+      <firstterm>Web Services Description Language (WSDL)</firstterm> is an XML-based language used to define Web service interfaces. An application that consumes a Web service parses the service’s WSDL document to discover the location of the service, the operations that the service supports, the protocol bindings the service supports (SOAP, HTTP, etc), and how to access them. For each operation, WSDL describes the format that the client must follow.
+    </para>
+  </section>
+  
+</chapter>
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participant_Crash_Recovery.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participant_Crash_Recovery.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participant_Crash_Recovery.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,270 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Participant Crash Recovery</title>
+
+  <indexterm><primary>presumed abort policy</primary></indexterm>
+  <indexterm><primary>recovery</primary></indexterm>
+  <indexterm><primary>participant recovery</primary></indexterm>
+
+  <para>
+    A key requirement of a transaction service is to be resilient to a system crash by a host running a participant, as well as the host running the transaction coordination services. Crashes which happen before a transaction terminates or before a business activity completes are relatively easy to accommodate. The transaction service and participants can adopt a <firstterm>presumed abort</firstterm> policy.
+  </para>
+
+  <procedure>
+    <title>Presumed Abort Policy</title>
+    <step>
+      <para>
+	If the coordinator crashes, it can assume that any transaction it does not know about is invalid, and reject a participant request which refers to such a transaction.
+      </para>
+    </step>
+    <step>
+      <para>
+	If the participant crashes, it can forget any provisional changes it has made, and reject any request from the coordinator service to prepare a transaction or complete a business activity.
+      </para>
+    </step>
+  </procedure>
+  
+  <para>
+    Crash recovery is more complex if the crash happens during a transaction commit operation, or between completing and closing a business activity. The transaction service must ensure as far as possible that participants arrive at a consistent outcome for the transaction.
+  </para>
+  <variablelist>
+    <varlistentry>
+      <term>WS-AT Transaction</term>
+      <listitem>
+	<para>
+	  The transaction needs to commit all provisional changes or roll them all back to the state before the transaction started.
+	</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>WS-Business Activity Transaction</term>
+      <listitem>
+	<para>
+	  All participants need to close the activity or cancel the activity, and run any required compensating actions. </para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+
+  <para>
+    On the rare occasions where such a consensus cannot be reached, the transaction service must log and report transaction failures.
+
+  </para>
+  
+  <para>
+    XTS includes support for automatic recovery of WS-AT and WS-BA transactions, if either or both of the coordinator and participant hosts crashes. The XTS recovery manager begins execution on coordinator and participant hosts when the XTS service restarts. On a coordinator host, the recovery manager detects any WS-AT transactions which have prepared but not committed, as well as any WS-BA transactions which have completed but not yet closed. It ensures that all their participants are rolled forward in the first case, or closed in the second.
+  </para>
+  <para>
+    On a participant host, the recovery manager detects any prepared WS-AT participants which have not responded to a transaction rollback, and any completed WS-BA participants which have not yet responded to an activity cancel request, and ensures that the former are  rolled back and the latter are compensated. The recovery service also allows for recovery of subordinate WS-AT transactions and their participants if a crash occurs on a host where an interposed WS-AT coordinator has been employed.
+  </para>
+  <!-- Community version only
+  <note>
+    <para>
+      Crash recovery is implemented for both the 1.0 and 1.1 implementations of the WS-AT and WS-BA protocols.
+    </para>
+  </note>
+  -->
+  <section>
+    <title>WS-AT Recovery</title>
+    
+    <section>
+      <title>WS-AT Coordinator Crash Recovery</title>
+      <para>
+	The WS-AT coordination service tracks the status of each participant in a transaction as the transaction progresses through its two-phase commit. When all participants have been sent a <systemitem>prepare</systemitem> message and have responded with a <systemitem>prepared</systemitem> message, the coordinator writes a log record storing each participant's details, indicating that the transaction is ready to complete. If the coordinator service crashes after this point has been reached, completion of the two-phase commit protocol is still guaranteed, by reading the log file after reboot and sending a <systemitem>commit</systemitem> message to each participant. Once all participants have responded to the <systemitem>commit</systemitem> with a <systemitem>committed</systemitem> message, the coordinator can safely delete the log entry.
+      </para>
+      <para>
+	Since the <systemitem>prepared</systemitem> messages returned by the participants imply that they are ready to commit their provisional changes and make them permanent, this type of recovery is safe. Additionally, the coordinator does not need to account for any commit messages which may have been sent before the crash, or resend messages if it crashes several times. The XTS participant implementation is resilient to redelivery of the <systemitem>commit</systemitem> messages. If the participant has implemented the recovery functions described in <xref linkend="ws-at-recovery-api" />, the coordinator can guarantee delivery of <systemitem>commit</systemitem> messages if both it crashes, and one or more of the participant service hosts also crash, at the same time.
+      </para>
+      <para>
+	If the coordination service crashes before the <systemitem>prepare</systemitem> phase completes, the presumed abort protocol ensures that participants are rolled back. After system restart, the coordination service has the information about about all the transactions which could have entered the <systemitem>commit</systemitem> phase before the reboot, since they have entries in the log. It also knows about any active transactions started after the reboot. If a participant is waiting for a response, after sending its <systemitem>prepared</systemitem> message, it automatically re sends the <systemitem>prepared</systemitem> message at regular intervals. When the coordinator detects a transaction which is not active and has no entry in the log file after the reboot, it instructs the participant to abort, ensuring that the web service gets a chance to roll back any provisional state changes it made on behalf of the transaction.
+      </para>
+      <para>
+	A web service may decide to unilaterally commit or roll back provisional changes associated with a given participant, if configured to time out after a specified length of time without a response. In this situation, the the web service should record this action and log a message to persistent storage. When the participant receives a request to commit or roll back, it should throw an exception if its unilateral decision action does not match the requested action. The coordinator detects the exception and logs a message marking the outcome as heuristic. It also saves the state of the transaction permanently in the transaction log, to be inspected and reconciled by an administrator.
+      </para>
+      
+    </section>
+    
+    <section>
+      <title>WS-AT Participant Crash Recovery</title>
+      <para>
+	WS-AT participants associated with a transactional web service do not need to be involved in crash recovery if the Web service's host machine crashes before the participant is told to prepare. The coordinator will assume that the transaction has aborted, and the Web service can discard any information associated with unprepared transactions when it reboots.
+      </para>
+      <para>
+	When a participant is told to <systemitem>prepare</systemitem>, the Web service is expected to save to persistent storage the transactional state it needs to commit or roll back the transaction. The specific information it needs to save is dependent on the implementation and business logic of the Web Service. However, the participant must save this state before returning a <systemitem>Prepared</systemitem> vote from the <methodname>prepare</methodname> call. If the participant cannot save the required state, or there is some other problem servicing the request made by the client, it must return an <systemitem>Aborted</systemitem> vote.
+      </para>
+      <para>
+	The XTS participant services running on a Web Service's host machine cooperate with the Web service implementation to facilitate participant crash recovery. These participant services are responsible for calling the participant's <methodname>prepare</methodname>, <methodname>commit</methodname>, and <systemitem>rollback</systemitem> methods. The XTS implementation tracks the local state of every enlisted participant. If the <systemitem>prepare</systemitem> call returns a <systemitem>Prepared</systemitem> vote, the XTS implementation ensures that the participant state is logged to the local transaction log before forwarding a <systemitem>prepared</systemitem> message to the coordinator.
+      </para>
+      <para>
+	A participant log record contains information identifying the participant, its transaction, and its coordinator. This is enough information to allow the rebooted XTS implementation to reinstate the participant as active and to continue communication with the coordinator, as though the participant had been enlisted and driven to the prepared state. However, a participant instance is still necessary for the commit or rollback process to continue.
+      </para>
+      <para>
+	Full recovery requires the log record to contain information needed by the Web service which enlisted the participant. This information must allow it to recreate an equivalent participant instance, which can continue the <systemitem>commit</systemitem> process to completion, or roll it back if some other Web Service fails to <systemitem>prepare</systemitem>. This information might be as simple as a String key which the participant can use to locate the data it made persistent before returning its Prepared vote. It may be as complex as a serialized object tree containing the original participant instance and other objects created by the Web service.
+      </para>
+      <para>
+	If a participant instance implements the relevant interface, the XTS implementation will append this participant recovery state to its log record before writing it to persistent storage. In the event of a crash, the participant recovery state is retrieved from the log and passed to the Web Service which created it. The Web Service uses this state to create a new participant, which the XTS implementation uses to drive the transaction to completion. Log records are only deleted after the participant's <methodname>commit</methodname> or <methodname>rollback</methodname> method is called.
+      </para>
+      <warning>
+	<para>
+	  If a crash happens just before or just after a <methodname>commit</methodname> method is called, a <methodname>commit</methodname> or <methodname>rollback</methodname> method may be called twice.
+	</para>
+      </warning>
+
+      
+      <section id="ws-at-recovery-api">
+	<title>WS-AT Participant Crash Recovery APIs</title>
+
+	
+	<section>
+	  <title>Saving Participant Recovery State</title>
+	  <para>
+	    To signal that it is capable of performing recovery processing, a participant can implement the <interfacename>java.lang.Serializable</interfacename> interface. Alternatively it may implement <xref linkend="example-PersistableATParticipant" />.	  
+	  </para>
+	  
+	  <example id="example-PersistableATParticipant">
+	    <title>The <interfacename>PersistableATParticipant</interfacename> Interface</title>
+	    <programlisting role="JAVA" language="Java">
+	      public interface PersistableATParticipant
+	      {
+	        byte[] getRecoveryState() throws Exception;
+	      }
+	    </programlisting>
+	  </example>
+	  <para>
+	    If a participant implements the <interfacename>Serializable</interfacename> interface, the XTS participant services implementation uses the serialization API to create a version of the participant which can be appended to the participant log entry. If it implements the  <interfacename>PersistableATParticipant</interfacename> interface, the XTS participant services implementation call the <methodname>getRecoveryState</methodname> method to obtain the state to be appended to the participant log entry.
+	  </para>
+	  <para>
+	    If neither of these APIs is implemented, the XTS implementation logs a warning message and proceeds without saving any recovery state. In the event of a crash on the host machine for the Web service during commit, the transaction cannot be recovered and a heuristic outcome may occur. This outcome is logged on the host running the coordinator services.
+	  </para>
+	</section>
+	
+	<section>
+	  <title>Recovering Participants at Reboot</title>
+	  <para>
+	    A Web service must register with the XTS implementation when it is deployed, and unregister when it is undeployed,  in order to participate in recovery processing. Registration is performed using class <classname>XTSATRecoveryManager</classname> defined in package <package>org.jboss.jbossts.xts.recovery.participant.at</package>.
+	  </para>
+	  <example>
+	    <title>Registering for Recovery</title>
+	    <programlisting language="Java" role="JAVA"><xi:include href="extras/example-register-for-recovery.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+	  </example>
+
+	  <para>
+	    The Web service must provide an implementation of the <interfacename>XTSATRecoveryModule</interfacename>, located in the <package>org.jboss.jbossts.xts.recovery.participant.at</package>, as argument to both the <methodname>register</methodname> and <methodname>unregister</methodname> calls. This instance is responsible for identifying saved participant recovery records and recreating new, recovered participant instances.
+	  </para>
+	  <example>
+	    <title><interfacename>XTSATRecoveryModule</interfacename> Implementation</title>
+	    <programlisting language="Java" role="JAVA"><xi:include href="extras/example-XTSATRecoveryModule.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+	  </example>
+
+	  <para>
+	    If a participant's recovery state was saved using serialization, the recovery module's <methodname>deserialize</methodname> method is called to recreate the participant. Normally, the recovery module is required to read, cast, and return an object from the supplied input stream. If a participant's recovery state was saved using the <interfacename>PersistableATParticipant</interfacename> interface, the recovery module's <methodname>recreate</methodname> method is called to recreate the participant from the byte array it provided when the state was saved.
+	  </para>
+	  <para>
+	    The XTS implementation cannot identify which participants belong to which recovery modules. A module only needs to return a participant instance if the recovery state belongs to the module's Web service. If the participant was created by another Web service, the module should return <literal>null</literal>. The participant identifier, which is supplied as argument to the <methodname>deserialize</methodname> or <methodname>recreate</methodname> method, is the identifier used by the Web service when the original participant was enlisted in the transaction. Web Services participating in recovery processing should ensure that participant identifiers are unique per service. If a module recognizes that a participant identifier belongs to its Web service, but cannot recreate the participant, it should throw an exception. This situation might arise if the service cannot associate the participant with any transactional information which is specific to the business logic.
+	  </para>
+	  <para>
+	    Even if a module relies on serialization to create the participant recovery state saved by the XTS implementation, it still must be registered by the application. The <methodname>deserialization</methodname> operation must employ a class loader capable of loading classes specific to the Web service. XTS fulfills this requirement by devolving responsibility for the <methodname>deserialize</methodname> operation to the recovery module.
+	  </para>
+	</section>
+      </section>
+    </section>
+  </section>
+
+  
+  <section>
+    <title>WS-BA Recovery</title>
+    
+    <section>
+      <title>WS-BA Coordinator Crash Recovery</title>
+
+      <para>
+	The WS-BA coordination service implementation tracks the status of each participant in an activity as the activity progresses through completion and closure. A transition point occurs during closure, once all <systemitem>CoordinatorCompletion</systemitem> participants receive a <systemitem>complete</systemitem> message and respond with a <systemitem>completed</systemitem> message. At this point, all <systemitem>ParticipantCompletion</systemitem> participants should have sent a <systemitem>completed</systemitem> message. The coordinator writes a log record storing the details of each participant, and indicating that the transaction is ready to close. If the coordinator service crashes after the log record is written, the <methodname>close</methodname> operation is still guaranteed to be successful. The coordinator checks the log after the system reboots and re sends a <systemitem>close</systemitem> message to all participants. After all participants respond to the <systemit!
 em>close</systemitem> with a <systemitem>closed</systemitem> message, the coordinator can safely delete the log entry.
+      </para>
+      <para>
+	The coordinator does not need to account for any <systemitem>close</systemitem> messages sent before the crash, nor resend messages if it crashes several times. The XTS participant implementation is resilient to redelivery of <systemitem>close</systemitem> messages. Assuming that the participant has implemented the recovery functions described below, the coordinator can even guarantee delivery of <systemitem>close</systemitem> messages if both it, and one or more of the participant service hosts, crash simultaneously.
+      </para>
+      <para>
+	If the coordination service crashes before it has written the log record, it does not need to explicitly compensate any completed participants. The <phrase>presumed abort protocol</phrase> ensures that all completed participants are eventually sent a <systemitem>compensate</systemitem> message. Recovery must be initiated from the participant side.
+      </para>
+      <para>
+	A log record does not need to be written when an activity is being canceled. If a participant does not respond to a <systemitem>cancel</systemitem> or <systemitem>compensate</systemitem> request, the coordinator logs a warning and continues. The combination of the <phrase>presumed abort protocol</phrase> and participant-led recovery ensures that all participants eventually get canceled or compensated, as appropriate, even if the participant host crashes.      
+      </para>
+      <para>
+	If a completed participant does not detect a response from its coordinator after resending its <systemitem>completed</systemitem> response a suitable number of times, it switches to sending <systemitem>getstatus</systemitem> messages, to determine whether the coordinator still knows about it. If a crash occurs before writing the log record, the coordinator has no record of the participant when the coordinator restarts, and the <systemitem>getstatus</systemitem> request returns a fault. The participant recovery manager automatically compensates the participant in this situation, just as if the activity had been canceled by the client.
+      </para>
+      <para>
+	After a participant crash, the participant recovery manager detects the log entries for each completed participant. It sends <systemitem>getstatus</systemitem> messages to each participant's coordinator host, to determine whether the activity still exists. If the coordinator has not crashed and the activity is still running, the participant switches back to resending <systemitem>completed</systemitem> messages, and waits for a <systemitem>close</systemitem> or <systemitem>compensate</systemitem> response. If the coordinator has also crashed or the activity has been canceled, the participant is automatically canceled.
+      </para>
+      
+    </section>
+
+    <!--    
+    <section>
+      <title>WS-BA Participant Crash Recovery</title>
+      <para>
+      </para>
+    </section>
+    -->
+    
+    <section>
+      <title>WS-BA Participant Crash Recovery APIs</title>
+
+      <section>
+	<title>Saving Participant Recovery State</title>
+	<para>
+	  A participant may signal that it is capable of performing recovery processing, by implementing the <interfacename>java.lang.Serializable</interfacename> interface. An alternative is to implement the <xref linkend="example-PersistableBAParticipant" />.
+	</para>
+	<example id="example-PersistableBAParticipant">
+	  <title><interfacename>PersistableBAParticipant</interfacename> Interface</title>
+	  <programlisting language="Java" role="JAVA"><xi:include href="extras/example-PersistableBAParticipant.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+	</example>
+	<para>
+	  If a participant implements the <interfacename>Serializable</interfacename> interface, the XTS participant services implementation uses the serialization API to create a version of the participant which can be appended to the participant log entry. If the participant implements the <interfacename>PersistableBAParticipant</interfacename>, the XTS participant services implementation call the <methodname>getRecoveryState</methodname> method to obtain the state, which is appended to the participant log entry.
+	</para>
+	<para>
+	  If neither of these APIs is implemented, the XTS implementation logs a warning message and proceeds without saving any recovery state. If the Web service's host machine crashes while the activity is being closed, the activity cannot be recovered and a heuristic outcome will probably be logged on the coordinator's host machine. If the activity is canceled, the participant is not compensated and the coordinator host machine may log a heuristic outcome for the activity.
+	</para>
+      </section>
+
+      
+      <section>
+	<title>Recovering Participants at Reboot</title>
+	<para>
+	  A Web service must register with the XTS implementation when it is deployed, and unregister when it is undeployed, so it can take part in recovery processing.
+	</para>
+	<para>
+	  Registration is performed using the <classname>XTSBARecoveryManager</classname>, defined in the <package>org.jboss.jbossts.xts.recovery.participant.ba</package> package. 
+	</para>
+	<example>
+	  <title><classname>XTSBARecoveryManager</classname> Class</title>
+	  <programlisting language="Java" role="JAVA"><xi:include href="extras/example-XTSBARecoveryManager.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+	</example>
+	<para>
+	  The Web service must provide an implementation of the <classname>XTSBARecoveryModule</classname> in the <package> org.jboss.jbossts.xts.recovery.participant.ba</package>, as an argument to the <methodname>register</methodname> and <methodname>unregister</methodname> calls. This instance identifies saved participant recovery records and recreates new, recovered participant instances:
+	</para>
+	<example>
+	  <title><interfacename>XTSBARecoveryModule</interfacename> Interface</title>
+	  <programlisting language="Java" role="JAVA"><xi:include href="extras/example-XTSBARecoveryModule.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+	</example>
+	<para>
+	  If a participant's recovery state was saved using serialization, one of the recovery module's <methodname>deserialize</methodname> methods is called, so that it can recreate the participant. Which method to use depends on whether the saved participant implemented the <classname>ParticipantCompletion</classname> protocol or the <classname>CoordinatorCompletion</classname> protocol. Normally, the recovery module reads, casts and returns an object from the supplied input stream. If a participant's recovery state was saved using the <interfacename>PersistableBAParticipant</interfacename> interface, one of the recovery module's <methodname>recreate</methodname> methods is called, so that it can recreate the participant from the byte array provided when the state was saved. The method to use depends on which protocol the saved participant implemented.
+	</para>
+	<para>
+	  The XTS implementation does not track which participants belong to which recovery modules. A module is only expected to return a participant instance if it can identify that the recovery state belongs to its Web service. If the participant was created by some other Web service, the module should return <literal>null</literal>. The participant identifier supplied as an argument to the <methodname>deserialize</methodname> or <methodname>recreate</methodname> calls is the identifier used by the Web service when the original participant was enlisted in the transaction. Web Services which participate in recovery processing should ensure that the participant identifiers they employ are unique per service. If a module recognizes a participant identifier as belonging to its Web service, but cannot recreate the participant, it throws an exception. This situation might arise if the service cannot associate the participant with any transactional information specific to business log!
 ic.
+	</para>
+	<para>
+	  A module must be registered by the application, even when it relies upon serialization to create the participant recovery state saved by the XTS implementation. The <methodname>deserialization</methodname> operation must employ a class loader capable of loading Web service-specific classes. The XTS implementation achieves this by delegating responsibility for the <methodname>deserialize</methodname> operation to the recovery module.
+	</para>
+      </section>
+
+    </section>
+
+  </section>
+
+  
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participants.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participants.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Participants.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,470 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Participants</title>
+
+  <indexterm><primary>participants</primary></indexterm>
+  <indexterm><primary>atomic transactions</primary><secondary>atomicity</secondary></indexterm>
+  <indexterm><primary>Durable2PCParticipant</primary></indexterm>
+  <indexterm><primary>Volatile2PCParticipant</primary></indexterm>
+  <indexterm><primary>BusinessAgreementWithParticipantCompletion</primary></indexterm>
+  <indexterm><primary>BusinessAgreementWithCoordinatorCompletion</primary></indexterm>
+  <indexterm><primary>BAParticipantManager</primary></indexterm>
+  <indexterm><primary>implementation</primary></indexterm>
+  <indexterm><primary>deployment</primary></indexterm>
+
+  
+  <section>
+    <title>Overview</title>
+    <para>
+      The <firstterm>participant</firstterm> is the entity that performs the work pertaining to transaction management on behalf of the business services involved in an application. The Web service (in the example code, a theater booking system) contains some business logic to reserve a seat and inquire about availability, but it needs to be supported by something that maintains information in a durable manner. Typically this is a database, but it could be a file system, NVRAM, or other storage mechanism.
+    </para>
+    <para>
+      Although the service may talk to the back-end database directly, it cannot commit or undo any changes, since committing and rolling back are ultimately under the control of a transaction. For the transaction to exercise this control, it must communicate with the database. In XTS, participant does this communication, as shown in <xref linkend="fig-participant-backend-control" />.
+    </para>
+    <figure id="fig-participant-backend-control">
+      <title>Transactions, Participants, and Back-End Transaction Control</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-participant-backend-control.png" format="PNG"/>
+	</imageobject>
+      </mediaobject>
+    </figure>
+
+    <section>
+      <title>Atomic Transaction</title>
+      <para>
+	All Atomic Transaction participants are instances of the <xref linkend="sect-Durable2PCParticipant" /> or <xref linkend="sect-Volatile2PCParticipant" />.	
+      </para>
+
+      
+      <section id="sect-Durable2PCParticipant">
+	<title>Durable2PCParticipant</title>
+	<para>
+	  A Durable2PCParticipant supports the WS-Atomic Transaction Durable2PC protocol with the signatures listed in <xref linkend="list-Durable2PCParticipant-signatures" />, as per the <interfacename>com.arjuna.wst11.Durable2Participant</interfacename> interface.
+	</para>
+	<variablelist id="list-Durable2PCParticipant-signatures">
+	  <title>Durable2PCParticipant Signatures</title>
+	  <varlistentry>
+	    <term><methodname>prepare</methodname></term>
+	    <listitem>
+	      <para>
+		The participant should perform any work necessary, so that it
+		can either commit or roll back the work performed by the Web
+		service under the scope of the transaction. The implementation
+		is free to do whatever it needs to in order to fulfill the
+		implicit contract between it and the coordinator.
+	      </para>
+	      <para>
+		The participant indicates whether it can <systemitem>prepare</systemitem> by returning an instance of the <interfacename>com.arjuna.wst11.Vote</interfacename>, with one of three values.
+	      </para>
+	      <itemizedlist>
+		<listitem>
+		  <para>
+		    <literal>ReadOnly</literal> indicates that the participant does not need to be informed of the transaction outcome, because it did not update any state information.
+		  </para>
+		</listitem>
+		<listitem>
+		  <para>
+		    <literal>Prepared</literal> indicates that the participant is ready to commit or roll back, depending on the final transaction outcome. Sufficient state updates have been made persistent to accomplish this.
+		  </para>
+		</listitem>
+		<listitem>
+		  <para>
+		    <literal>Aborted</literal> indicates that the participant has aborted and the transaction should also attempt to do so.
+		  </para>
+		</listitem>
+	      </itemizedlist>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>commit</methodname></term>
+	    <listitem>
+	      <para>
+		The participant should make its work permanent. How it accomplishes this depends upon its implementation. For instance, in the theater example, the reservation of the ticket is committed. If commit processing cannot complete, the participant should throw a <systemitem>SystemException</systemitem> error, potentially leading to a heuristic outcome for the transaction.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>rollback</methodname></term>
+	    <listitem>
+	      <para>
+		The participant should undo its work. If rollback processing cannot complete, the participant should throw a <systemitem>SystemException</systemitem> error, potentially leading to a heuristic outcome for the transaction.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>unknown</methodname></term>
+	    <listitem>
+	      <para>
+		This method has been deprecated and is slated to be removed from XTS in the future.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>error</methodname></term>
+	    <listitem>
+	      <para>
+		In rare cases when recovering from a system crash, it may be impossible to complete or roll back a previously prepared participant, causing the <methodname>error</methodname> operation to be invoked.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </section>
+
+      
+      <section id="sect-Volatile2PCParticipant">
+	<title>Volatile2PCParticipant</title>
+	<para>
+	  This participant supports the WS-Atomic Transaction Volatile2PC protocol with the signatures listed in <xref linkend="list-Volatile2PCParticipant-signatures" />, as per the <interfacename>com.arjuna.wst11.Volatile2Participant</interfacename> interface.
+	</para>
+	<variablelist id="list-Volatile2PCParticipant-signatures">
+	  <title>Volatile2PCParticipant Signatures</title>
+	  <varlistentry>
+	    <term><methodname>prepare</methodname></term>
+	    <listitem>
+	      <para>
+		The participant should perform any work necessary to flush any
+		volatile data created by the Web service under the scope of the
+		transaction, to the system store. The implementation is free to
+		do whatever it needs to in order to fulfill the implicit
+		contract between it and the coordinator.
+	      </para>
+	      <para>
+		The participant indicates whether it can <systemitem>prepare</systemitem> by returning an instance of the <interfacename>com.arjuna.wst11.Vote</interfacename>, with one of three values.
+	      </para>
+	      <itemizedlist>
+		<listitem>
+		  <para>
+		    <literal>ReadOnly</literal> indicates that the participant does not need to be informed of the transaction outcome, because it did not change any state information during the life of the transaction.
+		  </para>
+		</listitem>
+		<listitem>
+		  <para>
+		    <literal>Prepared</literal> indicates that the participant wants to be notified of the final transaction outcome via a call to <methodname>commit</methodname> or <methodname>rollback</methodname>.
+		  </para>
+		</listitem>
+		<listitem>
+		  <para>
+		    <literal>Aborted</literal> indicates that the participant has aborted and the transaction should also attempt to do so.
+		  </para>
+		</listitem>
+	      </itemizedlist>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>commit</term>
+	    <listitem>
+	      <para>
+		The participant should perform any cleanup activities required, in response to a successful transaction commit. These cleanup activities depend upon its implementation. For instance, it may flush cached backup copies of data modified during the transaction. In the unlikely event that commit processing cannot complete, the participant should throw a <systemitem>SystemException</systemitem> error. This will not affect the outcome of the transaction but will cause an error to be logged. This method may not be called if a crash occurs during commit processing.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>rollback</term>
+	    <listitem>
+	      <para>
+		The participant should perform any cleanup activities required, in response to a transaction abort. In the unlikely event that rollback processing cannot complete, the participant should throw a <systemitem>SystemException</systemitem> error. This will not affect the outcome of the transaction but will cause an error to be logged. This method may not be called if a crash occurs during commit processing.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>unknown</term>
+	    <listitem>
+	      <para>
+		This method is deprecated and will be removed in a future release of XTS.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>error</term>
+	    <listitem>
+	      <para>
+		This method should never be called, since volatile participants are not involved in recovery processing.	  
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+	
+      </section>
+
+
+    </section>
+
+    
+    <section>
+      <title>Business Activity</title>
+      <para>
+	All Business Activity participants are instances one or the other of the interfaces described in  <xref linkend="sect-BusinessAgreementWithParticipantCompletion" /> or <xref linkend="sect-BusinessAgreementWithCoordinatorCompletion" /> interface.	
+      </para>
+
+      
+      <section id="sect-BusinessAgreementWithParticipantCompletion">
+	<title>BusinessAgreementWithParticipantCompletion</title>
+	<para>
+	  The <interfacename>BusinessAgreementWithParticipantCompletion</interfacename> interface supports the WS-Transactions <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> protocol with the signatures listed in <xref linkend="list-BusinessAgreementWithParticipantCompletion" />, as per interface <interfacename>com.arjuna.wst11.BusinessAgreementWithParticipantCompletionParticipant</interfacename>.
+	</para>
+	<variablelist id="list-BusinessAgreementWithParticipantCompletion">
+	  <title><interfacename>BusinessAgreementWithParticipantCompletion</interfacename> Signatures</title>
+	  <varlistentry>
+	    <term><methodname>close</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction has completed successfully. The participant has previously informed the coordinator that it was ready to complete.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>cancel</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction has canceled, and the participant should undo any work. The participant cannot have informed the coordinator that it has completed.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>compensate</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction has canceled. The participant previously informed the coordinator that it had finished work but could compensate later if required, and it is now requested to do so. If compensation cannot be performed, the participant should throw a <systemitem>FaultedException</systemitem> error, potentially leading to a heuristic outcome for the transaction. If compensation processing cannot complete because of a transient condition then the participant should throw a <systemitem>SystemException</systemitem> error, in which case the compensation action may be retried or the transaction may finish with a heuristic outcome.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>status</methodname></term>
+	    <listitem>
+	      <para>
+		Return the status of the participant.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>unknown</methodname></term>
+	    <listitem>
+	      <para>
+		This method is deprecated and will be removed a future XTS release.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>error</term>
+	    <listitem>
+	      <para>
+		In rare cases when recovering from a system crash, it may be impossible to compensate a previously-completed participant. In such cases the <methodname>error</methodname> operation is invoked.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </section>
+
+      
+      <section id="sect-BusinessAgreementWithCoordinatorCompletion">
+	<title>BusinessAgreementWithCoordinatorCompletion</title>
+	<para>
+	  The BusinessAgreementWithCoordinatorCompletion participant supports the WS-Transactions <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem> protocol with the signatures listed in <xref linkend="list-BusinessAgreementWithCoordinatorCompletion-signatures" />, as per the <interfacename>com.arjuna.wst11.BusinessAgreementWithCoordinatorCompletionParticipant</interfacename> interface.
+	</para>
+	<variablelist id="list-BusinessAgreementWithCoordinatorCompletion-signatures">
+	  <title>BusinessAgreementWithCoordinatorCompletion Signatures</title>
+	  <varlistentry>
+	    <term><methodname>close</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction completed successfully. The participant previously informed the coordinator that it was ready to complete.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>cancel</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction canceled, and the participant should undo any work.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>compensate</methodname></term>
+	    <listitem>
+	      <para>
+		The transaction canceled. The participant previously informed the coordinator that it had finished work but could compensate later if required, and it is now requested to do so. In the unlikely event that compensation cannot be performed the participant should throw a <systemitem>FaultedException</systemitem> error, potentially leading to a heuristic outcome for the transaction. If compensation processing cannot complete because of a transient condition, the participant should throw a <systemitem>SystemException</systemitem> error, in which case the compensation action may be retried or the transaction may finish with a heuristic outcome.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>complete</methodname></term>
+	    <listitem>
+	      <!--
+	      <para>
+		The coordinator is informing the participant that all work it needs to do within the scope of this business activity has been received.
+	      </para>
+	      -->
+	      <para>
+		The coordinator is informing the participant all work it needs
+		to do within the scope of this business activity has been
+		completed and that it should make permananent any provisional
+		changes it has made.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>status</methodname></term>
+	    <listitem>
+	      <para>
+		Returns the status of the participant.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>unknown</methodname></term>
+	    <listitem>
+	      <para>
+		This method is deprecated and will be removed in a future
+		release of XTS.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>error</methodname></term>
+	    <listitem>
+	      <para>
+		In rare cases when recovering from a system crash, it may be impossible to compensate a previously completed participant. In such cases, the <methodname>error</methodname> method is invoked.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </section>
+
+      
+      <section>
+	<title>BAParticipantManager</title>
+	<para>
+	  In order for the Business Activity protocol to work correctly, the participants must be able to autonomously notify the coordinator about changes in their status. Unlike the Atomic Transaction protocol, where all interactions between the coordinator and participants are instigated by the coordinator when the transaction terminates, the BAParticipantManager interaction pattern requires the participant to be able to talk to the coordinator at any time during the lifetime of the business activity.
+	</para>
+	<para>
+	  Whenever a participant is registered with a business activity, it
+	  receives a handle on the coordinator. <!--This handle is an instance
+	  of the <interfacename>BAParticipantManager</interfacename> interface,
+	  located in
+	  <interfacename>com.arjuna.wst11.BAParticipantManager</interfacename>,-->This
+	  handle is an instance of interface
+	  com.arjuna.wst11.BAParticipantManager with the methods listed in <xref
+	  linkend="list-BAParticipantManager" />.
+	</para>
+	<variablelist id="list-BAParticipantManager">
+	  <title>BAParticipantManager Methods</title>
+	  <varlistentry>
+	    <term><methodname>exit</methodname></term>
+	    <listitem>
+	      <para>
+		The participant uses the method <methodname>exit</methodname> to inform the coordinator that is has left the activity. It will not be informed when and how the business activity terminates. This method may only be invoked while the participant is in the <systemitem>active</systemitem> state (or the <systemitem>completing</systemitem> state, in the case of a participant registered for the <systemitem>ParticipantCompletion</systemitem> protocol). If it is called when the participant is in any other state, a <systemitem>WrongStateException</systemitem> error is thrown. An <methodname>exit</methodname> does not stop the activity as a whole from subsequently being closed or canceled/compensated, but only ensures that the exited participant is no longer involved in completion, close or compensation of the activity.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>completed</methodname></term>
+	    <listitem>
+	      <para>
+		The participant has completed its work, but wishes to continue in the business activity, so that it will eventually be informed when, and how, the activity terminates. The participant may later be asked to compensate for the work it has done or learn that the activity has been closed.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term><methodname>fault</methodname></term>
+	    <listitem>
+	      <para>
+		The participant encountered an error during normal activation and has done whatever it can to compensate the activity. The <methodname>fault</methodname> method places the business activity into a mandatory <systemitem>cancel-only</systemitem> mode. The faulted participant is no longer involved in completion, close or compensation of the activity.	  
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </section>
+
+    </section>
+
+  </section>
+
+  
+  <section>
+    <title>Participant Creation and Deployment</title>
+    <para>
+      The participant provides the plumbing that drives the transactional aspects of the service. This section discusses the specifics of Participant programming and usage.
+    </para>
+
+    
+    <section>
+      <title>Implementing Participants</title>
+      <para>
+	Implementing a participant is a relatively straightforward task. However, depending on the complexity of the transactional infrastructure that the participant needs to manage, the task can vary greatly in complexity and scope.  Your implementation needs to implement one of the interfaces found under <package>com.arjuna.wst11</package>.
+      </para>
+      <note>
+	<!--
+	<para>
+	  In previous versions of XTS, the interfaces were found in <package>com.arjuna.wst</package>.
+	</para>
+	-->
+	<para>
+	  The corresponding participant interfaces used in the 1.0 protocol 
+	  implementation are located in package <code>com.arjuna.wst</code>.
+	</para>
+      </note>
+    </section>
+
+    
+    <section>
+      <title>Deploying Participants</title>
+      <!--
+      <para>
+	XTS includes transparent message routing functionality, which allows participants to be located on a different server than the Transaction Service. The Participant classes are not exposed directly as Web Services, but registered with a web service which receives messages from the Transaction Manager and maps them to appropriate method invocations on the relevant Participant instance.
+      </para>
+      <para>
+	Transactional Web Services typically enroll a new Participant instance of the desired type for each new transaction. You need to provide a unique identifier during enrollment. This identifier is used to map transaction protocol messages to the appropriate participant instance. Participant method invocations occur outside of a specific transaction context. Therefore, if your Participant implementation needs information about the transaction context, then you should supply this to the Participant instance, typically as an argument to the constructor function. Sample Participant implementations and usage are available as part of the demonstration applications included with XTS.
+      </para>
+      <para>
+	You need to deploy the application code which creates and enrolls Participants, along with the XTS services and libraries necessary for receiving and processing incoming messages from the Transaction Manager. To deploy this code in the Enterprise Application Platform, place the XTS service archive (SAR) into the server <filename>deploy/</filename> directory. 
+      </para>
+
+      -->
+      <para>
+	Transactional web services and transactional clients are deployed by 
+	placing them in the application server deploy directory alongside the 
+	XTS service archive (SAR). The SAR exports all the client and web 
+	service API classes needed to manage transactions and enroll and 
+	manage participant web services. It provides implementations of all 
+	the WS-C and WS-T coordination services, not just the coordinator 
+	services. In particular, it exposes the client and web service 
+	participant endpoints which are needed to receive incoming messages 
+	originating from the coordinator.
+      </para>
+      <para>
+	Normally, a transactional application client and the transaction web 
+	service it invokes will be deployed in different application 
+	servers. As long as the XTS SAR is deployed to each of these 
+	containers XTS will transparently route coordination messages from 
+	clients or web services to their coordinator and vice versa. When the 
+	the client begins a transaction by default it creates a context using 
+	the coordination services in its local container. The context holds a 
+	reference to the local Registration Service which means that any web 
+	services enlisted in the transaction enrol with the cooridnation 
+	services in the same container."
+      </para>
+      <para>
+	The coordinator does not need to reside in the same container as the 
+	client application. By configuring the client deployment appropriately 
+	it is possible to use the coordinator services co-located with one of 
+	the web services or even to use services deployed in a separate, 
+	dedicated container. See Chapter 8 Stand-Alone Coordination for 
+	details of how to configure a coordinator located in a different 
+	container to the client.
+      </para>
+      <warning>
+	<para>
+	  In previous releases, XTS applications were deployed using the appropriate XTS and Transaction Manager <filename>.jar</filename>, <filename>.war</filename>, and configuration files bundled with the application. This deployment method is no longer supported in the &APPSERVER;.
+	</para>
+      </warning>
+    </section>
+  </section>
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Preface.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<preface id="pref-Transactions_XTS_Programmers_Guide-Preface">
+	<title>Preface</title>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	</xi:fallback>
+	</xi:include>
+</preface>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Protocols_Overview.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Protocols_Overview.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Protocols_Overview.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,652 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Overview of Protocols Used by XTS</title>
+
+  <indexterm><primary>WS-Coordination</primary><secondary>WS-C</secondary></indexterm>
+  <indexterm><primary>WS-Atomic Transaction</primary><secondary>WS-AT</secondary></indexterm>
+  <indexterm><primary>activation</primary></indexterm>
+  <indexterm><primary>registration</primary></indexterm>
+  <indexterm><primary>completion</primary></indexterm>
+  <indexterm><primary>WS-Business Activity</primary><secondary>WS-BA</secondary></indexterm>
+  <indexterm><primary>coordination context</primary></indexterm>
+  <indexterm><primary>Activation Coordinator</primary></indexterm>
+  <indexterm><primary>Volatile2PC</primary></indexterm>
+  <indexterm><primary>Durable2PC</primary></indexterm>
+  <indexterm><primary>Two-Phase Commit</primary><secondary>2PC</secondary></indexterm>
+  <indexterm><primary>One-Phase Commit</primary><secondary>1PC</secondary></indexterm>
+  <indexterm><primary>BusinessAgreementWithParticipantCompletion</primary></indexterm>
+  <indexterm><primary>BusinessAgreementWithCoordinatorCompletion</primary></indexterm>
+  
+  <para>
+    This section discusses fundamental concepts associated with the WS-Coordination, WS-Atomic Transaction and WS-Business Activity protocols, as defined in each protocol's specification. Foundational information about these protocols is important to understanding the remaining material covered in this guide.
+  </para>
+  <!-- I don't like this but it's in the original so I'll leave it for now. -->
+  <note>
+    <para>
+      If you are familiar with the WS-Coordination, WS-Atomic Transaction, and WS-Business Activity specifications you may only need to skim this chapter.
+    </para>
+  </note>
+  
+  <section>
+    <title>WS-Coordination</title>
+    <para>
+      In general terms, <firstterm>coordination</firstterm> is the act of one entity,known as the coordinator, disseminating information to a number of participants for some domain-specific reason. This reason could be to reach consensus on a decision by a distributed transaction protocol, or to guarantee that all participants obtain a specific message, such as in a reliable multicast environment. When parties are being coordinated, information, known as the <firstterm>coordination context</firstterm>, is propagated to tie together operations which are logically part of the same coordinated work or activity. This context information may flow with normal application messages, or may be an explicit part of a message exchange. It is specific to the type of coordination being performed.
+    </para>
+    <para>
+      The fundamental idea underpinning <firstterm>WS-Coordination (WS-C)</firstterm> is that a coordination infrastructure is needed in a Web Services environment. The WS-C specification defines a framework that allows different coordination protocols to be plugged in to coordinate work between clients, services, and participants, as shown in <xref linkend="fig-ws-c-architecture" />.
+    </para>
+
+    <figure id="fig-ws-c-architecture">
+      <title>WS-C Architecture</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-ws-c-overview.png" format="PNG"/>
+	</imageobject>
+	<textobject>
+	  <para>
+	    The WS-C specification speaks of <firstterm>activities</firstterm>, which are distributed units of work, involving one or more parties. These parties may be services, components, or even objects. At this level, an activity is minimally specified and is simply created, run, and then completed.
+	  </para>
+	</textobject>
+      </mediaobject>
+    </figure>
+
+    <para>
+      Whatever coordination protocol is used, and in whatever domain it is deployed, the same generic requirements are present.
+    </para>
+    <itemizedlist id="list-requirements-for-wsc">
+      <title>Generic Requirements for WS-C</title>
+      <listitem><para>Instantiation, or activation, of a new coordinator for the specific coordination protocol, for a particular application instance.</para></listitem>
+      <listitem><para>Registration of participants with the coordinator, such that they will receive that coordinator’s protocol messages during (some part of) the application’s lifetime.</para></listitem>
+      <listitem><para>Propagation of contextual information between Web Services that comprise the application.</para></listitem>
+      <listitem><para>An entity to drive the coordination protocol through to completion.</para></listitem>
+    </itemizedlist>
+    
+    <para>
+      The first three of the points in <xref linkend="list-requirements-for-wsc" /> are the direct responsibility of WS-C, while the fourth is the responsibility of a third-party entity. The third-party entity is usually the client component of the overall application. These four WS-C roles and their relationships are shown in <xref linkend="fig-wsc-four-roles" />.
+    </para>
+    
+    <figure id="fig-wsc-four-roles">
+      <title>Four Roles in WS-C</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-wsc-four-roles.png" format="PNG"/>
+	</imageobject>
+      </mediaobject>
+    </figure>
+
+    <section>
+      <title>Activation</title>
+
+      <!--
+      <para>
+	The WS-C framework exposes an Activation Service which supports the creation of coordinators for specific coordination protocols and retrieval of associated contexts. Activation services are invoked asynchronously, and so the specification defines the interfaces of the activation service itself and of the invoking service. This allows the activation service to call back to deliver the results of the activation, which consist of a context that identifies the protocol type and coordinator location. These interfaces are presented in <xref linkend="example-wsc-interfaces" />. The code shows that the activation service has a one-way operation that expects to receive a <systemitem>CreateCoordinationContext</systemitem> message. The service that sends the <systemitem>CreateCoordinationContext</systemitem> message expects to be called back with a <systemitem>CreateCoordinationContextResponse message</systemitem>, or to be notified of a problem via an error message.
+      </para>
+      -->
+      <para>
+	The WS-C framework exposes an Activation Service which supports the
+	creation of coordinators for specific coordination protocols and
+	retrieval of associated contexts. Activation services are invoked
+	synchronously using an RPC style exchange. So, the service WSDL defines
+	a single port declaring a
+	<methodname>CreateCoordinationContext</methodname> operation.  This
+	operation takes an input specfying the details of the transaction to be
+	created, including the type of coordination required, timeout, and other
+	relevant information. It returns an output containing the details of the
+	newly-created transaction context: the transaction identifier,
+	coordination type, and registration service URL.
+      </para>
+      
+      <example id="example-wsc-interfaces">
+	<title></title>
+	<programlisting role="XML" language="XML"><xi:include href="extras/example-wsc-interfaces.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+      </example>
+
+      <note>
+	<!--
+	<para>
+	  The Activation Coordinator service employs an RPC-style message exchange, so an Activation Requester service is not necessary.
+	</para>
+	-->
+	<para>
+	  The 1.0 Activation Coordinator service employs an asynchronous message 
+	  exchange comprised of two one-way messages, so an Activation Requester 
+	  service is also necessary.
+	</para>
+      </note>
+    </section> <!--       <title>Activation</title> -->
+
+    <section>
+      <title>Registration</title>
+      <!--
+      <para>
+	The context returned by the activation service includes information which exposes a Registration Service. This service allows participants to register to receive protocol messages from the coordinator which is associated with the context. Depending upon the coordination protocol, more than one choice of participant protocol may be available. Like the activation service, the registration service assumes asynchronous communication. Thus, it specifies WSDL for both registration service and registration requester. See <xref linkend="example-wsc-registration" /> for more information.
+      </para>
+      -->
+      <para>
+	The context returned by the activation service includes the URL of a 
+	Registration Service. When a web service receieves a service request 
+	accompanied by a transaction context, it contacts the Registration 
+	Service to enroll as a participant in the transaction. The registration 
+	request includes a participant protocol defining the role the web 
+	service wishes to take in the transaction. Depending upon the 
+	coordination protocol, more than one choice of participant protocol 
+	may be available. 
+      </para>
+      <para>
+	Like the activation service, the registration service assumes
+	synchronous communication. Thus, the service WSDL exposes a single port
+	declaring a <methodname>Register</methodname> operation. This operation
+	takes an input specifying the details of the participant which is to be
+	registered, including the participant protocol type. It returns a
+	corresponding output response.
+      </para>
+      <example id="example-wsc-registration">
+	<title>Registration ServiceWSDL Interface</title>
+	<programlisting><xi:include href="extras/example-wsc-registration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+      </example>
+
+      <para>
+	Once a participant is registered with a coordinator through the registration service, it receives coordination messages from the coordinator. Typical messages include such things as “prepare to complete” and “complete” messages, if a two-phase protocol is used. Where the coordinator’s protocol supports it, participants can also send messages back to the coordinator.
+      </para>
+
+      <note>
+	<!--
+	<para>
+	  The Registration Coordinator employs an RPC-style message exchange, so a Registration Requester service is not necessary.
+	</para>
+	-->
+	<para>
+	  The 1.0 Registration Coordinator service employs an asynchronous 
+	  message exchange comprised of two one way messages, so a Registration 
+	  Requester service is also necessary
+	</para>
+      </note>
+    </section> <!--       <title>Registration</title> -->
+
+    <section>
+      <title>Completion</title>
+      <para>
+	The role of terminator is generally filled by the client application. At an appropriate point, the client asks the coordinator to perform its particular coordination function with any registered participants, to drive the protocol through to its completion. After completion, the client application may be informed of an outcome for the activity. This outcome may take any form along the spectrum from simple success or failure notification, to complex structured data detailing the activity’s status.
+      </para>
+    </section> <!--     <title>Completion</title> -->
+  </section> <!--     <title>WS-Coordination</title> -->
+
+  <section>
+    <title>WS-Transaction</title>
+    <para>
+      <firstterm>WS-Transaction (WS-T)</firstterm> comprises the pair of
+      transaction coordination protocols, <firstterm>WS-Atomic Transaction
+      (WS-AT)</firstterm> and <firstterm>WS-Business Activity
+      (WS-BA)</firstterm>, which utilize the coordination framework provided by
+      <firstterm>WS-Coordination (WS-C)</firstterm>.
+    </para>
+    <para>
+      <firstterm>WS-Transactions</firstterm> was developed to unify existing traditional transaction processing systems, allowing them to communicate reliably with one another without changes to the systems' own function.
+    </para>
+
+    <section>
+      <title>WS-Transaction Foundations</title>
+      <para>
+	WS-Transaction is layered upon the WS-Coordination protocol, as shown in as
+	shown in <xref linkend="wsc-wst-interop" />.
+      </para>
+
+      <figure id="wsc-wst-interop">
+	<title>WS-Coordination, WS-Transaction, and WS-Business Activity</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata fileref="images/fig-wsc-wst-interop.png" format="PNG"/>
+	  </imageobject>
+	  <textobject>
+	    <para></para>
+	  </textobject>
+	</mediaobject>
+      </figure>
+
+      <para>
+	WS-C provides a generic framework for specific coordination protocols, like WS-Transaction, used in a modular fashion. WS-C provides only context management, allowing contexts to be created and activities to be registered with those contexts. WS-Transaction leverages the context management framework provided by WS-C in two ways.
+      </para>
+      <orderedlist>
+	<listitem>
+	  <para>
+	    It extends the WS-C context to create a transaction context.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    It augments the activation and registration services with a number of additional services (Completion, Volatile2PC, Durable2PC, BusinessAgreementWithParticipantCompletion, and BusinessAgreementWithCoordinatorCompletion) and two protocol message sets (one for each of the transaction models supported in WS-Transaction), to build a fully-fledged transaction coordinator on top of the WS-C protocol infrastructure.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    An important aspect of WS-Transaction that differs from traditional 
+	    transaction protocols is that a synchronous request/response model is 
+	    not assumed. Sequences of one way messages are used to implement 
+	    communications between the client/participant and the coordination 
+	    services appropriate to the transaction's coordination and participant 
+	    protocols. This is significant because it means that the client and 
+	    participant containers must deploy XTS service endpoints to receive 
+	    messages from the coordinator service.
+	  </para>
+	  <para>
+	    This requirement is visible in the details of the
+	    <methodname>Register</methodname> and
+	    <methodname>RegisterResponse</methodname> messages declared in the
+	    Registration Service WSDL in <xref
+	    linkend="example-wsc-registration" />. The
+	    <methodname>Register</methodname> message contains the URL of an
+	    endpoint in the client or web service container. This URL is used
+	    when a WS-Transaction coordination service wishes to dispatch a
+	    message to the clinet or web service. Similarly, the
+	    <methodname>RegisterResponse</methodname> message contains a URL
+	    iendtifying an endpoint for the protocol-specific WS-Transaction
+	    coordination service for which the client/web service is registered,
+	    allowing messages to be addressed to the transaction coordinator.
+	  </para>
+	</listitem>
+      </orderedlist>
+    </section> <!--       <title>WS-Coordination Foundations</title> -->
+
+    <section>
+      <title>WS-Transaction Architecture</title>
+      <!--
+      <para>
+	WS-Transaction views the service and participant as distinct roles, making the distinction between a transaction-aware service and the participants that act on behalf of the service during a transaction. Transactional services deal with business-level protocols, while the participants handle the underlying WS-Transaction protocols, as shown <xref linkend="ws-trans-global-view" />.
+      </para>
+      -->
+
+      <para>
+	WS-Transaction distnguishes the transaction-aware web service in its
+	role executing business-logic, from the web service acting as a
+	participant in the transaction, communicating with and responding to its
+	transaction coordinator. Transaction-aware web services deal with
+	application clients using business-level protocols, while the
+	participant handles the underlying WS-Transaction protocols, as shown in
+	<xref linkend="ws-trans-global-view" />.
+      </para>
+      
+      <figure id="ws-trans-global-view">
+	<title>WS-Transaction Global View</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata fileref="images/ws-trans-global-view.png" format="PNG"/>
+	  </imageobject>
+	</mediaobject>
+      </figure>
+
+      <para>
+	A transaction-aware web service encapsulates the business logic or work that needs to be conducted within the scope of a transaction. This work cannot be confirmed by the application unless the transaction also commits. Thus, control is ultimately removed from the application and given to the transaction.
+      </para>
+      <para>
+	The participant is the entity that, under the dictates of the transaction coordinator, controls the outcome of the work performed by the transaction-aware Web service. In <xref linkend="ws-trans-global-view" />, each web service is shown with one associated participant that manages the transaction protocol messages on behalf of its web service. <xref linkend="ws-trans-services-participants" />, however, shows a close-up view of a single web service, and a client application with their associated participants.
+      </para>
+      <figure id="ws-trans-services-participants">
+	<title>WS-Transaction Web Services and Participants</title>
+	<mediaobject>
+	  <imageobject>
+	    <imagedata fileref="images/fig-ws-trans-services-participants.png" format="PNG"/>
+	  </imageobject>
+	</mediaobject>
+      </figure>
+      <!--
+      <para>
+	The transaction-aware Web service and its participant both serve a shared transactional resource, and the JAXTX API provides a control relationship between them. In <xref linkend="ws-trans-services-participants" />, the database is assumed to be accessed through a transactional JDBC database driver, where SQL statements are sent to the database for processing via that driver, but where those statements are tentative and only commit if the transaction does. For this to work, the driver/database associates a participant with the transaction. This participant informs the database of the transaction outcome. Since all transactional invocations on the Web service carry a transaction context, the participant working with the database is able to identify the work that the transactional service has done within the scope of a specific transaction, and either commit or roll back the work.
+      </para>
+      -->
+      <para>
+	The transaction-aware web service employs a back end database accessed
+	via a JDBC driver, which sends SQL statements to the database for
+	processing. However, those statements should only commit if the
+	enclosing web service transaction does. For this to work, the web
+	service must employ transaction bridging. Transaction bridging registers
+	a participant with the coordinator for the web service transaction and
+	creates a matching XA transaction within which it can invoke the driver
+	to make tentative changes to the database. The web service ensures that
+	service requests associated with a specific web service transaction are
+	executed in the scope of the corresponding XA transaction, grouping
+	changes common to a given transaction while isolating changes belonging
+	to different transactions. The participant responds to prepare, commit,
+	or rollback requests associated from the web service transaction
+	coordinator by forwarding the same operations to the underlying XA
+	transaction coordinator, ensuring that the local outcome in the database
+	corresponds with the global outcome of the web service transaction as a
+	whole.
+      </para>
+      <para>
+	Things are less complex for the client. Through its API, the client application registers a participant with the transaction, and uses this participant to control termination of the transaction.
+      </para>
+    </section> <!--       <title>WS-Transaction Architecture</title> -->
+
+    <section>
+      <title>WS_Transaction Models</title>
+      <para>
+	It has been established that traditional transaction models are not appropriate for Web Services. No one specific protocol is likely to be sufficient, given the wide range of situations where Web service transactions are likely to be used. The WS-Transaction specification proposes two distinct models, where each supports the semantics of a particular kind of B2B interaction. 
+      </para>
+
+      <para>
+	The following discussion presents the interactions between the client, web service and the transaction coordinator in great detail for expository purposes only. Most of this activity happens automatically behind the scenes. The actual APIs used to initiate and complete a transaction and to register a participant and drive it through the commit or abort process are described in <xref linkend="sec-xts-api" />.
+      </para>
+
+      
+      <section>
+	<title>Atomic Transactions</title>
+	<para>
+	  An <firstterm>atomic transaction (AT)</firstterm> is similar to
+	  traditional ACID transactions, and is designed to support
+	  short-duration interactions where ACID semantics are
+	  appropriate. <!--Within the scope of an AT, services typically enroll
+	  transaction-aware resources, such as databases and message queues,
+	  indirectly as participants under the control of the transaction. When
+	  the transaction terminates, the outcome decision of the AT is
+	  propagated to each enlisted resource via the participant, and the
+	  appropriate <systemitem>commit</systemitem> or
+	  <systemitem>rollback</systemitem> actions are taken by each.-->Within
+	  the scope of an AT, web services typically employ bridging to allow
+	  them to access XA resources, such as databases and message queues,
+	  under the control of the web service transaction. When the transaction
+	  terminates, the participant propagates the outcome decision of the AT
+	  to the XA resources, and the appropriate commit or rollback actions
+	  are taken by each.
+	</para>
+	<para>
+	  All services and associated participants are expected to provide ACID semantics, and it is expected that any use of atomic transactions occurs in environments and situations where ACID is appropriate. Usually, this environment is a trusted domain, over short durations.
+	</para>
+	<procedure>
+	  <title>Atomic Transaction Process</title>
+	  <step>
+	    <para>
+	      To begin an atomic transaction, the client application first locates a WS-C Activation Coordinator web service that supports WS-Transaction.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      The client sends a WS-C <systemitem>CreateCoordinationContext</systemitem> message to the service, specifying <ulink url="http://schemas.xmlsoap.org/ws/2004/10/wsat" /> as its coordination type.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      The client receives an appropriate WS-Transaction context from the activation service.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      The response to the <systemitem>CreateCoordinationContext</systemitem> message, the transaction context, has its <systemitem>CoordinationType</systemitem> element set to the WS-Atomic Transaction namespace, <ulink url="http://schemas.xmlsoap.org/ws/2004/10/wsat" />. It also contains a reference to the atomic transaction coordinator endpoint, the WS-C Registration Service, where participants can be enlisted.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      The client normally proceeds to invoke Web Services and complete the transaction, either committing all the changes made by the web services, or rolling them back. In order to be able to drive this completion activity, the client must register itself as a participant for the <systemitem>Completion</systemitem> protocol, by sending a <systemitem>Register</systemitem> message to the Registration Service whose endpoint was returned in the Coordination Context.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      Once registered for Completion, the client application then interacts with Web Services to accomplish its business-level work. With each invocation of a business Web service, the client inserts the transaction context into a SOAP header block, such that each invocation is implicitly scoped by the transaction. The toolkits that support WS-Atomic Transaction-aware Web Services provide facilities to correlate contexts found in SOAP header blocks with back-end operations. This ensures that modifications made by the Web service are done within the scope of the same transaction as the client and subject to commit or rollback by the transaction coordinator.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      Once all the necessary application-level work is complete, the client can terminate the transaction, with the intent of making any changes to the service state permanent. The completion participant instructs the coordinator to try to commit or roll back the transaction. When the commit or roll-back operation completes, a status is returned to the participant to indicate the outcome of the transaction.
+	    </para>
+	  </step>
+	</procedure>
+
+	<para>
+	  Although this description of the completion protocol seems straightforward, it hides the fact that in order to resolve the transaction to an outcome, several other participant protocols need to be followed.
+	</para>
+
+	<variablelist>
+	  <varlistentry>
+	    <term>Volatile2pc</term>
+	    <listitem>
+	      <para>
+		The first of these protocols is the optional <firstterm>Volatile2PC</firstterm> (2PC is an abbreviation referring to the two-phase commit). The Volatile2PC protocol is the WS-Atomic Transaction equivalent of the synchronization protocol discussed earlier. It is typically executed where a Web service needs to flush volatile (cached) state, which may be used to improve performance of an application, to a database prior to the transaction committing. Once flushed, the data is controlled by a two-phase aware participant.
+	      </para>
+	      <para>
+		When the completion participant initiates a <systemitem>commit</systemitem> operation, all Volatile2PC participants are informed that the transaction is about to complete, via the <systemitem>prepare</systemitem> message. The participants can respond with one of three messages: <systemitem>prepared</systemitem>, <systemitem>aborted</systemitem>, or <systemitem>readonly</systemitem>. A failure at this stage causes the transaction to roll back.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>Durable2PC</term>
+	    <listitem>
+	      <para>
+		The next protocol in the WS-Atomic Transaction is <firstterm>Durable2PC</firstterm>. The Durable2PC protocol is at the core of WS-Atomic Transaction. It brings about the necessary consensus between participants in a transaction, so the transaction can safely be terminated.
+	      </para>
+	      <para>
+		The Durable2PC protocol ensures atomicity between participants, and is based on the classic technique of <phrase>two-phase commit with presumed abort</phrase>.
+	      </para>
+	      <procedure>
+		<title>Durable2PC Procedure</title>
+		<step>
+		  <para>
+		    During the first phase, when the coordinator sends the prepare message, a participant must make durable any state changes that occurred during the scope of the transaction, so these changes can either be rolled back or committed later. None of the original state information can be lost at this point, since the atomic transaction may still roll back. If the participant cannot <systemitem>prepare</systemitem>, it must inform the coordinator, by means of the <systemitem>aborted</systemitem> message. The transaction will ultimately roll back. If the participant is responsible for a service that did not change any of the transaction's data,, it can return the <systemitem>readonly</systemitem> message, causing it to be omitted from the second phase of the commit protocol. Otherwise, the <systemitem>prepared</systemitem> message is sent by the participant.
+		  </para>
+		</step>
+		<step>
+		  <para>
+		    If no failures occur during the first phase, Durable2PC proceeds to the second phase, in which the coordinator sends the <systemitem>commit</systemitem> message to participants. Participants then make permanent the tentative work done by their associated services, and send a <systemitem>committed</systemitem> message to the coordinator. If any failures occur, the coordinator sends the <systemitem>rollback</systemitem> message to all participants, causing them to discard tentative work done by their associated services, and delete any state information saved to persistent storage at <systemitem>prepare</systemitem>, if they have reached that stage. Participants respond to a rollback by sending an <systemitem>aborted</systemitem> message to the coordinator.
+		  </para>
+		</step>
+	      </procedure>
+	      <note>
+		<para>
+		  The semantics of the WS-Atomic Transaction protocol do not include the one-phase commit optimization. A full two-phase commit is always used, even where only a single participant is enlisted.
+		</para>
+	      </note>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+	<para>
+	  <xref linkend="two-pc-participant-state-transitions" /> shows the state transitions of a WS-Atomic Transaction and the message exchanges between coordinator and participant. Messages generated by the coordinator are represented by solid lines, while the participants' messages use dashed lines.
+	</para>
+	<figure id="two-pc-participant-state-transitions">
+	  <title>WS-Atomic Two-Phase Participant State Transitions</title>
+	  <mediaobject>
+	    <imageobject>
+	      <imagedata fileref="images/fig-2pc-participant-state-transitions.png" format="PNG"/>
+	    </imageobject>
+	  </mediaobject>
+	</figure>
+
+	<para>
+	  Once the Durable2PC protocol completes, the <systemitem>Completion</systemitem> protocol that originally began the termination of the transaction can complete, and inform the client application whether the transaction was committed or rolled back. Additionally, the Volatile2PC protocol may complete.
+	</para>
+	<para>
+	  Like the <systemitem>prepare</systemitem> phase of Volatile2PC, the final phase is optional and can be used to inform participants about the transaction's completion, so that they can release resources such as database connections.
+	</para>
+	<para>
+	  Any registered Volatile2PC participants are invoked after the transaction terminates, and are informed about the transaction's completion state by the coordinator. Since the transaction has terminated, any failures of participants at this stage are ignored, since they have no impact on outcomes.
+	</para>
+	<para>
+	  <xref linkend="fig-at-model" /> illustrates the intricate interweaving of individual protocols comprising the AT as a whole.
+	</para>
+	<figure id="fig-at-model">
+	  <title></title>
+	  <mediaobject>
+	    <imageobject>
+	      <imagedata fileref="images/fig-at-model.png" format="PNG"/>
+	    </imageobject>
+	  </mediaobject>
+	</figure>
+      </section> <!-- <title>Atomic Transactions </title> -->
+
+      
+      <section>
+	<title>Business Activities</title>
+	<para>
+	  Most B2B applications require transactional support in order to guarantee consistent outcome and correct execution. These applications often involve long-running computations, loosely coupled systems, and components that do not share data, location, or administration. It is difficult to incorporate atomic transactions within such architectures.
+	</para>
+	<para>
+	  For example, an online bookshop may reserve books for an individual for a specific period of time. However, if the individual does not purchase the books within that period, they become available again for purchase by other customers. Because it is not possible to have an infinite supply of stock, some online shops may seem, from the user's perspective, to reserve items for them, while actually allow others to preempt the reservation. A user may discover, to his disappointment, that the item is no longer available.
+	</para>
+	<para>
+	  A <firstterm>Business Activity (BA)</firstterm> is designed specifically for these kinds of long-duration interactions, where it is impossible or impractical to exclusively lock resources.
+	</para>
+	<procedure>
+	  <title>BA Process Overview</title>
+	  <step>
+	    <para>
+	      Services are requested to do work.
+	    </para>
+	  </step>
+	  <step>
+	    <para>
+	      Where those services have the ability to undo any work, they inform the BA, in case the BA later decides the cancel the work. If the BA suffers a failure. it can instruct the service to execute its <systemitem>undo</systemitem> behavior.
+	    </para>
+	  </step>
+	</procedure>
+	<para>
+	  The key to BA is that how services do their work and provide compensation mechanisms is not the responsibility of the WS-BA specification. It is delegated to the service provider.
+	</para>
+	<para>
+	  The WS-BA defines a protocol for Web Services-based applications to enable existing business processing and work-flow systems to wrap their proprietary mechanisms and interoperate across implementations and business boundaries.
+	</para>
+	<para>
+	  Unlike the WS-AT protocol model, where participants inform the coordinator of their state only when asked, a child activity within a BA can specify its outcome to the coordinator directly, without waiting for a request. A participant may choose to exit the activity or may notify the coordinator of a failure at any point. This feature is useful when tasks fail, since the notification can be used to modify the goals and drive processing forward, without the need to wait until the end of the transaction to identify failures. A well-designed Business Activity should be proactive.
+	</para>
+	<para>
+	  The BA protocols employ a compensation-based transaction model. When a participant in a business activity completes its work, it may choose to exit the activity. This choice does not allow any subsequent rollback. Alternatively, the participant can complete its activity, signaling to the coordinator that the work it has done can be compensated if, at some later point, another participant notifies a failure to the coordinator. In this latter case, the coordinator asks each non-exited participant to compensate for the failure, giving them the opportunity to execute whatever compensating action they consider appropriate. For instance, participant might credit a bank account which it previously debited. If all participants exit or complete without failure, the coordinator notifies each completed participant that the activity has been closed. 	  
+	</para>
+	<para>
+	  Underpinning all of this are three fundamental assumptions, detailed in <xref linkend="wsba-assumptions" />.
+	</para>
+	<itemizedlist id="wsba-assumptions">
+	  <title>Assumptions of WS-BA</title>
+	  <listitem>
+	    <para>
+	      All state transitions are reliably recorded, including application state and coordination metadata (the record of sent and received messages).
+	    </para>
+	  </listitem>
+	  <listitem>
+	    <para>
+	      All request messages are acknowledged, so that problems are detected as early as possible. This avoids executing unnecessary tasks and can also detect a problem earlier when rectifying it is simpler and less expensive.
+	    </para>
+	  </listitem>
+	  <listitem>
+	    <para>
+	      As with atomic transactions, a <firstterm>response</firstterm> is defined as a separate operation, not as the output of the request. Message I/O implementations typically have timeout requirements too short for BA responses. If the response is not received after a timeout, it is re-sent, repeatedly, until a response is received. The receiver discards all but one identical request received.
+	    </para>
+	  </listitem>
+	</itemizedlist>
+
+	<para>
+	  The BA model has two participant protocols: <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> and <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem>. Unlike the AT protocols which are driven from the coordinator down to participants, this protocol takes the opposite approach.
+	</para>
+
+	<variablelist>
+	  <varlistentry>
+	    <term>BusinessAgreementWithParticipantCompletion</term>
+	    <listitem>
+	      <procedure>
+		<step>
+		  <para>
+		    A participant is initially created in the Active state.
+		  </para>
+		</step>
+		<step>
+		  <para>
+		    If it finishes its work and it is no longer needed within the scope of the BA (such as when the activity operates on immutable data), the participant can unilaterally decide to exit, sending an <systemitem>exited</systemitem> message to the coordinator. However, if the participant finishes and wishes to continue in the BA, it must be able to compensate for the work it has performed. In this case, it sends a <systemitem>completed</systemitem> message to the coordinator and waits for the coordinator to notify it about the final outcome of the BA. This outcome is either a <systemitem>close</systemitem> message, meaning the BA has completed successfully, or a <systemitem>compensate</systemitem> message indicating that the participant needs to reverse its work.
+		  </para>
+		</step>
+	      </procedure>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>BusinessAgreementWithCoordinatorCompletion</term>
+	    <listitem>
+	      <para>
+		The <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem> differs from the <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> protocol in that the participant cannot autonomously decide to complete its participation in the BA, even if it can be compensated.
+	      </para>
+	      <procedure>
+		<step>
+		  <para>
+		    Instead, the completion stage is driven by the client which created the BA, which sends a <systemitem>completed</systemitem> message to the coordinator.
+		  </para>
+		</step>
+		<step>
+		  <para>
+		    The coordinator sends a <systemitem>complete</systemitem> message to each participant, indicating that no further requests will be sent to the service associated with the participant.
+		  </para>
+		</step>
+		<step>
+		  <para>
+		    The participant continues on in the same manner as in the BusinessAgreementWithParticipantCompletion protocol.
+		  </para>
+		</step>
+	      </procedure>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+	<para>
+	  The advantage of the BA model, compared to the AT model, is that is allows the participation of services that cannot lock resources for extended periods.
+	</para>
+	<para>
+	  While the full ACID semantics are not maintained by a BA, consistency can still be maintained through compensation. The task of writing correct compensating actions to preserve overall system consistency is the responsibility of the developers of the individual services under control of the BA. Such compensations may use backward error recovery, but forward recovery is more common.
+	</para>
+	<para>
+	  <xref linkend="fig-bawpc-state-transitions" /> shows the state transitions of a WS-BA <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> participant and the message exchanges between coordinator and participant. Messages generated by the coordinator are shown with solid lines, while the participants' messages are illustrated with dashed lines.
+	</para>
+	<figure id="fig-bawpc-state-transitions">
+	  <title></title>
+	  <mediaobject>
+	    <imageobject>
+	      <imagedata fileref="images/fig-bawpc-state-transitions.png" format="PNG"/>
+	    </imageobject>
+	  </mediaobject>
+	</figure>
+	
+	<para>
+	  <xref linkend="fig-bawcc-state-transitions" /> shows the state transitions of a WS-BA <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem> participant and the message exchanges between coordinator and participant. Messages generated by the coordinator are shown with solid lines, while the participants' messages are illustrated with dashed lines.
+	</para>
+	<figure id="fig-bawcc-state-transitions">
+	  <title></title>
+	  <mediaobject>
+	    <imageobject>
+	      <imagedata fileref="images/fig-bawcc-state-transitions.png" format="PNG"/>
+	    </imageobject>
+	  </mediaobject>
+	</figure>
+      </section> <!-- 	<title>Business Activities</title> -->
+    </section> <!-- <title>WS-Transaction Models</title> -->
+    
+    <section>
+      <title>Application Messages</title>
+      <para>
+	<firstterm>Application messages</firstterm> are the requests and responses sent between parties, that constitute the work of a business process. Any such messages are considered opaque by XTS, and there is no mandatory message format, protocol binding, or encoding style. This means that you are free to use any appropriate Web Services protocol. In XTS, the transaction context is propagated within the headers of SOAP messages.
+      </para>
+
+      <para>
+	  XTS ships with support for service developers building WS-Transactions-aware services on the &APPSERVER;. Interceptors are provided for automatic context handling at both client and service, which significantly simplifies development, allowing you to concentrate on writing the business logic without being sidetracked by the transactional infrastructure. The interceptors add and remove context elements to application messages, without altering the semantics of the messages themselves. Any service which understands what to do with a WS-C context can use it. Services which are not aware of WS-C, WS-Atomic Transaction and WS-Business Activity can ignore the context. XTS manages contexts without user intervention.
+      </para>
+
+      <section>
+	<title>WS-C, WS-Atomic Transaction, and WS-Business Activity Messages</title>
+	<para>
+	  Although the application or service developer is rarely interested in the messages exchanged by the transactional infrastructure, it is useful to understand what kinds of exchanges occur so that the underlying model can be fitted in to an overall architecture.
+	</para>
+	<para>
+	  WS-Coordination, WS-Atomic Transaction and WS-Business Activity-specific messages are transported using SOAP messaging over HTTP. The types of messages that are propagated include instructions to perform standard transaction operations like <systemitem>begin</systemitem> and <systemitem>prepare</systemitem>. 
+	</para>
+	<note>
+	  <para>
+	    XTS messages do not interfere with messages from the application, an application need not use the same transport as the transaction-specific messages. For example, a client application might deliver its application-specific messages using SOAP RPC over SMTP, even though the XTS messages are delivered using a different mechanism.
+	  </para>
+	</note>
+      </section> <!-- 	<title>WS-C, WS-Atomic Transaction, and WS-Business Activity Messages</title> -->
+    </section> <!--       <title>Application Messages</title> -->
+    
+  </section>
+
+  <section>
+    <title>Summary</title>
+    <para>
+      XTS provides a coordination infrastructure which allows transactions to run between services owned by different business, across the Internet. That infrastructure is based on the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. It supports two kinds of transactions: atomic transactions and business activities, which can be combined in arbitrary ways to map elegantly onto the transactional requirements of the underlying problem. The use of the whole infrastructure is simple, because its functionality is exposed through a simple transactioning API. XTS provides everything necessary to keep application and transactional aspects of an application separate, and to ensure that a system's use of transactions does not interfere with the functional aspects of the system itself.
+    </para>
+  </section> <!-- summary -->
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Revision_History.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<appendix id="appe-Transactions_XTS_Programmers_Guide-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>0</revnumber>
+				<date>Mon Jul 12 2010</date>
+				<author>
+					<firstname>Misty</firstname>
+					<surname>Stanley-Jones</surname>
+					<email>mstanley at redhat.com</email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Initial creation of book by publican</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Stand_Alone_Coordination.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Stand_Alone_Coordination.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Stand_Alone_Coordination.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,118 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Stand-Alone Coordination</title>
+
+  <indexterm><primary>stand-alone coordination</primary></indexterm>
+  <indexterm><primary>activation coordinator</primary></indexterm>
+  <indexterm><primary>command-line options</primary></indexterm>
+  <indexterm><primary>SAR</primary><secondary>Service Archive</secondary></indexterm>
+
+
+  <section>
+    <title>Introduction</title>
+    <para>
+      The XTS service is deployed as a JBoss service archive (SAR). The version of the service archive provided with the Transaction Service implements version 1.1 of the WS-C, WS-AT and WS-BA services. You can rebuild the XTS service archive to include both the 1.0 and 1.1 implementations and deploy them side by side. See the service archive build script for for further details.
+    </para>
+    <para>
+      The release service archive obtains coordination contexts from the Activation Coordinator service running on the deployed host. Therefore, WS-AT transactions or WS-BA activities created by a locally-deployed client application are supplied with a context which identifies the Registration Service running on the client's machine. Any Web Services invoked by the client are coordinated by the Transaction Protocol services running on the client's host. This is the case whether the Web Services are running locally or remotely. Such a configuration is called <firstterm>local coordination</firstterm>.
+    </para>
+    <para>
+      You can reconfigure this setting globally for all clients, causing context creation requests to be redirected to an Activation Coordinator Service running on a remote host. Normally, the rest of the coordination process is executed from the remote host. This configuration is called <firstterm>stand-alone coordination</firstterm>.
+    </para>
+    <itemizedlist>
+      <title>Reasons for Choosing a Stand-Alone Coordinator</title>
+      <listitem>
+	<para>
+	  Efficiency: if a client application invokes Web Services on a remote &APPSERVER;, coordinating the transaction from the remote server might be more efficient, since the protocol-specific messages between the coordinator and the participants do not need to travel over the network.
+	</para>
+      </listitem>
+      <listitem>
+	<para>
+	  Reliability: if the coordinator service runs on a dedicated host, there is no danger of failing applications or services affecting the coordinator and causing failures for unrelated transactions.
+	</para>
+      </listitem>
+      <listitem>
+	<para>
+	  A third reason might be to use a coordination service provided by a third party vendor.
+	</para>
+      </listitem>
+    </itemizedlist>
+  </section>
+
+  <section>
+    <title>Configuring the Activation Coordinator</title>
+    <para>
+      The simplest way to configure a stand-alone coordinator is to provide a command line switch when starting the &APPSERVER;. The <parameter>-D</parameter> option specifies a setting for a System property.  Several configuration options can be enabled, taking effect in <xref linkend="list-option-priority" />.
+    </para>
+
+    <table id="list-option-priority">
+      <title>Command-Line Options Passed with the <parameter>-D</parameter> Parameter, Ordered by Priority</title>
+      <tgroup cols="4">
+	<thead>
+	  <row>
+	    <entry><para>Category</para></entry>
+	    <entry><para>Property</para></entry>
+	    <entry><para>Format</para></entry>
+	    <entry><para>Description</para></entry>
+	  </row>
+	</thead>
+	<tbody>
+	  <row>
+	    <entry><para>Absolute URL</para></entry>
+	    <entry><para><varname>org.jboss.jbossts.xts11.coordinatorURL</varname></para></entry>
+	    <entry><para><ulink url="http://coord.host:coord.port/ws-c11/ActivationService" /></para></entry>
+	    <entry>
+	      <para>
+		The value assigned to these URLs depends upon the configuration of the remote coordinator host. The sample values listed with the property names are appropriate when the  coordinator is another JBoss Transaction Service XTS service. Substitute the <replaceable>coord.host</replaceable> and <replaceable>coord.port</replaceable> with the appropriate values for the &APPSERVER; instance running the Activation Coordinator service.
+	      </para>
+	    </entry>
+	  </row>
+	  <row>
+	    <entry><para>Coordinator Host, Port, and Path</para></entry>
+	    <entry>
+	      <para><varname>org.jboss.jbossts.xts11.coordinator.host</varname></para>
+	      <para><varname>org.jboss.jbossts.xts11.coordinator.port</varname></para>
+	      <para><varname>org.jboss.jbossts.xts11.coordinator.path</varname></para>
+	    </entry>
+	    <entry>
+	      <para><replaceable>server.bind.address</replaceable></para>
+	      <para><replaceable>jboss.web.bind.port</replaceable></para>
+	      <para><replaceable>ws-c11/ActivationService</replaceable></para>
+	    </entry>
+	    <entry>
+	      <para>
+		If you set any of these three components, the coordinator URL is constructed using whichever of the component values is defined and substituting the default values specified for any undefined components. The values <replaceable>server.bind.address</replaceable> and <replaceable>jboss.web.bind.port</replaceable> represent the server bind address and the web service listener port obtained either from the application server command-line or the server configuration files.
+	      </para>
+	    </entry>
+	  </row>
+	</tbody>
+      </tgroup>
+    </table>
+	  
+  </section>
+    
+  <!-- Community version only
+  <section>
+    <title>Build-Time Default Coordinator Configuration</title>
+    <para>
+      You can reset the default coordinator host name and port used by the XTS service archive by defining the properties coordinator.hostname and coordinator.port on the build command-line when building the service archive. See the service archive build script in the sar directory of the XTS source code for further details.
+    </para>
+    <para>
+      You can also redefine the default absolute URL employed by the XTS service by modifying the values specified in the WSTX configuration files included in the service archive. The 1.0 specification URL is defined in the <filename>wstx.xml</filename> file, and the 1.1  specification URL is defined in the <filename>wstx11.xml</filename> file. You can redefine the values either by editing the service archive supplied in the <filename>sar</filename> directory of the XTS install tree, or by modifying the source files located in the <filename>config</filename> directory of the XTS source tree.      
+    </para>
+-->
+  <!--
+  <section>
+    <title>The XTS Service Archive</title>
+    <para>
+	The XTS <firstterm>service archive (SAR)</firstterm> must be deployed on hosts running client applications and participant Web Services, as well as on the stand-alone coordinator host. Clients and participants need access to the libraries deployed with XTS. These libraries are bundled into the SAR. However, clients and participants also need the ability to receive transaction management messages dispatched from the coordinator host. The XTS SAR provides implementations of client-side and participant-side listeners for this purpose. Although these services can be deployed separately from the coordinator-side service listeners and implementation, they are all bundled into a single SAR for simplicity.
+    </para>
+  </section>
+  -->
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_Overview.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_Overview.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_Overview.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,490 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter>
+  
+  <title>Transactions Overview</title>
+
+  <indexterm><primary>transactions</primary></indexterm>
+  <indexterm><primary>ACID</primary></indexterm>
+  <indexterm><primary>Coordinator</primary></indexterm>
+  <indexterm><primary>Participant</primary></indexterm>
+  <indexterm><primary>Two-Phase Commit</primary><secondary>2PC</secondary></indexterm>
+  <indexterm><primary>One-Phase Commit</primary><secondary>1PC</secondary></indexterm>
+  <indexterm><primary>Web Service</primary></indexterm>
+  <indexterm><primary>Transaction Service</primary></indexterm>
+  <indexterm><primary>Transaction Context</primary></indexterm>
+  <indexterm><primary>Synchronization Protocol</primary></indexterm>
+  <indexterm><primary>Optimizations to Synchronization Protocols</primary></indexterm>
+  <indexterm><primary>Non-atomic</primary></indexterm>
+  <indexterm><primary>Heuristic Outcomes</primary></indexterm>
+  <indexterm><primary>Interpositions</primary></indexterm>
+  
+  <note>
+    <para>
+      This chapter deals with the theory of transactional Web Services. If you are familiar with these principles, consider this chapter a reference.
+    </para>
+  </note>
+  <para>
+    Transactions have emerged as the dominant paradigm for coordinating interactions between parties in a distributed system, and in particular to manage applications that require concurrent access to shared data. Much of the JBoss Transaction Service Web Service API is based on contemporary transaction APIs whose familiarity will enhance developer productivity and lessen the learning curve. While the following section provides the essential information that you should know before starting to use XTS for building transactional Web Services, it should not be treated as a definitive reference to all transactional technology.
+  </para>
+  <para>
+    A classic transaction is a unit of work that either completely succeeds, or fails with all partially completed work being undone. When a transaction is committed, all changes made by the associated requests are made durable, normally by committing the results of the work to a database. If a transaction should fail and is rolled back, all changes made by the associated work are undone. Transactions in distributed systems typically require the use of a transaction manager that is responsible for coordinating all of the participants that are part of the transaction.
+  </para>
+  <para>
+    The main components involved in using and defining transactional Web Services using XTS are illustrated in <xref linkend="fig-web-services-transaction" />.
+  </para>
+
+  <figure id="fig-web-services-transaction">
+    <title>Components Involved in an XTS Transaction</title>
+    <mediaobject>
+      <imageobject>
+	<imagedata fileref="images/fig-web-services-transaction.png" format="PNG"/>
+      </imageobject>
+      <textobject>
+	<variablelist>
+	  <varlistentry>
+	    <term>Transaction Service</term>
+	    <listitem>
+	      <para>The Transaction Service captures the model of the underlying transaction protocol and coordinates parties affiliated with the transaction according to that model.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>Transaction API</term>
+	    <listitem>
+	      <para>
+		Provides an interface for transaction demarcation and the registration of participants.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>A Participant</term>
+	    <listitem>
+	      <para>
+		The entity that cooperates with the transaction service on behalf of its associated business logic.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	  <varlistentry>
+	    <term>The Context</term>
+	    <listitem>
+	      <para>
+		Captures the necessary details of the transaction such that participants can enlist within its scope.
+	      </para>
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+      </textobject>
+    </mediaobject>
+  </figure>
+
+  <section>
+    <title>The Coordinator</title>
+    <para>
+      <!--
+      Every transaction is associated with a coordinator, which is responsible for governing the outcome of the transaction. The coordinator may be implemented as a separate service or may be co-located with the user for improved performance. Each coordinator is created by the transaction manager service, which is effectively a factory for those coordinators.
+      -->
+      Every transaction is associated with a coordinator, which is responsible
+      for governing the outcome of the transaction. When a client begins a Web
+      Service transaction it posts a <systemitem>create</systemitem> request to
+      a coordination service, which creates the coordinator and returns its
+      details to the client. This service may be located in its own container or
+      may be colocated with the application client or with one of the
+      transactional web services for improved performance. The coordination
+      service is typically responsible for managing many transactions in
+      parallel, so each coordinator is identified by a unique transaction
+      identifier.
+    </para>
+    <para>
+      <!--
+      A coordinator communicates with enrolled participants to inform them of the desired termination requirements, such as whether they should accept (confirm) or reject (cancel) the work done within the scope of the given transaction. For example, a decision is needed for whether to purchase the provisionally reserved flight tickets for the user or to release them. An application may wish to terminate a transaction in a number of different ways (confirm or cancel). However, although the coordinator will attempt to terminate in a manner consistent with that desired by the client, the final outcome is ultimately determined by the interactions between the coordinator and the participants.
+    </para>
+    <para>
+      A transaction manager is typically responsible for managing coordinators for many transactions. The initiator of the transaction (the client) communicates with a transaction manager and asks it to start a new transaction and associate a coordinator with the transaction. Once created, the context can be propagated to Web Services in order for them to associate their work with the transaction.
+      -->
+      The coordinator is responsible for ensuring that the web services invoked
+      by the client arrive at a consistent outcome. When the client asks the
+      coordinator to complete the transaction, the coordinator ensures that each
+      web service is ready to confirm any provisional changes it has made within
+      the scope of the transaction. It then asks them all to make their changes
+      permanent. If any of the web services indicates a problem at the
+      confirmation stage, the coordinator ensures that all web services reject
+      their provisional changes, reverting to the state before the transaction
+      started. The coordinator also reverts all changes if the client asks it to
+      cancel the transaction.
+    </para>
+    <para>
+      The negotiation between the coordinator and the web services is organized
+      to ensure that all services will make their changes permanent, or all of
+      them will revert to the previous state, even if the coordinator or one of
+      the web services crashes part of the way through the transaction."
+    </para>
+  </section>
+
+  <section>
+    <title>The Transaction Context</title>
+    <para>
+      In order for a transaction to span a number of services, certain
+      information has to be shared between those services, to propagate
+      information about the transaction. This information is known as the
+      <firstterm>Context</firstterm>. The coordination service hands a context
+      back to the application client when it begins a transaction. This context
+      is passed as an extra, hidden parameter whenever the client invokes a
+      transactional web service. The XTS implementation saves and propagates
+      this context automatically with only minimal involvement required on the
+      part of the client. <!--Using XTS, the context is automatically propagated
+      and processed by transaction-aware components of an application. Though
+      XTS removes most of the work associated with propagating contexts,-->
+      However, it is still helpful to understand what information is captured in
+      a context. This information is listed in <xref linkend="context-contents"
+      />.
+    </para>
+
+    <variablelist id="context-contents">
+      <title>Contents of a Context</title>
+      <varlistentry>
+	<term>Transaction Identifier</term>
+	<listitem>
+	  <para>
+	    Guarantees global uniqueness for an individual transaction.
+	  </para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>Transaction Coordinator Location</term>
+	<listitem>
+	  <para>
+	    The endpoint address participants contact to enroll.
+	  </para>
+	</listitem>
+      </varlistentry>
+    </variablelist>
+
+    <figure>
+      <title>Web Services and Context Flow</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-web-services-context-flow.png" format="PNG"/>
+	</imageobject>
+	<textobject>
+	  <para>
+	    Whenever an application message is sent, the XTS Client API automatically creates a context and embeds it into the message. Similarly, any transaction-aware services can extract that context using the XTS service-side infrastructure and use it to perform work within the context of a particular transaction, even if that transaction was initiated elsewhere on the Web. The value of this approach is that the business logic contained within the client application and services are not peppered with transaction-processing code.
+	  </para>
+	</textobject>
+      </mediaobject>
+    </figure>
+  </section>
+
+  <section>
+    <title>Participants</title>
+    <para>
+      The coordinator cannot know the details of how every transactional service
+      is implemented. In fact this knowledge is not even necessary for it to
+      negotiate a transactional outcome. It treats each service taking part in a
+      transaction as a participant and communicates with it according to some
+      predefined participant coordination models appropriate to the type of
+      transaction. <!--When a service begins performing work within the scope of
+      a transaction it enrolls itself with the coordinator as a participant,
+      specifying the participant model it wishes to follow.--> When a web
+      service receives its first service request in some given transaction, it
+      enrolls with the coordinator as a participant, specifying the participant
+      model it wishes to follow. The context contains a URL for the endpoint of
+      the coordination service which handles enrollment requests. So, the term
+      participant merely refers a transactional service enrolled in a specific
+      transaction using a specific participant model.
+    </para>
+  </section>
+
+  <section>
+    <title>ACID Transactions</title>
+    <para>
+      Traditionally, transaction processing systems support <firstterm>ACID</firstterm> properties. ACID is an acronym for <emphasis>A</emphasis>tomic, <emphasis>C</emphasis>onsistent, <emphasis>I</emphasis>solated, and <emphasis>D</emphasis>urable. A unit of work has traditionally been considered transactional only if the ACID properties are maintained, as describe in <xref linkend="acid-properties" />.
+    </para>
+
+    <variablelist id="acid-properties">
+      <title>ACID Properties</title>
+      <varlistentry>
+	<term>Atomicity</term>
+	<listitem>
+	  <para>
+	    The transaction executes completely, or not at all.
+	  </para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>Consistency</term>
+	<listitem>
+	  <para>
+	    The effects of the transaction preserve the internal consistency of an underlying data structure.
+	  </para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>Isolated</term>
+	<listitem>
+	  <para>
+	    The transaction runs as if it were running alone, with no other transactions running, and is not visible to other transactions.
+	  </para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>Durable</term>
+	<listitem>
+	  <para>
+	    The transaction's results are not lost in the event of a failure.
+	  </para>
+	</listitem>
+      </varlistentry>
+    </variablelist>
+  </section>
+
+  <section>
+    <title>Two Phase Commit</title>
+
+    <para>
+      The classical two-phase commit approach is the bedrock of JBoss Transaction Service, and more generally of Web Services transactions. Two-phase commit provides coordination of parties that are involved in a transaction. The general flow of a two-phase commit transaction is described in <xref linkend="two-phase-commit-overview" />.
+    </para>
+
+    <figure id="two-phase-commit-overview">
+      <title>Two-Phase Commit Overview</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-two-phase-commit-overview.png" format="PNG"/>
+	</imageobject>
+	<textobject>
+	  <itemizedlist>
+	    <listitem><para>A transaction is started, and some work is performed.</para></listitem>
+	    <listitem><para>Once the work is finished, the two-phase commit begins.</para></listitem>
+	    <listitem><para>The coordinator (transaction manager) of the transaction asks each resource taking part in the transaction whether it is prepared to commit.</para></listitem>
+	    <listitem><para>If all resources respond positively, the coordinator instructs the resources to make all work performed durable (usually committed to a database).</para></listitem>
+	    <listitem><para>If not, all work performed is rolled back (undone) such that the underlying data structures are in their original states.</para></listitem>
+	  </itemizedlist>
+	</textobject>
+      </mediaobject>
+    </figure>
+
+    <note>
+      <para>
+	During two-phase commit transactions, coordinators and resources keep track of activity in non-volatile data stores so that they can recover in the case of a failure.
+      </para>
+    </note>
+
+  </section>
+
+  <section>
+    <title>The Synchronization Protocol</title>
+    <para>
+      Besides the two-phase commit protocol, traditional transaction processing systems employ an additional protocol, often referred to as the <firstterm>synchronization protocol</firstterm>. With the original ACID  properties, Durability is important when state changes need to be available despite failures. Applications interact with a persistence store of some kind, such as a database, and this interaction can impose a significant overhead, because disk access is much slower to access than main computer memory.
+    </para>
+    <para>
+      One solution to the problem disk access time is to cache the state in main memory and only operate on the cache for the duration of a transaction. Unfortunately, this solution needs a way to flush the state back to the persistent store before the transaction terminates, or risk losing the full ACID properties. This is what the synchronization protocol does, with <firstterm>Synchronization Participants</firstterm>.
+    </para>
+    <para>
+      Synchronizations are informed that a transaction is about to commit. At that point, they can flush cached state, which might be used to improve performance of an application, to a durable representation prior to the transaction committing. The synchronizations are then informed about when the transaction completes and its completion state.
+    </para>
+
+    <procedure>
+      <title>The "Four Phase Protocol" Created By Synchronizations</title>
+      <para>
+	Synchronizations essentially turn the two-phase commit protocol into a four-phase protocol:
+      </para>
+      <step>
+	<title>Step 1</title>
+	<para>
+	  Before the transaction starts the two-phase commit, all registered Synchronizations are informed. Any failure at this point will cause the transaction to roll back.
+	</para>
+      </step>
+      <step>
+	<title>Steps 2 and 3</title>
+	<para>
+	  The coordinator then conducts the normal two-phase commit protocol.
+	</para>
+      </step>
+      <step>
+	<title>Step 4</title>
+	<para>
+	  Once the transaction has terminated, all registered Synchronizations are informed. However, this is a courtesy invocation because any failures at this stage are ignored: the transaction has terminated so there’s nothing to affect.
+	</para>
+      </step>
+    </procedure>
+    <para>
+      The synchronization protocol does not have the same failure requirements as the traditional two-phase commit protocol. For example, Synchronization participants do not need the ability to recover in the event of failures, because any failure before the two-phase commit protocol completes cause the transaction to roll back, and failures after it completes have no effect on the data which the Synchronization participants are responsible for.
+    </para>
+  </section>
+
+  <section>
+    <title>Optimizations to the Protocol</title>
+    <para>
+      There are several variants to the standard two-phase commit protocol that are worth knowing about, because they can have an impact on performance and failure recovery. <xref linkend="two-phase-variants" /> gives more information about each one.
+    </para>
+    <table id="two-phase-variants">
+      <title>Variants to the Two-Phase Commit Protocol</title>
+      <tgroup cols="2">
+	<thead>
+	  <row>
+	    <entry><para>Variant</para></entry>
+	    <entry><para>Description</para></entry>
+	  </row>
+	</thead>
+	<tbody>
+	  <row>
+	    <entry><para>Presumed Abort</para></entry>
+	    <entry><para>If a transaction is going to roll back, the coordinator may record this information locally and tell all enlisted participants. Failure to contact a participant has no effect on the transaction outcome. The coordinator is informing participants only as a courtesy. Once all participants have been contacted, the information about the transaction can be removed. If a subsequent request for the status of the transaction occurs, no information will be available and the requester can assume that the transaction has aborted. This optimization has the benefit that no information about participants need be made persistent until the transaction has progressed to the end of the <systemitem>prepare</systemitem> phase and decided to commit, since any failure prior to this point is assumed to be an abort of the transaction.</para></entry>
+	  </row>
+	  <row>
+	    <entry><para>One-Phase</para></entry>
+	    <entry><para>If only a single participant is involved in the transaction, the coordinator does not need to drive it through the <systemitem>prepare</systemitem> phase. Thus, the participant is told to commit, and the coordinator does not need to record information about the decision, since the outcome of the transaction is the responsibility of the participant.</para></entry>
+	  </row>
+	  <row>
+	    <entry><para>Read-Only</para></entry>
+	    <entry><para>When a participant is asked to prepare, it can indicate to the coordinator that no information or data that it controls has been modified during the transaction. Such a participant does not need to be informed about the outcome of the transaction since the fate of the participant has no affect on the transaction. Therefore, a read-only participant can be omitted from the second phase of the commit protocol.</para></entry>
+	  </row>
+	</tbody>
+      </tgroup>
+    </table>
+
+    <note>
+      <para>
+	The WS-Atomic Transaction protocol does not support the one-phase commit optimization.
+      </para>
+    </note>
+  </section>
+
+  <section>
+    <title>Non-Atomic Transactions and Heuristic Outcomes</title>
+    <para>
+      In order to guarantee atomicity, the two-phase commit protocol is <firstterm>blocking</firstterm>. As a result of failures, participants may remain blocked for an indefinite period of time, even if failure recovery mechanisms exist. Some applications and participants cannot tolerate this blocking.
+    </para>
+    <para>
+      To break this blocking nature, participants that are past the <systemitem>prepare</systemitem> phase are allowed to make autonomous decisions about whether to commit or rollback. Such a participant must record its decision, so that it can complete the original transaction if it eventually gets a request to do so. If the coordinator eventually informs the participant of the transaction outcome, and it is the same as the choice the participant made, no conflict exists. If the decisions of the participant and coordinator are different, the situation is referred to as a non-atomic outcome, and more specifically as a <firstterm>heuristic outcome</firstterm>.
+    </para>
+    <para>
+      Resolving and reporting heuristic outcomes to the application is usually the domain of complex, manually driven system administration tools, because attempting an automatic resolution requires semantic information about the nature of participants involved in the transactions.
+    </para>
+    <para>
+      Precisely when a participant makes a heuristic decision depends on the specific implementation. Likewise, the choice the participant makes about whether to commit or to roll back depends upon the implementation, and possibly the application and the environment in which it finds itself. The possible heuristic outcomes are discussed in <xref linkend="tbl-heuristic-outcomes"/>.
+    </para>
+
+    <table id="tbl-heuristic-outcomes">
+      <title>Heuristic Outcomes</title>
+      <tgroup cols="2">
+	<thead>
+	  <row>
+	    <entry><para>Outcome</para></entry>
+	    <entry><para>Description</para></entry>
+	  </row>
+	</thead>
+	<tbody>
+	  <row>
+	    <entry><para>Heuristic Rollback</para></entry>
+	    <entry><para>The commit operation failed because some or all of the participants unilaterally rolled back the transaction.</para></entry>
+	  </row>
+	  <row>
+	    <entry><para>Heuristic Commit</para></entry>
+	    <entry><para>An attempted rollback operation failed because all of the participants unilaterally committed. One situation where this might happen is if the coordinator is able to successfully <systemitem>prepare</systemitem> the transaction, but then decides to roll it back because its transaction log could not be updated. While the coordinator is making its decision,  the participants decides to commit.</para></entry>
+	  </row>
+	  <row>
+	    <entry><para>Heuristic Mixed</para></entry>
+	    <entry><para>Some participants commit ed, while others were rolled back.</para></entry>
+	  </row>
+	  <row>
+	    <entry><para>Heuristic Hazard</para></entry>
+	    <entry><para>The disposition of some of the updates is unknown. For those which are known, they have either all been committed or all rolled back.</para></entry>
+	  </row>
+	</tbody>
+      </tgroup>
+    </table>
+
+    <para>
+      Heuristic decisions should be used with care and only in exceptional circumstances, since the decision may possibly differ from that determined by the transaction service. This type of difference can lead to a loss of integrity in the system. Try to avoid needing to perform resolution of heuristics, either by working with services and participants that do not cause heuristics, or by using a transaction service that provides assistance in the resolution process.
+    </para>
+    
+  </section>
+
+  <section>
+    <title>Interposition</title>
+    <para>
+      <firstterm>Interposition</firstterm> is a scoping mechanism which allows coordination of a transaction to be delegated across a hierarchy of coordinators. See <xref linkend="fig-interpositions" /> for a graphical representation of this concept.
+    </para>
+    <figure id="fig-interpositions">
+      <title>Interpositions</title>
+      <mediaobject>
+	<imageobject>
+	  <imagedata fileref="images/fig-interpositions.png" format="PNG"/>
+	</imageobject>
+	<textobject>
+	  <para>
+	    The diagram shows a <firstterm>top-level coordinator</firstterm> and an <firstterm>interposed coordinator</firstterm>. The top-level coordinator is responsible for driving the original, top-level transaction to completion or rollback. The interposed coordinator manages its participants in a subordinate transaction, but it cannot act autonomously. From the point of view of the parent coordinator, it appears to be another participant in the top-level transaction. The interposed coordinator operates as an intermediary. It forwards incoming <systemitem>prepare</systemitem> and <systemitem>commit</systemitem>/<systemitem>rollback</systemitem> messages to its participants, combining their responses and returning them back to its parent coordinator. 
+	  </para>
+	</textobject>
+      </mediaobject>
+    </figure>
+
+    <para>
+      Interposition is particularly useful for Web Services transactions, as a way of limiting the amount of network traffic required for coordination. For example, if communications between the top-level coordinator and a web service are slow because of network traffic or distance, the web service might benefit from executing in a subordinate transaction which employs a local coordinator service. In <xref linkend="fig-interpositions" />,to <systemitem>prepare</systemitem>, the top-level coordinator only needs to send one <systemitem>prepare</systemitem> message to the subordinate coordinator, and receive one <systemitem>prepared</systemitem> or <systemitem>aborted</systemitem> reply. The subordinate coordinator forwards a <systemitem>prepare</systemitem> locally to each participant and combines the results to decide whether to send a single <systemitem>prepared</systemitem> or <systemitem>aborted</systemitem> reply.
+    </para>
+  </section>
+
+  <section>
+    <title>A New Transaction Protocol</title>
+
+    <para>
+      Many component technologies offer mechanisms for coordinating ACID transactions based on two-phase commit semantics. Some of these are CORBA/OTS, JTS/JTA, and MTS/MSDTC. ACID transactions are not suitable for all Web Services transactions, as explained in <xref linkend="acid-not-suitable" />.
+    </para>
+
+    <itemizedlist id="acid-not-suitable">
+      <title>Reasons ACID is Not Suitable for Web Services</title>
+      <listitem>
+	<para>
+	  Classic ACID transactions assume that an organization that develops and deploys applications owns the entire infrastructure for the applications. This infrastructure has traditionally taken the form of an Intranet. Ownership implies that transactions operate in a trusted and predictable manner. To assure ACIDity, potentially long-lived locks can be kept on underlying data structures during two-phase commit. Resources can be used for any period of time and released when the transaction is complete.
+	</para>
+	<para>
+	  In Web Services, these assumptions are no longer valid. One obvious reason is that the owners of data exposed through a Web service refuse to allow their data to be locked for extended periods, since allowing such locks invites denial-of-service attacks.
+	</para>
+      </listitem>
+      <listitem>
+	<para>
+	  All application infrastructures are generally owned by a single party. Systems using classical ACID transactions normally assume that participants in a transaction will obey the directives of the transaction manager and only infrequently make unilateral decisions which harm other participants in a transaction.
+	</para>
+	<para>
+	  Web Services participating in a transaction can effectively decide to resign from the transaction at any time, and the consumer of the service generally has little in the way of quality of service guarantees to prevent this.
+	</para>
+      </listitem>
+    </itemizedlist>
+
+    <section>
+      <title>Transaction in Loosely Coupled Systems</title>
+
+      <para>
+	Extended transaction models which relax the ACID properties have been proposed over the years. WS-T provides a new transaction protocol to implement these concepts for the Web Services architecture. XTS is designed to accommodate four underlying requirements inherent in any loosely coupled architecture like Web Services. These requirements are discussed in <xref linkend="web-services-requirements" />.
+      </para>
+      <itemizedlist id="web-services-requirements">
+	<title>Requirements of Web Services</title>
+	<listitem>
+	  <para>
+	    Ability to handle multiple successful outcomes to a transaction, and to involve operations whose effects may not be isolated or durable.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    Coordination of autonomous parties whose relationships are governed by contracts, rather than the dictates of a central design authority.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    Discontinuous service, where parties are expected to suffer outages during their lifetimes, and coordinated work must be able to survive such outages.
+	  </para>
+	</listitem>
+	<listitem>
+	  <para>
+	    Interoperation using XML over multiple communication protocols. XTS uses SOAP encoding carried over HTTP.
+	  </para>
+	</listitem>
+      </itemizedlist>
+    </section>
+  </section>
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.ent
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.ent	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.ent	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,7 @@
+<!ENTITY PRODUCT "JBoss Transactions">
+<!ENTITY BOOKID "XTS_Development_Guide">
+<!ENTITY VERSION "TRUNK">
+<!ENTITY YEAR "2010">
+<!ENTITY HOLDER "JBoss.org">
+<!ENTITY APPSERVER "JBoss Application Server">
+<!-- <!ENTITY APPSERVER "Enterprise Application Platform Server"> -->
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/Transactions_XTS_Development_Guide.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<!--	<xi:include href="Chapter.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+	<xi:include href="About_This_Guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Transactions_Overview.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Protocols_Overview.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Getting_Started.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Participants.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="XTS_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Stand_Alone_Coordination.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Participant_Crash_Recovery.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+	<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<index />
+</book>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/XTS_API.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/XTS_API.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/XTS_API.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,717 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Transactions_XTS_Programmers_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="sec-xts-api">
+  
+  <title>The XTS API</title>
+
+  <indexterm><primary>vote</primary></indexterm>
+  <indexterm><primary>TXContext</primary></indexterm>
+  <indexterm><primary>UserTransaction</primary></indexterm>
+  <indexterm><primary>UserTransactionFactory</primary></indexterm>
+  <indexterm><primary>TransactionManager</primary></indexterm>
+  <indexterm><primary>TransactionManagerFactory</primary></indexterm>
+  <indexterm><primary>UserBusinessActivity</primary></indexterm>
+  <indexterm><primary>UserBusinessActivityFactory</primary></indexterm>
+  <indexterm><primary>BusinessActivityManager</primary></indexterm>
+  <indexterm><primary>BusinessActivityManagerFactory</primary></indexterm>
+  <indexterm><primary>API</primary></indexterm>
+
+
+  <para>
+    This chapter discusses the XTS API. You can use this information to write client and server applications which consume transactional Web Services and coordinate back-end systems.
+  </para>
+  
+  <section>
+    <title>API for the Atomic Transaction Protocol</title>
+
+    <section>
+      <title>Vote</title>
+      <para>
+	During the two-phase commit protocol, a participant is asked to vote on whether it can prepare to confirm the work that it controls. It must return an instance of one of the subtypes of <interfacename>com.arjuna.wst11.Vote</interfacename> listed in <xref linkend="vote-subclasses" />.
+      </para>
+      <variablelist id="vote-subclasses">
+	<title>Subclasses of <interfacename>com.arjuna.wst11.Vote</interfacename></title>
+	<varlistentry>
+	  <term>Prepared</term>
+	  <listitem>
+	    <para>
+	      Indicates that the participant can can prepare if the coordinator requests it. Nothing has been committed, because the participant does not know the final outcome of the transaction.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>Aborted</term>
+	  <listitem>
+	    <para>
+	      The participant cannot prepare, and has rolled back. The participant should not expect to get a second phase message.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>ReadOnly</term>
+	  <listitem>
+	    <para>
+	      The participant has not made any changes to state, and it does not need to know the final outcome of the transaction. Essentially the participant is resigning from the transaction.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+      <example>
+	<title>Example Implementation of 2PC Participant's <methodname>prepare</methodname> Method</title>
+	<programlisting language="Java" role="JAVA"><xi:include href="extras/example-prepare-method.java" xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" /></programlisting>
+      </example>
+    </section>
+
+
+    <section>
+      <title>TXContext</title>
+      <!-- Unsupported in 1.0 and 1.1
+      <para>
+	A transaction is typically represented by a unique identifier and a reference to the coordinator which manages the transaction. This reference usually takes the form oa URL. With XTS, transactions to be nested in a nested tree structure. Thus, a transaction context may be a set of transactions, with the top-most transaction the root parent.
+      </para>
+      -->
+      <para>
+	<package>com.arjuna.mw.wst11.TxContext</package> is an opaque representation of a transaction context. It returns one of two possible values, as listed in <xref linkend="TxContext-values" />.
+      </para>
+      <variablelist id="TxContext-values">
+	<title>TxContext Return Values</title>
+	<varlistentry>
+	  <term>valid</term>
+	  <listitem>
+	    <para>
+	      Indicates whether the contents are valid.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>equals</term>
+	  <listitem>
+	    <para>
+	      Can be used to compare two instances for equality.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+
+      <note>
+	<para>
+	  The corresponding participant interfaces used in the 1.0 protocol 
+	  implementation are located in package <package>com.arjuna.wst</package>.
+	</para>
+      </note>
+    </section>
+
+    <section id="ref-UserTransaction">
+      <title>UserTransaction</title>
+      <para>
+	<classname>com.arjuna.mw.wst11.UserTransaction</classname> is the class that clients typically employ. Before a client can begin a new atomic transaction, it must first obtain a <classname>UserTransaction</classname> from the <classname>UserTransactionFactory</classname>. This class isolates the user from the underlying protocol-specific aspects of the XTS implementation. A <classname>UserTransaction</classname> does not represent a specific transaction. Instead, it provides access to an implicit per-thread transaction context, similar to the <classname>UserTransaction</classname> in the JTA specification. All of the <classname>UserTransaction</classname> methods implicitly act on the current thread of control.
+      </para>
+      <variablelist>
+	<title><classname>userTransaction</classname> Methods</title>
+	<varlistentry>
+	  <term>begin</term>
+	  <listitem>
+	    <para>
+	      Used to begin a new transaction and associate it with the invoking thread.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>timeout</term>
+		<listitem>
+		  <!--
+		  <para>
+		    This optional parameter, measured in milliseconds, causes the <methodname>begin</methodname> method to time out.
+		  </para>
+		  -->
+		  <para>
+		    This optional parameter, measured in milliseconds, specifies
+		    a time interval after which the newly created transaction
+		    may be automatically rolled back by the coordinator
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>WrongStateException</systemitem></term>
+		<listitem>
+		  <para>
+		    A transaction is already associated with the thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>commit</term>
+	  <listitem>
+	    <para>
+	      <!--
+	      Commits the transaction. The <methodname>commit</methodname> method executes the Volatile2PC and Durable2PC protocols before returning.  When complete, the <methodname>commit</methodname> method disassociates the transaction from the current thread, leaving it unassociated with any transactions.
+	      -->
+	      Volatile2PC and Durable2PC participants enrolled in the transaction 
+	      are requested first to prepare and then to commit their changes. If 
+	      any of the participants fails to prepare in the first phase then all 
+	      other participants are requested to abort.
+	    </para>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>UnknownTransactionException</systemitem></term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><methodname>TransactionRolledBackException</methodname></term>
+		<listitem>
+		  <para>
+		    <!--
+		    The transaction rolled back, due to another participant.
+		    -->
+		    The transaction was rolled back either because of a timeout or 
+		    because a participant was unable to commit.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>rollback</term>
+	  <listitem>
+	    <para>
+	      Terminates the transaction.  Upon completion, the <methodname>rollback</methodname> method disassociates the transaction from the current leaving it unassociated with any transactions.
+	    </para>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>UnknownTransactionException</systemitem></term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </section>
+
+    <section>
+      <title>UserTransactionFactory</title>
+      <para>
+	Call the <methodname>getUserTransaction</methodname> method to obtain a <xref linkend="ref-UserTransaction" /> instance from a <classname>UserTransactionFactory</classname>.
+      </para>
+    </section>
+
+    <section id="ref-TransactionManager">
+      <title>TransactionManager</title>
+      <para>
+	Defines the interaction between a transactional web service and the underlying transaction service implementation. A <classname>TransactionManager</classname> does not represent a specific transaction. Instead, it provides access to an implicit per-thread transaction context.
+      </para>
+      <variablelist>
+	<title>Methods</title>
+	<varlistentry>
+	  <term><methodname>currentTransaction</methodname></term>
+	  <listitem>
+	    <para>
+	      Returns a <systemitem>TxContext</systemitem> for the current transaction, or null if there is no context. Use the <methodname>currentTransaction</methodname> method to determine whether a web service has been invoked from within an existing transaction. You can also use the returned value to enable multiple threads to execute within the scope of the same transaction. Calling the <methodname>currentTransaction</methodname>  method does not disassociate the current thread from the transaction.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><methodname>suspend</methodname></term>
+	  <listitem>
+	    <para>
+	      Dissociates a thread from any transaction. This enables a thread to do work that is not associated with a specific transaction.
+	    </para>
+	    <para>The <methodname>suspend</methodname> method returns a <systemitem>TxContext</systemitem> instance, which is a handle on the transaction.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><methodname>resume</methodname></term>
+	  <listitem>
+	    <para>
+	      Associates or re-associates a thread with a transaction, using its <systemitem>TxContext</systemitem>. Prior to association or re-association, the thread is disassociated from any transaction with which it may be currently associated. If the <systemitem>TxContext</systemitem> is null, then the thread is associated with no transaction. In this way, the result is the same as if the <methodname>suspend</methodname> method were used instead.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>txContext</term>
+		<listitem>
+		  <para>
+		    A TxContext instance as return by <methodname>suspend</methodname>, identifying the transaction to be resumed.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>UnknownTransactionException</systemitem></term>
+		<listitem>
+		  <para>
+		    The transaction referred to by the <systemitem>TxContext</systemitem> is invalid in the scope of the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <!--
+		  <varlistentry>
+		  <term><systemitem>WrongStateException</systemitem></term>
+		  <listitem>
+		  <para>
+		  The transaction is not in a state that allows participants to be enrolled. For instance, it may be in the process of terminating.
+		  </para>
+		  </listitem>
+		  </varlistentry>
+	      -->
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><varname>enlistForVolitaleTwoPhase</varname></term>
+	  <listitem>
+	    <para>
+	      Enroll the specified participant with the current transaction, causing it to participate in the Volatile2PC protocol. You must pass a unique identifier for the participant.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>participant</term>
+		<listitem>
+		  <para>
+		    An implementation of interface Volatile2PCParticipant whose
+		    prepare, commit and abort methods are called when the
+		    corresponding coordinator message is received.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>id</term>
+		<listitem>
+		  <para>
+		    A unique identifier for the participant. The value of this String 
+		    should differ for each enlisted participant. It should also be 
+		    possible for a given identifier to determine that the participant 
+		    belongs to the enlisting web service rather than some other web 
+		    service deployed to the same container.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term>UnknownTransactionException</term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><systemitem>WrongStateException</systemitem></term>
+		<listitem>
+		  <para>
+		    The transaction is not in a state that allows participants to be enrolled. For instance, it may be in the process of terminating.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><varname>enlistForDurableTwoPhase</varname></term>
+	  <listitem>
+	    <para>
+	      Enroll the specified participant with the current transaction, causing it to participate in the Durable2PC protocol. You must pass a unique identifier for the participant. 
+	    </para>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term>UnknownTransactionException</term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><systemitem>WrongStateException</systemitem></term>
+		<listitem>
+		  <para>
+		    The transaction is not in a state that allows participants to be enrolled. For instance, it may be in the process of terminating.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </section>
+
+    <section>
+      <title>TransactionManagerFactory</title>
+      <para>
+	Use the <methodname>getTransactionManager</methodname> method to obtain a <xref linkend="ref-TransactionManager" /> from a <classname>TransactionManagerFactory</classname>.	
+      </para>
+    </section>
+  </section>
+
+  <section>
+
+    <title>API for the Business Activity Protocol</title>
+
+    <section>
+      <title>Compatibility</title>
+      <para>
+	Previous implementations of XTS locate the Business Activity Protocol classes in the <package>com.arjuna.mw.wst</package> package. In the current implementation, these classes are located in the <package>com.arjuna.mw.wst11</package> package.
+      </para>
+    </section>
+    
+    <section id="ref-UserBusinessActivity">
+      <title>UserBusinessActivity</title>
+      <para>
+	<classname>com.arjuna.wst11.UserBusinessActivity</classname> is the class that most clients employ. A client begins a new business activity by first obtaining a <classname>UserBusinessActivity</classname> from the <classname>UserBusinessActivityFactory</classname>. This class isolates them from the underlying protocol-specific aspects of the XTS implementation. A UserBusinessActivity does not represent a specific business activity. Instead, it provides access to an implicit per-thread activity. Therefore, all of the <classname>UserBusinessActivity</classname> methods implicitly act on the current thread of control.
+      </para>
+      <variablelist>
+	<title>Methods</title>
+	<varlistentry>
+	  <term><methodname>begin</methodname></term>
+	  <listitem>
+	    <para>
+	      Begins a new activity, associating it with the invoking thread.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>timeout</term>
+		<listitem>
+		  <para>
+		    The interval, in milliseconds, after which an activity times out. Optional.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>WrongStateException</systemitem></term>
+		<listitem>
+		  <para>
+		    The thread is already associated with a business activity.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><methodname>close</methodname></term>
+	  <listitem>
+	    <!--
+	    <para>
+	      Terminates the business activity. The <methodname>close</methodname> method executes the <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> protocol and then returns, dissociating the business activity from the current thread, so that it is not associated with any activity.
+	    </para>
+	    -->
+	    <para>
+	      First, all Coordinator Completion participants enlisted in the 
+	      activity are requested to complete the activity. Next all 
+	      participants, whether they enlisted for Coordinator or Participant 
+	      Completion, are requested to close the activity. If any of the 
+	      Coordinator Completion participants fails to complete at the first 
+	      stage then all completed participants are asked to compensate the 
+	      activity while any remaining uncompleted participants are requested to 
+	      cancel the activity.
+	    </para>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term>UnknownTransactionException</term>
+		<listitem>
+		  <para>
+		    No activity is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>TransactionRolledBackException</term>
+		<listitem>
+		  <para>
+		    The activity has been cancelled because one of the
+		    Coordinator Completion participants failed to complete. This
+		    exception may also thrown if one of the Participant
+		    Completion participants has not completed before the client
+		    calls close.
+		  </para>
+		  <!--
+		  <para>
+		    The activity has canceled.
+		  </para>
+		  -->
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term>cancel</term>
+	  <listitem>
+	    <!--
+	    <para>
+	      Terminates the business activity. After the <methodname>cancel</methodname> method completes,
+	    </para>
+	    -->
+	    <para>
+	      Terminates the business activity. All Participant Completion 
+	      participants enlisted in the activity which have already completed are 
+	      requested to compensate the activity. All uncompleted Participant 
+	      Completion participants and all Coordinator Completion participants 
+	      are requested to cancel the activity.
+	    </para>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>UnknownTransactionException</systemitem></term>
+		<listitem>
+		  <para>
+		    No activity is associated with the invoking thread. Any participants that previous completed are directed to compensate their work.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+      <!--
+      <para>
+	In some cases participants in a business activity may register for the <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem> protocol. In this case, the coordinator needs to notify them that all the work that they need to do within the scope of a business activity is complete. When the the client application has finished requesting work to be done by these participants, it must call the <methodname>complete</methodname> method before attempting to call the <methodname>close</methodname> or <methodname>cancel</methodname> methods.
+      </para>
+      -->
+    </section>
+
+
+    <section>
+      <title>UserBusinessActivityFactory</title>
+      <para>
+	Use the <methodname>getuserbusinessActivity</methodname> method to obtain a <xref linkend="ref-UserBusinessActivity" /> instance from a <classname>userBusinessActivityFactory</classname>.
+      </para>
+    </section>
+
+    <section id="ref-BusinessActivityManager">
+      <title>BusinessActivityManager</title>
+      <para>
+	<package>com.arjuna.mw.wst11.BusinessActivityManager</package> is the class that web services typically employ. Defines how a web service interacts with the underlying business activity service implementation. A <classname>BusinessActivityManager</classname> does not represent a specific activity. Instead, it provides access to an implicit per-thread activity.
+      </para>
+      <variablelist>
+	<title>Methods</title>
+	<varlistentry>
+	  <term><methodname>currentTransaction</methodname></term>
+	  <listitem>
+	    <para>
+	      Returns the <systemitem>TxContext</systemitem> for the current business activity, or <literal>NULL</literal> if there is no <systemitem>TxContext</systemitem>. The returned value can be used to enable multiple threads to execute within the scope of the same business activity. Calling the <methodname>currenTransaction</methodname> method does not dissociate the current thread from its activity.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><methodname>suspend</methodname></term>
+	  <listitem>
+	    <para>
+	      Dissociates a thread from any current business activity, so that it can perform work not associated with a specific activity. The <methodname>suspend</methodname> method returns a <systemitem>TxContext</systemitem> instance, which is a handle on the activity. The thread is then no longer associated with any activity.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><methodname>resume</methodname></term>
+	  <listitem>
+	    <para>
+	      Associates or re-associates a thread with a business activity, using its <systemitem>TxContext</systemitem>. Before associating or re-associating the thread, it is disassociated from any business activity with which it is currently associated. If the <systemitem>TxContext</systemitem> is <literal>NULL</literal>, the thread is disassociated with all business activities, as though the <methodname>suspend</methodname> method were called.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>txContext</term>
+		<listitem>
+		  <para>
+		    A TxContext instance as returned by <methodname>suspend</methodname>, identifying the transaction to be resumed.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term><systemitem>UnknownTransactionException</systemitem></term>
+		<listitem>
+		  <para>
+		    The business activity to which the <systemitem>TxContext</systemitem> refers is invalid in the scope of the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><varname>enlistForBusinessAgreementWithParticipantCompletion</varname></term>
+	  <listitem>
+	    <para>
+	      Enroll the specified participant with current business activity, causing it to participate in the <systemitem>BusinessAgreementWithParticipantCompletion</systemitem> protocol. A unique identifier for the participant is also required.
+	    </para>
+	    <para>
+	      The return value is an instance of BAParticipantManager which can be 
+	      used to notify the coordinator of changes in the participant state. In 
+	      particular, since the participant is enlisted for the Participant 
+	      Completion protcol it is expected to call the completed method of this 
+	      returned instance when it has completed all the work it expects to do 
+	      in this activity and has made all its changes permanent. 
+	      Alternatively, if the participant does not need to perform any 
+	      compensation actions should some other participant fail it can leave 
+	      the activity by calling the exit method of the returned 
+	      BAParticipantManager instance.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>participant</term>
+		<listitem>
+		  <para>
+		    An implementation of interface
+		    <interfacename>BusinessAgreementWithParticipantCompletionParticipant</interfacename>
+		    whose <methodname>close</methodname>,
+		    <methodname>cancel</methodname>, and
+		    <methodname>compensate</methodname> methods are called when
+		    the corresponding coordinator message is received.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>id</term>
+		<listitem>
+		  <para>
+		    A unique identifier for the participant. The value of this String 
+		    should differ for each enlisted participant. It should also be 
+		    possible for a given identifier to determine that the participant 
+		    belongs to the enlisting web service rather than some other web 
+		    service deployed to the same container.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term>UnknownTransactionException</term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>WrongStateException</term>
+		<listitem>
+		  <para>
+		    The transaction is not in a state where new participants may be enrolled, as when it is terminating.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><varname>enlistForBusinessAgreementWithCoordinatorCompletion</varname></term>
+	  <listitem>
+	    <para>
+	      Enroll the specified participant with current activity, causing it to participate in the <systemitem>BusinessAgreementWithCoordinatorCompletion</systemitem> protocol. A unique identifier for the participant is also required.
+	    </para>
+	    <para>
+	      The return value is an instance of
+	      <interfacename>BAParticipantManager</interfacename> which can be
+	      used to notify the coordinator of changes in the participant
+	      state.  Note that in this case it is an error to call the
+	      <methodname>completed</methodname> method of this returned
+	      instance. With the Coordinator Completion protocol the participant
+	      is expected to wait until its <methodname>completed</methodname>
+	      method is called before it makes all its changes
+	      permanent. Alternatively, if the participant determiens that it
+	      has no changes to make, it can leave the activity by calling the
+	      <methodname>exit</methodname> method of the returned
+	      <interfacename>BAParticipantManager</interfacename> instance.
+	    </para>
+	    <variablelist>
+	      <title>Parameters</title>
+	      <varlistentry>
+		<term>participant</term>
+		<listitem>
+		  <para>
+		    An implementation of interface
+		    BusinessAgreementWithCoordinatorCompletionParticipant whose
+		    completed, close, cancel and compensate methods are called
+		    when the corresponding coordinator message is received.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>id</term>
+		<listitem>
+		  <para>
+		    A unique identifier for the participant. The value of this String 
+		    should differ for each enlisted participant. It should also be 
+		    possible for a given identifier to determine that the participant 
+		    belongs to the enlisting web service rather than some other web 
+		    service deployed to the same container. 
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	    <variablelist>
+	      <title>Exceptions</title>
+	      <varlistentry>
+		<term>>UnknownTransactionException</term>
+		<listitem>
+		  <para>
+		    No transaction is associated with the invoking thread.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term>WrongStateException</term>
+		<listitem>
+		  <para>
+		    The transaction is not in a state where new participants may
+		    be enrolled, as when it is terminating.
+		  </para>
+		</listitem>
+	      </varlistentry>
+
+	    </variablelist>
+
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </section>
+
+    <section>
+      <title>BusinessActivityManagerFactory</title>
+      <para>
+	Use the <methodname>getBusinessActivityManager</methodname> method to obtain a <xref linkend="ref-BusinessActivityManager" /> instance from a <classname>BusinessActivityManagerFactory</classname>.
+      </para>
+    </section>
+  </section>
+
+</chapter>
+

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-PersistableBAParticipant.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-PersistableBAParticipant.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-PersistableBAParticipant.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,4 @@
+public interface PersistableBAParticipant
+{
+    byte[] getRecoveryState() throws Exception;
+}

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSATRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSATRecoveryModule.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSATRecoveryModule.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,9 @@
+public interface XTSATRecoveryModule
+{
+    public Durable2PCParticipant
+	deserialize(String id, ObjectInputStream stream) 
+	  throws Exception;
+    public Durable2PCParticipant
+	recreate(String id, byte[] recoveryState) 
+	  throws Exception;
+}
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryManager.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryManager.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryManager.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,8 @@
+public abstract class XTSBARecoveryManager {
+    . . .
+	public static XTSBARecoveryManager getRecoveryManager() ;
+    public void registerRecoveryModule(XTSBARecoveryModule module);
+    public abstract void unregisterRecoveryModule(XTSBARecoveryModule module)
+	throws NoSuchElementException;
+    . . .
+}

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryModule.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-XTSBARecoveryModule.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,19 @@
+public interface XTSATRecoveryModule
+{
+    public BusinessAgreementWithParticipantCompletionParticipant
+	deserializeParticipantCompletionParticipant(String id,
+						    ObjectInputStream stream)
+	throws Exception;
+    public BusinessAgreementWithParticipantCompletionParticipant
+	recreateParticipantCompletionParticipant(String id,
+						 byte[] recoveryState)
+	throws Exception;
+    public BusinessAgreementWithCoordinatorCompletionParticipant
+	deserializeCoordinatorCompletionParticipant(String id,
+						    ObjectInputStream stream)
+	throws Exception;
+    public BusinessAgreementWithCoordinatorCompletionParticipant
+	recreateCoordinatorCompletionParticipant(String id,
+						 byte[] recoveryState)
+	throws Exception;
+}

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-prepare-method.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-prepare-method.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-prepare-method.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,20 @@
+public Vote prepare () throws WrongStateException, SystemException
+{
+  // Some participant logic here
+
+  if(/* some condition based on the outcome of the business logic */)
+  {
+    // Vote to confirm
+    return new com.arjuna.wst.Prepared();
+  }
+  else if(/*another condition based on the outcome of the business logic*/)
+  {
+    // Resign
+    return new com.arjuna.wst.ReadOnly();
+  }
+  else
+  {
+    // Vote to cancel
+    return new com.arjuna.wst.Aborted();
+  }
+}
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-register-for-recovery.java
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-register-for-recovery.java	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-register-for-recovery.java	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,8 @@
+public abstract class XTSATRecoveryManager {
+	. . .
+ 	public static XTSATRecoveryManager getRecoveryManager() ;
+ 	public void registerRecoveryModule(XTSATRecoveryModule module);
+	public abstract void unregisterRecoveryModule(XTSATRecoveryModule module)
+		throws NoSuchElementException;
+	. . .
+}
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-interfaces.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-interfaces.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-interfaces.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,7 @@
+<!-- Activation Service portType Declaration --> 
+<wsdl:portType name="ActivationCoordinatorPortType"> 
+  <wsdl:operation name="CreateCoordinationContext"> 
+    <wsdl:input message="wscoor:CreateCoordinationContext"/> 
+    <wsdl:output message="wscoor:CreateCoordinationContextResponse"/> 
+  </wsdl:operation> 
+</wsdl:portType> 
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-registration.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-registration.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/example-wsc-registration.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,7 @@
+<!-- Registration Service portType Declaration --> 
+<wsdl:portType name="RegistrationCoordinatorPortType"> 
+  <wsdl:operation name="Register"> 
+    <wsdl:input message="wscoor:Register"/> 
+    <wsdl:output message="wscoor:RegisterResponse"/> 
+  </wsdl:operation> 
+</wsdl:portType> 
\ No newline at end of file

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/schemas.xml
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/schemas.xml	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/extras/schemas.xml	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+  <uri resource="Protocols_Overview.xml" typeId="DocBook"/>
+</locatingRules>

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/icons/icon.svg
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/icons/icon.svg	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/icons/icon.svg	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-2pc-participant-state-transitions.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-2pc-participant-state-transitions.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-at-model.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-at-model.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-back-end-pattern.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-back-end-pattern.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawcc-state-transitions.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawcc-state-transitions.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawpc-state-transitions.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-bawpc-state-transitions.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-context-handlers-registered-with-soap-server.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-context-handlers-registered-with-soap-server.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-interpositions.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-interpositions.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-participant-backend-control.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-participant-backend-control.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-two-phase-commit-overview.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-two-phase-commit-overview.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-context-flow.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-context-flow.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-transaction.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-web-services-transaction.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-c-overview.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-c-overview.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-trans-services-participants.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-ws-trans-services-participants.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-four-roles.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-four-roles.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-wst-interop.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/fig-wsc-wst-interop.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/icon.svg	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/ws-trans-global-view.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/en-US/images/ws-trans-global-view.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/publican.cfg
===================================================================
--- labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/publican.cfg	                        (rev 0)
+++ labs/jbosstm/trunk/XTS/docs/Transactions_XTS_Programmers_Guide/publican.cfg	2010-08-27 05:55:04 UTC (rev 34916)
@@ -0,0 +1,7 @@
+# Config::Simple 4.59
+# Mon Jul 12 10:38:02 2010
+
+xml_lang: en-US
+type: Book
+brand: JBoss
+



More information about the jboss-svn-commits mailing list