tidy up
git-svn-id: https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.0@506015 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ASF_20_SRC_AUTO/.cvsignore b/ASF_20_SRC_AUTO/.cvsignore
new file mode 100644
index 0000000..4694fd6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/.cvsignore
@@ -0,0 +1,14 @@
+build
+dist
+prj.el
+.project
+.classpath
+cocoon.launch
+local.build.properties
+local.blocks.properties
+cocoon.sampledata
+.DS_Store
+*.ipr
+*.iws
+mount-table.xml
+db
diff --git a/ASF_20_SRC_AUTO/CREDITS.txt b/ASF_20_SRC_AUTO/CREDITS.txt
new file mode 100644
index 0000000..78e5726
--- /dev/null
+++ b/ASF_20_SRC_AUTO/CREDITS.txt
@@ -0,0 +1,96 @@
+
+ C R E D I T S
+
+This is the file where major donations to the Cocoon project are listed and it
+should be used to give appropriate visibility to those inviduals, organizations
+or companies that donated resources to the effort. This file wants to be one of
+the ways the Cocoon community pays back.
+
+
+ Community Credits
+ -----------------
+
+The Cocoon project was originally created, proposed and bootstrapped by
+Stefano Mazzocchi (http://www.betaversion.org/~stefano/)
+
+The web application framework consisting of the session handling (aka sunShine),
+the authentication framework (aka sunRise) and the portal engine (aka sunSpot)
+was created and developed by the Open Source Competence Center of
+s&n AG (http://www.s-und-n.de), Paderborn, Germany.
+
+The interpreted sitemap engine and other contributions from Sylvain Wallez are
+made possible by the time donated by his company, Anyware Technologies
+(http://www.anyware-tech.com).
+
+The flow control layer, the SOAP and XScript logicsheets, and other
+changes were contributed by Ovidiu Predescu and donated by the Hewlett
+Packard Company (http://www.hp.com/).
+
+The DELI implementation was contributed by Mark Butler, and donated to
+Cocoon by the Hewlett Packard Company (http://www.hp.com/).
+
+The initial code of the new portal framework is a donation by a joined development
+effort of BASF IT-Services (http://www.basf-it-services.com)
+and s&n AG (http://www.s-und-n.de).
+
+The initial code of the new ojb block and other contributions from Antonio Gallardo
+and Carlos Chávez are made posible by the time donated by AG Software, S. A.
+(http://www.agssa.net).
+
+
+ Credits of included software
+ ----------------------------
+
+This product includes software developed by the Apache Software Foundation
+(http://www.apache.org/).
+
+This product includes software developed by the XML:DB Initiative
+(http://www.xmldb.org/).
+
+This product includes software developed by the IronSmith Project
+(http://www.ironsmith.org/).
+
+This product includes software developed by the jfor Project
+(http://www.jfor.org).
+
+This product includes software developed by the JDOM Project
+(http://www.jdom.org/).
+
+This product includes software developed by the OpenORB Community Project
+(http://sourceforge.net/projects/openorb/).
+
+This product includes software developed by the Chaperon Project
+(http://www.sourceforge.net/projects/chaperon/).
+
+This product includes software developed by the Exolab Project
+(http://www.exolab.org/).
+
+This product includes software developed by ANTLR Project
+(http://www.antlr.org/)
+
+
+
+
+Portions are Copyright (c) 2001 Tivano Software GmbH
+(http://www.tivano.de). All Rights Reserved.
+
+Portions are Copyright (c) 1998-2000 World Wide Web Consortium
+(Massachusetts Institute of Technology, Institut National de Recherche en
+Informatique et en Automatique, Keio University). All Rights Reserved.
+
+Portions are Copyright (c) 2001 Scott Robert Ladd. All rights reserved.
+
+Portions are Copyright (c) 2001, 2002 Thai Open Source Software Center Ltd.
+All rights reserved.
+
+Portions are Copyright (c) Mort Bay Consulting Pty. Ltd. All rights reserved.
+
+Portions are Copyright (c) Hewlett-Packard Company 2002. All rights reserved.
+
+
+
+
+
+
+ The Apache Cocoon Community
+ http://cocoon.apache.org/
diff --git a/ASF_20_SRC_AUTO/DESKTOP.INI b/ASF_20_SRC_AUTO/DESKTOP.INI
new file mode 100644
index 0000000..1d0eac3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/DESKTOP.INI
@@ -0,0 +1,6 @@
+; see http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/custom.asp
+[.ShellClassInfo]
+IconFile=src\documentation\images\cocoon.ico
+IconIndex=0
+ConfirmFileOp=0
+InfoTip=Apache Cocoon, the XML application framework!
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/INSTALL.txt b/ASF_20_SRC_AUTO/INSTALL.txt
new file mode 100644
index 0000000..b80dbb9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/INSTALL.txt
@@ -0,0 +1,145 @@
+
+
+ +-----------------------------+
+ | I N S T A L L |
+ +-----------------------------+
+
+
+ Let me guess: you don't like to read verbose docs, right?
+
+ Great, this file is for you.
+
+ 1) Unpack the distribution
+ Obviously you've done this already, but if you got errors when unpacking
+ the archive with tar, you might need to use gnutar instead. Our archives
+ contain long paths and filenames which cause problems with some versions
+ of the tar command.
+
+ 2) Set your JAVA_HOME environment
+
+ You have to set your JAVA_HOME environment to point to the root directory of
+ the Java Virtual Machine (JDK 1.3.x or later) installed on your machine.
+
+ To do this simply type:
+
+ [unix] JAVA_HOME=/path/to/java/
+ [win32] SET JAVA_HOME=c:\path\to\java
+
+ your mileage may vary depending on your shell, but you know how to setup
+ environments, right?
+
+ 3) Build Cocoon by typing "build" or "./build.sh"
+
+ 4) Run Cocoon by typing "cocoon servlet" or "./cocoon.sh servlet"
+
+ 5) Open http://localhost:8888/ with your browser
+
+
+That's it!
+
+
+Now, you have two choices:
+
+ a) close this file and try to hack something out by yourself
+
+ b) keep reading
+
+Go ahead and choose option a), but don't complain if you can't figure out how
+to use the cocoon build system for your needs.
+
+
+
+Still here? good. You won't regret it.
+
+
+Reading the documentation
+--------------------------
+
+This directory contains the full Cocoon documentation (as xml documents).
+You can either browse the documentation when you start Cocoon as described
+above and go to the documentation section: http://localhost:8888/docs/index.html.
+Or you can build the docs your self by running "build.bat docs" or
+"./build.sh docs". If you want to build the docs yourself, you need
+an installed version of Forrest (http://xml.apache.org/forrest).
+
+Of course you can also read the documentation at the website
+http://cocoon.apache.org/
+
+Updating
+--------
+
+If you are updating from a previous release of Cocoon, make sure
+that you read the installation instructions on updating first.
+
+
+Choosing the blocks
+-------------------
+
+Cocoon is composed by its 'core' and several 'blocks'.
+
+The core (a.k.a. naked cocoon') contains the system with services that
+are needed to all cocoon users. Blocks provide services that you might not need,
+therefore the build system allows you to remove them from the build.
+
+Now, do the following steps to configure the blocks you want in your cocoon:
+
+ 1) cp blocks.properties local.blocks.properties
+ 2) edit local.blocks.properties
+ 3) rebuild (do a "build clean" first if you deactivated some blocks)
+
+do not modify blocks.properties directly!
+
+
+Tuning the build
+----------------
+
+Ok, now that you told the build system what services you want assembled
+into your distribution, you can tune the build for your personal needs:
+
+ 1) cp build.properties local.build.properties
+ 2) edit local.build.properties
+
+do not modify build.properties directly!
+
+An example of a local.build.properties is the following:
+
+ compiler=jikes
+ compiler.debug=off
+ build.webapp=/path/to/where/to/build/the/webapp
+
+where you override default compilation parameters and tell the build system
+where to place the generated cocoon webapp. Look into build.properties to find
+out what you might want to modify for your own personal needs.
+
+
+Running Cocoon as a servlet
+---------------------------
+
+When you do 'cocoon servlet', the servlet container (jetty) is started and Cocoon
+loaded into it. By default, this is attached to port 8888, but you can change
+this by setting the "JETTY_PORT" environment property before launching cocoon.
+
+Other properties that you can change are:
+
+ JETTY_ADMIN_PORT (defaults to 8889): is the port where the jetty web
+ administration is connected to. This is available when you launch
+ "cocoon servlet-admin", otherwise its disabled.
+
+ JETTY_WEBAPP (defaults to build/webapp): is the location of the webapp
+ that jetty has to execute. modify this to match your local.build.properties
+ if you modified where the build system creates your webapp
+
+ JAVA_DEBUG_PORT (defaults to 8000): is the port where the JVM over-the-wire
+ debug interface connects to. This is available only if you launch
+ "cocoon servlet-debug", otherwise is disabled. This is used by remote
+ debuggers (for example, Eclipse's).
+
+
+Note that the "standalone-demo" build target prepares a directory that you can
+move elsewhere to run "cocoon servlet" outside of the build tree.
+
+
+
+All right, that's it for now.
+
+Happy hacking with Cocoon.
diff --git a/ASF_20_SRC_AUTO/KEYS b/ASF_20_SRC_AUTO/KEYS
new file mode 100644
index 0000000..e5c0c1c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/KEYS
@@ -0,0 +1,156 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>
+
+mQGiBDsd2gsRBADkQvPBl87SQ1PJ02EwTYx1gt/2X/m9QJXOIPKZB2q9iY0cOkov
+PHds3KxCnRvXaYjXbglCtmeghOfnZOag9egC5LHbf935OApTXnOKQ1lcPLeV7v7S
+l5itzLIlSe+MRbJZfm3dTNAHQE0C6O3ZhXCYa+NxZj1p8vhuq3Wtl3ZCQwCg/4df
+j9CKnBtTL1BKqLD7uG4b7xUD/RnqAC0qnApjjfWl+63BlG/ReSk1KXZZDd/LgybL
+HHEiRyz1Eli/riVNqbDQnOqJ6Q341OmFQ/MVIlXZ3i1uDxdflTMWSmQHiJixZfdy
++mxf0T7kewBq5AUw9flXjBvOrTp+s7EH4nFbcAvALJY2zWXdod1F83ECcOXQc2xV
+QLliBACH+Ui8/r1VxRIR4GbHB/U526majO1NA0/+h3vEiS3NMIx/uHtupQEZIHb0
+hgQVRQSHy0pU+qPg83M11CtkWJi+I1zuJO2hFGA3rbsM5j6ZniesasJguec3QeLO
+7ZmAFPUQMBx9XoU05J+W6+HkJYzm56tL0OwOxfCoZ59/8gwz0LQnQ2Fyc3RlbiBa
+aWVnZWxlciA8Y3ppZWdlbGVyQGFwYWNoZS5vcmc+iQBYBBARAgAYBQI7HdoLCAsD
+CQgHAgEKAhkBBRsDAAAAAAoJEP5i/e/24Kj4vioAoISacsH1y/mTEyOSJcjFFtwJ
+3BinAKCxEREbhP3wxcQ5jIJD7WJyEibWV7kCDQQ7HdoLEAgA9kJXtwh/CBdyorrW
+qULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX
+1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFe
+xwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8
+Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18
+hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV
+6TILOwACAggAs+uzrncWLDkHktfCeZoMR3s9IZAre2jswQsbMTt0tldoZA/JKaUl
+1uptQ1jPv1O6t3bgSgk/AwFqxZ1gj+nBu5Qqg+dHWAv9m9gSzDzGdsTv4/N0o7eW
+j9lSfrH2RggUU5vCUfGiMbmPrxw08H+P2KJ5tvR8ktBJ3N49G2KQc+P9Aicg6nZ/
+/UFyxTEzqu0HFaGuRZP4B1W8IcfM85N8X1hzrTp60scwwVYyvYBJuRXHtbFri2AR
+rvGJPOBMrsAtAkPinLbBf1x3qb264MKVjCuQzqBR62vEwndgGVBEF3LGnG+XLlkB
+KMGnpP2lb18yU+XElXluq1+iKZwEC5Od84kATAQYEQIADAUCOx3aCwUbDAAAAAAK
+CRD+Yv3v9uCo+JJAAJ9iavozzPXJXQgayU+cpcMMpqaHLACdFSL31xxtNaFBvLGM
+1Ah+fwVH39M=
+=ASjg
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub 1024D/154462C0 2003-09-24 Steven Noels <stevenn@apache.org>
+sig 3 154462C0 2003-09-24 Steven Noels <stevenn@apache.org>
+uid Steven Noels <stevenn@cocoondev.org>
+sig 3 154462C0 2003-09-24 Steven Noels <stevenn@apache.org>
+uid Steven Noels <stevenn@outerthought.org>
+sig 3 154462C0 2003-09-24 Steven Noels <stevenn@apache.org>
+sub 1024g/DEB50537 2003-09-24
+sig 154462C0 2003-09-24 Steven Noels <stevenn@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.2 (Darwin)
+
+mQGiBD9x7i4RBACh9zAGHT/Pk0cLhHBG6J7hkbrRoir6m2BbMAEVqpghT9F4kjxq
+Fuj8adWi3Ui7F1MVSrGR4mAWnYvS5KixKhsu0HQPwwqO593v+rxISSS752D59Ewq
+rWxW7rgDd+L3FdhVPHOYOcDLPitNesSU03/95XyDvfm/Z+WakAMfCIkoywCgydm0
+eL0VnZowR94zngfVW/rfpScD/iG6H9f0Yif0qG34iAuzzouyyPBkqKWLvjH8/nSU
+wmOhE0PZCb7sNSQBLtfhce5sPiRan7Rntf6cThY9vVLqx5CK59rYkxoXmM4RZeaE
+6rufSd6lWV2Cg+wRNVpr699n+A7oCPRUokFecvh+FfN9n9wjvv+F1+YHjSd0jnju
+1tdOA/9yh8mwdicvFlJmBPKM/kW6k4kTu2DmiMe2kCD+Z5iBeR1jTWMnDs0C7tcQ
+Lddhl775KftqgOQisXovmwWkHHN+uSJStqkQpXuv+v0lEVMSe7H2CQjSrmxlczWZ
+2e9bqxrF4Oq3ZpNpifqZAdJ8uBrION/Ir6KFqqUbeP6SaVaqMLQkU3RldmVuIE5v
+ZWxzIDxzdGV2ZW5uQGNvY29vbmRldi5vcmc+iF4EExECAB4FAj9x8x8CGwMGCwkI
+BwMCAxUCAwMWAgECHgECF4AACgkQMIHvjhVEYsCkWgCfaTKWN/gokK8+qWqvVixL
+kx7dPVsAnRDo9+oaJ6tqIomDc84P0wMzmKu+tCFTdGV2ZW4gTm9lbHMgPHN0ZXZl
+bm5AYXBhY2hlLm9yZz6IXgQTEQIAHgYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCP3H0
+fAIZAQAKCRAwge+OFURiwBzWAJ92ldSiOyiEvx1T0h4r7Wn8MHmfUACdEon19pnF
+hfm0fm9bSPjGb4Kcoia0J1N0ZXZlbiBOb2VscyA8c3RldmVubkBvdXRlcnRob3Vn
+aHQub3JnPoheBBMRAgAeBQI/cfL+AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJ
+EDCB744VRGLA6wEAoK8oR/uUTCqA63yT2IWiGVSRLHZ5AKCp3D1azq5LtHRGILOR
+HVlgJH5JZ7kBDQQ/ce40EAQA1ZSZ6NcOMNoDTXyGnJpKp1AOCdqGvh/V5LzIqekX
+0I2++TOYJ0nINT30zeXJl2zDw3l5gzasl3FtfD8Oq/7MuMRFN2iOoFwef8/bGwTS
+Sll4QL24MCN2jjyaGjvUIDG0pp7bwbJO26giQ25Xd/zDePcyPVvFoG2h21gxu2Ry
+px8AAwUEANAgbxio4jClRl9QsQOFR/jdi6E1hC33ApfoEgsIlr1w3MhezwvhDJD8
+dpv1CvHGfkdYrDiOIhPz0UfOOszfGh3ItmHbhKt68c7zUujVDpvBPWS3RVyoPMVQ
+yIQaXNu76CJMk9S641yfLEZANqWPK9jjnOUJWs53+TAsUHKdz7ztiEYEGBECAAYF
+Aj9x7jQACgkQMIHvjhVEYsDVYACgnuuUwKhLCHYMCBi5B5+p1/LhrmEAn3CKf5E/
+OSMKxqUanA0+hCP5QSK3
+=bmPL
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub 1024D/E41EDC7E 2003-09-26 Carsten Ziegeler <cziegeler@apache.org>
+sig 3 E41EDC7E 2003-09-26 Carsten Ziegeler <cziegeler@apache.org>
+sig 3 EE56550E 2003-12-01 Cliff Schmidt <cliff@alum.mit.edu>
+sig 3 CC78C893 2003-11-18 Rich Bowen <rbowen@rcbowen.com>
+sig 3 EE65E321 2003-11-24 Martin Kraemer <martin@apache.org>
+sig 40581837 2003-11-27 Nick Kew <nick@webthing.com>
+sig 3 142B509B 2003-11-25 Glenn L. Nielsen (Sign jakarta.apache.org distributions) <glenn@apache.org>
+sig 3 CE19D5C6 2003-11-18 Jamie Wallingford (legobuff) <jamie@legobuff.com>
+sig 3 D147B776 2003-11-28 Mitch Comstock (RAID) <mcomstock@raidworks.com>
+sig 2 65FDCDEE 2003-11-20 James Howison <james@freelancepropaganda.com>
+sig FD093C41 2003-11-23 James M. Turner <turner@blackbear.com>
+sig 2 A1D69759 2003-11-24 Michael Kellen <idsfa@visi.com>
+sig 2 76D83CC6 2003-11-22 Manoj Kasichainula <manoj@apache.org>
+sig 3 A54DA2DF 2003-11-18 Erin Mulder <meara@alumni.princeton.edu>
+sig 152924AF 2003-11-22 Sander Temme <sander@temme.net>
+sig 964F31D9 2003-11-22 [User id not found]
+sig B6B45F1F 2003-11-19 Chengetai Masango <chengetai@masango.net>
+sig 2 4C9165B6 2003-11-18 Aaron Mulder <ammulder@alumni.princeton.edu>
+sig 3 F5FC4B42 2003-11-21 Theodore W. Leung <twl@sauria.com>
+sig 2 F88341D9 2003-11-30 Lars Eilebrecht <lars@eilebrecht.org>
+sig 3 A11D56FB 2003-12-03 Geoffrey Young (http://www.modperlcookbook.org/~geoff/) <geoff@modperlcookbook.org>
+sub 1024g/0F6ED732 2003-09-26
+sig E41EDC7E 2003-09-26 Carsten Ziegeler <cziegeler@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.3 (MingW32)
+
+mQGiBD90V4MRBAC1lbNdQ9fvvooWXlFx9u/C3Vtsgc+ZsukqBRQRuSEBNZKQr3XC
+NmOy6rlLKan0brlr8L+6xmkQgJCgsNGnjqwIHRe8irMLEqK+uGhpoQ9z4zgc6JVl
+CLarZPvqe7GOifOKlheadWrkkRQMOuKjDF8Nuy10S4jaIEVMhPcorakbYwCgqXzA
+GD/327IVU2SEfL2ezVC1nc0D/Rj43bqn/GzB6pBUIaG2LNAfPtVfdmnqjKa/0PDF
+/hxyGN2Pb5BBlBAZe/ysNRNpGi+kVqGxweccugco6atDRv/INPVQ1dSKAoX/zuuE
+rMeTCaXYE45uBXYhvSsGM2iNJYcS/VW10ZW5RD3F5eWVSo50Xin4obmJmlfr8BTp
+VoxNBACjYrCo9f2MI30fxCgKu9ugyz/rFA7Zja/Hq18jyUWUA8oIQ6VonNvnEu80
+9jf1c23HtKQu+f4yHBDKR6RKsas5kCQDZJncQCn8PHRqSkLWRsAnl2e8fY72QnVI
+pSL7HZ4AnOAaO9sMONQMADq3q9muQofNQDS79IRAWXP7kDT5pbQnQ2Fyc3RlbiBa
+aWVnZWxlciA8Y3ppZWdlbGVyQGFwYWNoZS5vcmc+iF4EExECAB4FAj90V4MCGwMG
+CwkIBwMCAxUCAwMWAgECHgECF4AACgkQEy5J1OQe3H4aLwCdEP8ARIZxOvFITQ7I
+nee1qC85BbsAnjnKXQaUm1unAnNHwN7fNyZnnIuEiEYEExECAAYFAj/K5J0ACgkQ
+aFp3yu5WVQ43XwCfahn9RObiYcvqRFXPtze303XMRQIAoIvStwGIypv7YrjeS/70
+EpaQMPn5iEYEExECAAYFAj+6hk0ACgkQXP03+sx4yJOqUwCg17eCYJCnmzDw9GTe
+/BKGPZj12LYAoMnIahWcyIFLlLOP9ISlMKlr5EkWiJwEEwECAAYFAj/Cd1AACgkQ
+N+P0X+5l4yE+dQQArTUZsgHjZE1M9DRQhZQkU20/WzW4NVxWaYdW2/tIy/a293Zd
+RWG9QDe1VPT7KUoAT306N5HqM4TUjg2QjAyg6ou6J76yk62j1Hsj0RJskf0IMXiF
+NZICn7z+y6FsCI60flgpOKI11GZeAI6FLGppcsF5NCnAP9PKv20EQ07kUeqIRgQQ
+EQIABgUCP8YSFAAKCRBtC8c6QFgYN2IOAJ4lgeI6pvXBeEM13xq9WSplyS9z7gCc
+CO/dGO4i7M9rcDp9B79sy/Qpnk6IRgQTEQIABgUCP8OFGQAKCRD6PI0mFCtQm93V
+AKCMJi0mWq0PLehrhpGwJKrzdt6DSgCgiRqkfD1u4lj6rezjCxH9GR6b9HqIRgQT
+EQIABgUCP7mp+AAKCRCoHuZJzhnVxkHGAJ4moSSBBtV6ynXFk+k26ca1M5Lx5QCd
+G8MrlXJ5ThRD4ZecP79x5x8CmTeIRgQTEQIABgUCP8e9LgAKCRCkdA850Ue3dsVa
+AJ9h8CF7Tj68kwbzhY0/RjkA2pA94gCfQH1azsf2LYhOvObOrknpk1ZALOGIRgQS
+EQIABgUCP7xjvgAKCRDsmT1jZf3N7jUmAJ41pjcLgAkHvGnfv9jZYz4CqvrGfgCd
+ERE/EX2IX0bYOraPIcuhcHaHCQ2IRgQQEQIABgUCP8BjyAAKCRAaCdGD/Qk8QVAN
+AKCMesKnneWni3IardexYlkChRaLXACgtmgMT0KWnWAwk3zji3zkVgk72HqIRgQS
+EQIABgUCP8FOvQAKCRDMITAgodaXWbO0AKCPOmm3BjK/OrGzsu+04g6SfuV8fQCf
+b0SDGLgnslcqkzU02ZxT+hHWAbCJARwEEgECAAYFAj+/wxYACgkQBurPqnbYPMbJ
+ugf/X7I18RgC6uFsPXsCMQh/EQdDO3Cll8SnmCmNz08jlE89cDiHAgJZ6b7n+p+G
+v44DaO5Ofkb+iwtTHuFuvG50qY45X2/oyBJHllXlbxMEyjWfhny6hD84WYnM7PS2
+a6gww0+beCz77ESw6RdHgIFNvZnn0Ca58QLKixlKfNxqaqrR6EG6zUI9qdNX1XVc
+Wfu70EZfaZ0Kx5jTDz4h7TGw59oH+NBDRpGvU213NFyckbcGav11GgLBCwR6Iyzx
+nFTrowWXR2QXfX8akSFg6Oz1k818Pjwolr1l3JF5YAaDxwJ4qZo/ldHSF4/+fAmC
+JLJfRco6ndv8rFr6FV0+SVv5dIhGBBMRAgAGBQI/uaDwAAoJEBD6TIilTaLfcHoA
+oOl0OsrJQ1JAgtyCXTs0VxJAXshnAKDXdDvK0ZevnovRoZvMW6RYv0+STYhGBBAR
+AgAGBQI/v6F3AAoJELK+vEAVKSSvF/8AnjieEHBnFWQQNrZtknhXQeyzkS9eAJ9U
+I6CHLstOQAIQj6dgQIfXS6oaHohGBBARAgAGBQI/v6OIAAoJEMEee0eWTzHZlWIA
+oLPh3TMdnARqbnzFpHQV0BN1Y+53AKDm7WOQM+PUUOcXrlYw63CVC9QPP4hGBBAR
+AgAGBQI/u6D5AAoJEKRZJPC2tF8fWigAoMOg9N7DfgZCaMDH/uiZPeVDYLx1AKD4
+H4Cv3wOrBC9gsfOz8vPc+psGu4hGBBIRAgAGBQI/uc+fAAoJELkkUqxMkWW2D0oA
+nilUs/fdruISz7OcUHSYoFb5lxxpAJ0SbzM82p96RMGjtMtLWdDNm3AKz4hGBBMR
+AgAGBQI/vcjeAAoJEL66K4f1/EtCILwAn2x9+QkXNkfTt5LEHmJAXXzkr2aFAJ9l
+vz17ctX04GyH0E2p7lMU9qJvWoiZBBIBAgAGBQI/ym6tAAoJED6Pt/L4g0HZKPED
+51Q8rmnCha+FQi8+42sTbBjWSkYmsB/84mjddFlK40AfmKpXNnF5lpHCPBfdtuG7
+/r3mnQrT/T5PBlWA088zyQhzBTsCNObNQE/5cwoKv2sOuWMZ/HW5JFYJgfQoqb4b
+hTkSy7d0ncIW4Rq+heZc/E8xWmUpQH1CrFzvB2bsiEYEExECAAYFAj/N+agACgkQ
+CVpF3KEdVvtdTwCgtbh65s6vDfxmgVqxdkqsi3Nak20AmgM7hfMHhUcn+Y8PAyYv
+0OrVvODkuQENBD90V4QQBACNBis1jev/dbIOmVHw096OO2p/R0tuXSx2q0wfjRtE
+qkBOBz/Wdr0gCTJMMOWAYlKhM3ZPbs3bcrT8HXYK5GCpvWQj5SGe2E/Mreolvl+i
+1U4GGhZVVDQziZdImmSDsqCHPj4s5KWJhnkSrE3asWennYqLAEuv62SF/rOawEfr
+2wADBQP9EmVJEG9mDpwj4SZ0kFbBbbqc6t1ntRjx8PkW49znU0NOCM2lIaOM3leM
+8bm5zgbnD4kS7gDItOwzPaHepLrh7a7OVUTpf/HxUgtLAjazF445mjKk1/KQ7oU5
+SR5j3nJZwaI6wTBoI94fk/BBZtxZ4EcdgcJhQABI9LoKr+vTa2eISQQYEQIACQUC
+P3RXhAIbDAAKCRATLknU5B7cfgWMAJ9w/IX0FwxyOhwCveM1PDrVWxT4dQCfaG22
+PDGaBFWsUIyQDUGS56dkC0k=
+=4pJn
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/ASF_20_SRC_AUTO/LICENSE.txt b/ASF_20_SRC_AUTO/LICENSE.txt
new file mode 100644
index 0000000..4ac551b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/LICENSE.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Apache Cocoon" and "Apache Software Foundation" must not be
+ used to endorse or promote products derived from this software without
+ prior written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/README.txt b/ASF_20_SRC_AUTO/README.txt
new file mode 100644
index 0000000..049f254
--- /dev/null
+++ b/ASF_20_SRC_AUTO/README.txt
@@ -0,0 +1,90 @@
+
+ A P A C H E C O C O O N
+
+ @version@
+
+
+ What is it?
+ -----------
+
+ Apache Cocoon is a web development framework built around the concepts of
+ separation of concerns (making sure people can interact and collaborate on a
+ project, without stepping on each other toes) and component-based web
+ development.
+
+ Cocoon implements these concepts around the notion of 'component pipelines',
+ each component on the pipeline specializing on a particular operation. This
+ makes it possible to use a Lego(tm)-like approach in building web solutions,
+ hooking together components into pipelines without any required programming.
+
+ Cocoon is "web glue for your web application development needs". It is a glue
+ that keeps concerns separate and allows parallel evolution of all aspects of
+ a web application, improving development pace and reducing the chance of
+ conflicts.
+
+
+
+
+ Requirements
+ ------------
+
+ Cocoon has been designed to coexist and interoperate side-by-side with your
+ existing J2EE solutions or to give them new functionality without requiring
+ any change in the existing infrastructure.
+
+ Cocoon is implemented both as a Java servlet and a Java command line
+ application. The following requirements exist for installing it:
+
+ o A Java 1.3 or later compatible virtual machine for your operating system.
+
+ o A Servlet API 2.2 compatible Servlet Engine or J2EE Application Server.
+ [not required for command line operation]
+
+
+
+
+ Installation Instructions and Documentation
+ -------------------------------------------
+
+ Read the INSTALL.txt file in this directory for the installation instructions.
+
+ The documentation available as of the date of this release is included in this
+ directory. Read the INSTALL.txt for more information.
+
+ If you are updating from a previous release of Cocoon, make sure
+ that you read the installation instructions on updating first.
+
+ Look for the most updated documentation on the Apache Cocoon web site
+ (http://cocoon.apache.org/).
+
+
+
+
+ Licensing and legal issues
+ --------------------------
+
+ Cocoon is licensed under the Apache Software License, a license of the BSD
+ family, and contains software which is compatible with the BSD licensing style.
+
+ For more information, please read the LICENSE files in the /legal directory.
+
+
+
+
+ Credits
+ -------
+
+ For more information on credits and due reference to included software, please
+ read the CREDITS.txt file in this directory.
+
+
+
+ Thanks for using Apache Cocoon.
+
+
+
+
+
+ The Apache Cocoon Project
+ http://cocoon.apache.org/
+
diff --git a/ASF_20_SRC_AUTO/announcement.xml b/ASF_20_SRC_AUTO/announcement.xml
new file mode 100644
index 0000000..5492818
--- /dev/null
+++ b/ASF_20_SRC_AUTO/announcement.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+
+<!--
+ Release Announcement Template
+ CVS $Id: announcement.xml,v 1.4 2003/08/05 09:49:57 stefano Exp $
+-->
+
+<announcement site="http://cocoon.apache.org">
+ <project>Apache Cocoon @version@</project>
+ <abstract>
+ The Apache Cocoon Community is proud to announce the new release
+ of Apache Cocoon.
+ </abstract>
+ <body>
+
+<p>
+ Apache Cocoon is a web development framework built around the concept
+ of separation of concerns (that is: allowing people to do their job
+ without having to step on each other toes) and component-oriented web
+ RAD.
+</p>
+
+<p>
+ Cocoon implements these concepts around the notion of 'component
+ pipelines' modelled after the 'process chain' concept where each
+ worker specializes on a particular operation. This makes it possible
+ to use a Lego(tm)-like approach in building web solutions where
+ these components can be hooked together into pipelines without
+ requiring further programming.
+</p>
+
+<p>
+ We like to think at Cocoon as "web glue" for your web application
+ development needs. But most important, a glue that can keep
+ concerns separate and allow parallel evolution of the two sides,
+ improving development pace and reducing the chance of conflicts.
+</p>
+
+ </body>
+ <changes version="@version@" file="status.xml"/>
+</announcement>
+
diff --git a/ASF_20_SRC_AUTO/blocks.properties b/ASF_20_SRC_AUTO/blocks.properties
new file mode 100644
index 0000000..5aabc07
--- /dev/null
+++ b/ASF_20_SRC_AUTO/blocks.properties
@@ -0,0 +1,123 @@
+
+#------------------------------------------------------------------------------#
+# Cocoon Blocks #
+#------------------------------------------------------------------------------#
+
+# Remove blocks from your cocoon distribution by uncommenting the
+# corresponding exclude property.
+
+# NOTE: Don't modify this file directly but make a copy named
+# 'local.blocks.properties' and modify that. The build system will override
+# these properties with the ones in the 'local.blocks.properties' file.
+
+# NOTE: "[dependency]" indicates blocks that are required by other blocks.
+# Disabling batik, for example, will result in a RuntimeException when using
+# fop. On the other hand some dependencies come only from the block samples.
+
+
+# Stable blocks ----------------------------------------------------------------
+
+# Stable blocks are those that can be considered ready for production and
+# will contain components and API that will remain stable and where
+# developers are committed to back compatibility. In short, stuff that you
+# can depend on.
+
+#-----[dependency]: "authentication-fw" depends on "session-fw".
+#-----[dependency]: "authentication-fw" is needed by "portal", "portal-fw".
+#exclude.block.authentication-fw=true
+#-----[dependency]: "batik" is needed by "fop", "scratchpad".
+#exclude.block.batik=true
+#exclude.block.bsf=true
+#exclude.block.chaperon=true
+#-----[dependency]: "databases" is needed by "hsqldb", "jms", "ojb", "petstore", "repository", "xmldb".
+#exclude.block.databases=true
+#-----[dependency]: "fop" depends on "batik".
+#exclude.block.fop=true
+#-----[dependency]: "hsqldb" depends on "databases".
+#-----[dependency]: "hsqldb" is needed by "jms", "petstore".
+#exclude.block.hsqldb=true
+#-----[dependency]: "html" is needed by "portal".
+#exclude.block.html=true
+#exclude.block.itext=true
+#exclude.block.jfor=true
+#exclude.block.jsp=true
+#exclude.block.jxforms=true
+#exclude.block.linkrewriter=true
+#exclude.block.lucene=true
+#exclude.block.naming=true
+#exclude.block.paranoid=true
+#exclude.block.php=true
+#exclude.block.poi=true
+#-----[dependency]: "portal-fw" depends on "authentication-fw", "session-fw".
+#exclude.block.portal-fw=true
+#exclude.block.profiler=true
+#exclude.block.python=true
+#-----[dependency]: "session-fw" is needed by "authentication-fw", "portal", "portal-fw".
+#exclude.block.session-fw=true
+#exclude.block.swf=true
+#-----[dependency]: "velocity" is needed by "petstore", "scratchpad".
+#exclude.block.velocity=true
+#exclude.block.web3=true
+#-----[dependency]: "xmldb" depends on "databases".
+#exclude.block.xmldb=true
+
+# Unstable blocks --------------------------------------------------------------
+
+# Unstable blocks are currently under development and do not guarantee that the
+# contracts they expose (API, xml schema, properties, behavior) will remain
+# constant in time. Developers are not committed to back-compatibility just yet.
+# This doesn't necessarily mean the blocks implementation is unstable or
+# the code can't be trusted for production, but use with care and watch
+# its development as things might change over time before they are marked
+# stable.
+
+#-----[dependency]: "apples" depends on "woody".
+#exclude.block.apples=true
+#-----[dependency]: "asciiart" is needed by "mail".
+#exclude.block.asciiart=true
+#exclude.block.axis=true
+#-----[dependency]: "cron" is needed by "scratchpad".
+#exclude.block.cron=true
+#-----[dependency]: "deli" is needed by "workflow".
+#exclude.block.deli=true
+#-----[dependency]: "eventcache" is needed by "jms", "repository", "slide".
+#exclude.block.eventcache=true
+#-----[dependency]: "jms" depends on "databases", "eventcache", "hsqldb".
+#-----[dependency]: "jms" is needed by "slide".
+#exclude.block.jms=true
+#exclude.block.linotype=true
+#-----[dependency]: "mail" depends on "asciiart".
+#exclude.block.mail=true
+#exclude.block.midi=true
+#-----[dependency]: "ojb" depends on "databases".
+#exclude.block.ojb=true
+#-----[dependency]: "petstore" depends on "databases", "hsqldb", "velocity", "woody".
+#exclude.block.petstore=true
+#-----[dependency]: "portal" depends on "authentication-fw", "html", "session-fw".
+#exclude.block.portal=true
+#exclude.block.precept=true
+#exclude.block.proxy=true
+#exclude.block.qdox=true
+#-----[dependency]: "repository" depends on "databases", "eventcache".
+#-----[dependency]: "repository" is needed by "slide", "webdav".
+#exclude.block.repository=true
+#-----[dependency]: "scratchpad" depends on "batik", "cron", "velocity".
+#exclude.block.scratchpad=true
+#-----[dependency]: "slide" depends on "eventcache", "jms", "repository".
+#exclude.block.slide=true
+#exclude.block.slop=true
+#exclude.block.stx=true
+#exclude.block.taglib=true
+#-----[dependency]: "webdav" depends on "repository".
+#exclude.block.webdav=true
+#-----[dependency]: "woody" is needed by "apples", "petstore".
+#exclude.block.woody=true
+#-----[dependency]: "workflow" depends on "deli".
+exclude.block.workflow=true
+
+# Deprecated blocks ------------------------------------------------------------
+
+# Although some of these blocks may have been stable, they are now deprecated
+# in favour of other blocks and therefore are excluded by default from the build
+
+exclude.block.xmlform=true
diff --git a/ASF_20_SRC_AUTO/build.bat b/ASF_20_SRC_AUTO/build.bat
new file mode 100644
index 0000000..289f35d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/build.bat
@@ -0,0 +1,25 @@
+@echo off
+rem ----------------------------------------------------------------------------
+rem build.bat - Win32 Build Script for Apache Cocoon
+rem
+rem $Id: build.bat,v 1.9 2004/03/05 00:44:50 joerg Exp $
+rem ----------------------------------------------------------------------------
+
+rem ----- Ignore system CLASSPATH variable
+set OLD_CLASSPATH=%CLASSPATH%
+set CLASSPATH=
+for %%i in (lib\endorsed\*.jar) do call tools\bin\appendcp.bat %%i
+
+rem ----- Use Ant shipped with Cocoon. Ignore installed in the system Ant
+set OLD_ANT_HOME=%ANT_HOME%
+set ANT_HOME=tools
+
+call %ANT_HOME%\bin\ant -Djava.endorsed.dirs=lib\endorsed -logger org.apache.tools.ant.NoBannerLogger -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+rem ----- Restore ANT_HOME
+set ANT_HOME=%OLD_ANT_HOME%
+set OLD_ANT_HOME=
+
+rem ----- Restore CLASSPATH
+set CLASSPATH=%OLD_CLASSPATH%
+set OLD_CLASSPATH=
diff --git a/ASF_20_SRC_AUTO/build.properties b/ASF_20_SRC_AUTO/build.properties
new file mode 100644
index 0000000..46e790a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/build.properties
@@ -0,0 +1,163 @@
+#----------------------------------------------
+# Cocoon Build Properties
+#----------------------------------------------
+
+# NOTE: don't modify this file directly but copy the properties you need
+# to modify over to a file named 'local.build.properties' and modify that.
+# The build system will override these properties with the ones in the
+# 'local.build.properties' file.
+
+# ---- Webapp ------------------------------------------------------------------
+
+#exclude.webapp.documentation=true
+#exclude.webapp.javadocs=true
+#exclude.webapp.samples=true
+
+# ---- Build Exclusions --------------------------------------------------------
+
+#exclude.deprecated=true
+#exclude.documentation=true
+#exclude.javadocs=true
+
+# ---- Configuration -----------------------------------------------------------
+
+#include.driver.oracle=true
+#include.driver.postgre=true
+#include.driver.odbc=true
+#config.allow-reloads=true
+#config.enable-uploads=true
+
+# ---- Validation --------------------------------------------------------------
+
+#exclude.validate.config=true
+#exclude.validate.xdocs=true
+#exclude.validate.jars=true
+
+# ---- Forrest -----------------------------------------------------------------
+
+# set $FORREST_HOME and $PATH as instructed by Forrest
+
+# ---- Anteater ----------------------------------------------------------------
+
+anteater.home = /default-from-build.properties/anteater-0.9.16
+anteater.target.host = localhost
+anteater.target.port = 8888
+anteater.target.base.path = /
+anteater.option.haltonerror = true
+
+# disable some long-running tests by default
+# anteater.test.bug26186InternalRequestMemoryLeak.enabled = true
+
+# ---- Build -------------------------------------------------------------------
+
+build.root=build
+build=${build.root}/${name}-${version}
+build.dest=${build}/classes
+build.mocks=${build}/mocks
+build.test=${build}/test
+build.docs=${build}/docs
+build.docs.printer=${build}/printer-docs
+build.site=${build}/site
+build.xdocs=${build}/xdocs
+build.javadocs=${build}/javadocs
+build.context=${build}/documentation
+build.context.printer=${build}/printer-documentation
+build.blocks=${build}/blocks
+build.deprecated=${build}/deprecated
+build.samples=${build}/samples
+build.temp=${build}/temp
+build.mounttable=../../mount-table.xml
+
+build.docs.loglevel=ERROR
+build.docs.printer.loglevel=ERROR
+
+# ------ Webapp Build Properties -----------------------------------------------
+
+build.webapp=${build.root}/webapp
+build.webapp.webinf=${build.webapp}/WEB-INF
+build.webapp.classes=${build.webapp.webinf}/classes
+build.webapp.lib=${build.webapp.webinf}/lib
+build.webapp.samples=${build.webapp}/samples
+build.webapp.docs=${build.webapp}/docs
+build.webapp.javadocs=${build.webapp}/api/java
+build.webapp.loglevel=INFO
+build.war=${build}/${name}.war
+
+# ------ Standalone-demo Build Properties --------------------------------------
+build.standalone.demo=${build.root}/standalone-demo
+
+# ---- Compilation -------------------------------------------------------------
+
+compiler=modern
+compiler.debug=on
+compiler.optimize=on
+compiler.deprecation=off
+compiler.nowarn=on
+
+
+# ------ System Properties -----------------------------------------------------
+
+# WARNING: you shouldn't need to modify anything below here since there is a
+# very high change of breaking the build system. Do it only if you know what
+# you're doing.
+
+packages=org.apache
+
+# Project descriptor
+gump.descriptor=gump.xml
+
+# Directory Layout
+src=src
+java=${src}/java
+mocks=${src}/mocks
+test=${src}/test
+resources=${src}/resources
+resources.styles=${resources}/styles
+resources.logos=${resources}/logos
+resources.javadoc=${resources}/javadoc
+documentation=${src}/documentation
+docs=${documentation}/xdocs
+images=${documentation}/images
+blocks=${src}${file.separator}blocks
+samples=${src}/samples
+webapp=${src}/webapp
+webapp.samples=${webapp}/samples
+customconf=${src}/confpatch
+
+# Deprecated Stuff
+deprecated=${src}/deprecated
+deprecated.src=${deprecated}/java
+deprecated.conf=${deprecated}/conf
+
+# Tools
+tools=tools
+tools.lib=${tools}/lib
+tools.src=${tools}/src
+tools.tasks.src=${tools.src}/anttasks
+tools.tasks.dest=${tools}/anttasks
+tools.loader.src=${tools.src}/loader
+tools.loader.dest=${tools}/loader
+tools.jetty=${tools}/jetty
+
+# IDE
+ide.eclipse.outputdir=${build.root}/eclipse/classes
+ide.eclipse.export.libs=false
+
+# Libraries
+lib=lib
+lib.core=${lib}/core
+lib.endorsed=${lib}/endorsed
+lib.optional=${lib}/optional
+lib.local=${lib}/local
+
+# Distribution Directories
+dist.root=dist
+dist=${dist.root}/${name}-${version}
+dist.name=${name}-${version}
+dist.target=${dist.root}
+
+# Site Directory
+site=../cocoon-site/site/2.1
+
+# Legal
+legal=legal
diff --git a/ASF_20_SRC_AUTO/build.sh b/ASF_20_SRC_AUTO/build.sh
new file mode 100755
index 0000000..4cae65b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/build.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+chmod u+x ./tools/bin/antRun
+chmod u+x ./tools/bin/ant
+
+# ----- Verify and Set Required Environment Variables -------------------------
+
+if [ "$TERM" = "cygwin" ] ; then
+ S=';'
+else
+ S=':'
+fi
+
+# ----- Ignore system CLASSPATH variable
+OLD_CLASSPATH=$CLASSPATH
+unset CLASSPATH
+CLASSPATH="`echo lib/endorsed/*.jar | tr ' ' $S`"
+export CLASSPATH
+
+# ----- Use Ant shipped with Cocoon. Ignore installed in the system Ant
+OLD_ANT_HOME="$ANT_HOME"
+export ANT_HOME=tools
+
+"$ANT_HOME/bin/ant" -Djava.endorsed.dirs=lib/endorsed -logger org.apache.tools.ant.NoBannerLogger -emacs $@
+
+# ----- Restore ANT_HOME
+export ANT_HOME=$OLD_ANT_HOME
+unset OLD_ANT_HOME
+
+# ----- Restore CLASSPATH
+export CLASSPATH=$OLD_CLASSPATH
+unset OLD_CLASSPATH
diff --git a/ASF_20_SRC_AUTO/build.xml b/ASF_20_SRC_AUTO/build.xml
new file mode 100644
index 0000000..597b8c3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/build.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!-- ===========================================================================
+
+ * =========================== *
+ | Apache Cocoon Build System |
+ * =========================== *
+
+ CVS $Id: build.xml,v 1.34 2004/01/13 11:22:51 unico Exp $:
+
+============================================================================ -->
+
+<project default="webapp" basedir="." name="Apache Cocoon">
+
+ <!-- ================== Apache Cocoon targets ======================== -->
+
+ <!-- =================================================================== -->
+ <!-- Initialization targets -->
+ <import file="tools/targets/init-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Compile targets -->
+ <import file="tools/targets/compile-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Validation targets -->
+ <import file="tools/targets/validate-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Samples targets -->
+ <import file="tools/targets/samples-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Web application targets -->
+ <import file="tools/targets/webapp-build.xml" />
+ <!-- =================================================================== -->
+ <!-- IDE targets -->
+ <import file="tools/targets/ide-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Testcases targets -->
+ <import file="tools/targets/test-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Documentation targets -->
+ <import file="tools/targets/docs-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Distribution targets -->
+ <import file="tools/targets/dist-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Administration targets -->
+ <import file="tools/targets/admin-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Standalone-demo targets -->
+ <import file="tools/targets/standalone-demo-build.xml" />
+ <!-- =================================================================== -->
+ <!-- Instrumentation targets -->
+ <import file="tools/targets/instrumentation-build.xml" />
+ <!-- =================================================================== -->
+
+ <!-- ================== Apache Forrest targets ======================= -->
+
+ <!-- =================================================================== -->
+ <!-- Forrest targets -->
+ <import file="tools/targets/forrest-build.xml" />
+ <!-- =================================================================== -->
+
+</project>
+
diff --git a/ASF_20_SRC_AUTO/cli.xconf b/ASF_20_SRC_AUTO/cli.xconf
new file mode 100644
index 0000000..5561122
--- /dev/null
+++ b/ASF_20_SRC_AUTO/cli.xconf
@@ -0,0 +1,300 @@
+<?xml version="1.0"?>
+
+<!--+
+ | This is the Apache Cocoon command line configuration file.
+ | Here you give the command line interface details of where
+ | to find various aspects of your Cocoon installation.
+ |
+ | If you wish, you can also use this file to specify the URIs
+ | that you wish to generate.
+ |
+ | The current configuration information in this file is for
+ | building the Cocoon documentation. Therefore, all links here
+ | are relative to the build context dir, which, in the build.xml
+ | file, is set to ${build.context}
+ |
+ | Options:
+ | verbose: increase amount of information presented
+ | to standard output (default: false)
+ | follow-links: whether linked pages should also be
+ | generated (default: true)
+ | precompile-only: precompile sitemaps and XSP pages, but
+ | do not generate any pages (default: false)
+ | confirm-extensions: check the mime type for the generated page
+ | and adjust filename and links extensions
+ | to match the mime type
+ | (e.g. text/html->.html)
+ |
+ | Note: Whilst using an xconf file to configure the Cocoon
+ | Command Line gives access to more features, the use of
+ | command line parameters is more stable, as there are
+ | currently plans to improve the xconf format to allow
+ | greater flexibility. If you require a stable and
+ | consistent method for accessing the CLI, it is recommended
+ | that you use the command line parameters to configure
+ | the CLI. See documentation at:
+ | /userdocs/offline/index.html and Wiki:CommandLine
+ |
+ | CVS: $Id: cli.xconf,v 1.11 2003/11/13 06:24:13 crossley Exp $
+ +-->
+
+<cocoon verbose="true"
+ follow-links="true"
+ precompile-only="false"
+ confirm-extensions="true">
+
+ <!--+
+ | The context directory is usually the webapp directory
+ | containing the sitemap.xmap file.
+ |
+ | The config file is the cocoon.xconf file.
+ |
+ | The work directory is used by Cocoon to store temporary
+ | files and cache files.
+ |
+ | The destination directory is where generated pages will
+ | be written (assuming the 'simple' mapper is used, see
+ | below)
+ +-->
+ <context-dir>build/webapp</context-dir>
+ <config-file>WEB-INF/cocoon.xconf</config-file>
+ <work-dir>build/work</work-dir>
+ <dest-dir>build/dest</dest-dir>
+
+ <!--+
+ | A checksum file can be used to store checksums for pages
+ | as they are generated. When the site is next generated,
+ | files will not be written if their checksum has not changed.
+ | This means that it will be easier to detect which files
+ | need to be uploaded to a server, using the timestamp.
+ +-->
+ <!-- <checksums-uri>build/work/checksums</checksums-uri>-->
+
+ <!--+
+ | Broken link reporting options:
+ | Report into a text file, one link per line:
+ | <broken-links type="text" report="filename"/>
+ | Report into an XML file:
+ | <broken-links type="xml" report="filename"/>
+ | Ignore broken links (default):
+ | <broken-links type="none"/>
+ |
+ | Two attributes to this node specify whether a page should
+ | be generated when an error has occured. 'generate' specifies
+ | whether a page should be generated (default: true) and
+ | extension specifies an extension that should be appended
+ | to the generated page's filename (default: none)
+ |
+ | Using this, a quick scan through the destination directory
+ | will show broken links, by their filename extension.
+ +-->
+ <broken-links type="xml"
+ file="brokenlinks.xml"
+ generate="false"
+ extension=".error"/>
+
+ <!--+
+ | Load classes at startup. This is necessary for generating
+ | from sites that use SQL databases and JDBC.
+ | The <load-class> element can be repeated if multiple classes
+ | are needed.
+ +-->
+ <!--
+ <load-class>org.firebirdsql.jdbc.Driver</load-class>
+ -->
+
+ <!--+
+ | Configures logging.
+ | The 'log-kit' parameter specifies the location of the log kit
+ | configuration file (usually called logkit.xconf.
+ |
+ | Logger specifies the logging category (for all logging prior
+ | to other Cocoon logging categories taking over)
+ |
+ | Available log levels are:
+ | DEBUG: prints all level of log messages.
+ | INFO: prints all level of log messages except DEBUG
+ | ones.
+ | WARN: prints all level of log messages except DEBUG
+ | and INFO ones.
+ | ERROR: prints all level of log messages except DEBUG,
+ | INFO and WARN ones.
+ | FATAL_ERROR: prints only log messages of this level
+ +-->
+ <logging log-kit="build/webapp/WEB-INF/logkit.xconf" logger="cli" level="DEBUG" />
+
+ <!--+
+ | Specifies the filename to be appended to URIs that
+ | refer to a directory (i.e. end with a forward slash).
+ +-->
+ <default-filename>index.html</default-filename>
+
+ <!--+
+ | Specifies a user agent string to the sitemap when
+ | generating the site.
+ |
+ | A generic term for a web browser is "user agent". Any
+ | user agent, when connecting to a web server, will provide
+ | a string to identify itself (e.g. as Internet Explorer or
+ | Mozilla). It is possible to have Cocoon serve different
+ | content depending upon the user agent string provided by
+ | the browser. If your site does this, then you may want to
+ | use this <user-agent> entry to provide a 'fake' user agent
+ | to Cocoon, so that it generates the correct version of your
+ | site.
+ |
+ | For most sites, this can be ignored.
+ +-->
+ <!--
+ <user-agent>Cocoon Command Line Environment 2.1</user-agent>
+ -->
+
+ <!--+
+ | Specifies an accept string to the sitemap when generating
+ | the site.
+ | User agents can specify to an HTTP server what types of content
+ | (by mime-type) they are able to receive. E.g. a browser may be
+ | able to handle jpegs, but not pngs. The HTTP accept header
+ | allows the server to take the browser's capabilities into account,
+ | and only send back content that it can handle.
+ |
+ | For most sites, this can be ignored.
+ +-->
+
+ <accept>*/*</accept>
+
+ <!--+
+ | Specifies which URIs should be included or excluded, according
+ | to wildcard patterns.
+ |
+ | These includes/excludes are only relevant when you are following
+ | links. A link URI must match an include pattern (if one is given)
+ | and not match an exclude pattern, if it is to be followed by
+ | Cocoon. It can be useful, for example, where there are links in
+ | your site to pages that are not generated by Cocoon, such as
+ | references to api-documentation.
+ |
+ | By default, all URIs are included. If both include and exclude
+ | patterns are specified, a URI is first checked against the
+ | include patterns, and then against the exclude patterns.
+ |
+ | Multiple patterns can be given, using muliple include or exclude
+ | nodes.
+ |
+ | The order of the elements is not significant, as only the first
+ | successful match of each category is used.
+ |
+ | Currently, only the complete source URI can be matched (including
+ | any URI prefix). Future plans include destination URI matching
+ | and regexp matching. If you have requirements for these, contact
+ | dev@cocoon.apache.org.
+ +-->
+
+ <include pattern="**"/>
+ <exclude pattern="docs/apidocs/**"/>
+
+ <!-- <include-links extension=".html"/>-->
+
+ <!--+
+ | <uri> nodes specify the URIs that should be generated, and
+ | where required, what should be done with the generated pages.
+ | They describe the way the URI of the generated file is created
+ | from the source page's URI. There are three ways that a generated
+ | file URI can be created: append, replace and insert.
+ |
+ | The "type" attribute specifies one of (append|replace|insert):
+ |
+ | append:
+ | Append the generated page's URI to the end of the source URI:
+ |
+ | <uri type="append" src-prefix="documents/" src="index.html"
+ | dest="build/dest/"/>
+ |
+ | This means that
+ | (1) the "documents/index.html" page is generated
+ | (2) the file will be written to "build/dest/documents/index.html"
+ |
+ | replace:
+ | Completely ignore the generated page's URI - just
+ | use the destination URI:
+ |
+ | <uri type="replace" src-prefix="documents/" src="index.html"
+ | dest="build/dest/docs.html"/>
+ |
+ | This means that
+ | (1) the "documents/index.html" page is generated
+ | (2) the result is written to "build/dest/docs.html"
+ | (3) this works only for "single" pages - and not when links
+ | are followed
+ |
+ | insert:
+ | Insert generated page's URI into the destination
+ | URI at the point marked with a * (example uses fictional
+ | zip protocol)
+ |
+ | <uri type="insert" src-prefix="documents/" src="index.html"
+ | dest="zip://*.zip/page.html"/>
+ |
+ | This means that
+ | (1)
+ |
+ | In any of these scenarios, if the dest attribute is omitted,
+ | the value provided globally using the <dest-dir> node will
+ | be used instead.
+ +-->
+
+ <uri type="replace"
+ src-prefix="samples/"
+ src="hello-world/hello.html"
+ dest="build/dest/hello-world.html"/>
+
+ <!--+
+ | <uri> nodes can be grouped together in a <uris> node. This
+ | enables a group of URIs to share properties. The following
+ | properties can be set for a group of URIs:
+ | * follow-links: should pages be crawled for links
+ | * confirm-extensions: should file extensions be checked
+ | for the correct mime type
+ | * src-prefix: all source URIs should be
+ | pre-pended with this prefix before
+ | generation. The prefix is not
+ | included when calculating the
+ | destination URI
+ | * dest: the base destination URI to be
+ | shared by all pages in this group
+ | * type: the method to be used to calculate
+ | the destination URI. See above
+ | section on <uri> node for details.
+ |
+ | Each <uris> node can have a name attribute. When a name
+ | attribute has been specified, the -n switch on the command
+ | line can be used to tell Cocoon to only process the URIs
+ | within this URI group. When no -n switch is given, all
+ | <uris> nodes are processed. Thus, one xconf file can be
+ | used to manage multiple sites.
+ +-->
+
+ <uris name="docs" follow-links="true">
+ <uri type="append" src-prefix="docs/" src="index.html"
+ dest="build/dest/" />
+ </uris>
+
+ <uris name="samples"
+ follow-links="false"
+ src-prefix="samples/"
+ dest="build/dest/examples/"
+ type="append"
+ >
+ <uri src="hello-world/hello.html"/>
+ <uri src="hello-world/hello.xml"/>
+ </uris>
+
+ <!--+
+ | File containing URIs (plain text, one per line).
+ +-->
+ <!--
+ <uri-file>uris.txt</uri-file>
+ -->
+</cocoon>
+
+
diff --git a/ASF_20_SRC_AUTO/cocoon.bat b/ASF_20_SRC_AUTO/cocoon.bat
new file mode 100644
index 0000000..68971e2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/cocoon.bat
@@ -0,0 +1,151 @@
+@echo off
+:: -----------------------------------------------------------------------------
+:: Cocoon Win32 Shell Script
+::
+:: $Id: cocoon.bat,v 1.20 2004/03/05 02:24:26 joerg Exp $
+:: -----------------------------------------------------------------------------
+
+:: Configuration variables
+::
+:: COCOON_HOME
+:: Folder that points to the root of the Cocoon distribution
+::
+:: COCOON_LIB
+:: Folder containing all the library files needed by the Cocoon CLI
+::
+:: JAVA_HOME
+:: Home of Java installation.
+::
+:: JAVA_OPTIONS
+:: Extra options to pass to the JVM
+::
+:: JAVA_DEBUG_PORT
+:: The location where the JVM debug server should listen to
+::
+:: JETTY_PORT
+:: Override the default port for Jetty
+::
+:: JETTY_ADMIN_PORT
+:: The port where the jetty web administration should bind
+::
+:: JETTY_WEBAPP
+:: The directory where the webapp that jetty has to execute is located
+::
+
+:: ----- Verify and Set Required Environment Variables -------------------------
+
+if not "%JAVA_HOME%" == "" goto gotJavaHome
+echo You must set JAVA_HOME to point at your Java Development Kit installation
+goto end
+:gotJavaHome
+
+:: ----- Check System Properties -----------------------------------------------
+
+if not "%EXEC%" == "" goto gotExec
+if not "%OS%" == "Windows_NT" goto noExecNT
+set EXEC=start "Cocoon" /D.
+goto gotExec
+:noExecNT
+set EXEC=
+:gotExec
+
+if not "%COCOON_HOME%" == "" goto gotHome
+set COCOON_HOME=.
+:gotHome
+
+if not "%COCOON_LIB%" == "" goto gotLib
+set COCOON_LIB=%COCOON_HOME%\build\webapp\WEB-INF\lib
+:gotLib
+
+if not "%JETTY_PORT%" == "" goto gotJettyPort
+set JETTY_PORT=8888
+:gotJettyPort
+
+if not "%JETTY_ADMIN_PORT%" == "" goto gotJettyAdminPort
+set JETTY_ADMIN_PORT=8889
+:gotJettyAdminPort
+
+if not "%JETTY_WEBAPP%" == "" goto gotWebapp
+set DEMO_WEBAPP=..\webapp
+if not exist %DEMO_WEBAPP% goto standardWebapp
+set JETTY_WEBAPP=%DEMO_WEBAPP%
+goto gotWebapp
+:standardWebapp
+set JETTY_WEBAPP=%COCOON_HOME%\build\webapp
+:gotWebapp
+echo cocoon.bat: using %JETTY_WEBAPP% as the webapp directory
+
+if not "%JAVA_DEBUG_PORT%" == "" goto gotDebugPort
+set JAVA_DEBUG_PORT=8000
+:gotDebugPort
+
+:: ----- Ensure desktop.ini is activated ---------------------------------------
+
+attrib +s %COCOON_HOME%
+
+:: ----- Set Up The Classpath --------------------------------------------------
+
+set CP=%COCOON_HOME%\tools\loader;%COCOON_HOME%\build\webapp\WEB-INF\classes
+
+:: ----- Check action ----------------------------------------------------------
+
+if ""%1"" == ""cli"" goto doCli
+if ""%1"" == ""servlet"" goto doServlet
+if ""%1"" == ""servlet-admin"" goto doAdmin
+if ""%1"" == ""servlet-debug"" goto doDebug
+IF ""%1"" == ""servlet-profile"" goto doProfile
+
+echo Usage: cocoon (action)
+echo actions:
+echo cli Run Cocoon from command line
+echo servlet Run Cocoon in a servlet container
+echo servlet-admin Run Cocoon in a servlet container and turn container web administration on
+echo servlet-debug Run Cocoon in a servlet container and turn on remote JVM debug
+echo servlet-profile Run Cocoon in a servlet container and turn on JVM profiling
+goto end
+
+:: ----- Cli -------------------------------------------------------------------
+
+:doCli
+set param=
+shift
+:cliLoop
+if "%1"=="" goto cliLoopEnd
+if not "%1"=="" set param=%param% %1
+shift
+goto cliLoop
+
+:cliLoopEnd
+
+"%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath "%CP%" -Djava.endorsed.dirs=lib\endorsed "-Dloader.jar.repositories=%COCOON_LIB%" -Dloader.main.class=org.apache.cocoon.Main Loader %param%
+goto end
+
+:: ----- Servlet ---------------------------------------------------------------
+
+:doServlet
+%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath "%CP%" "-Djava.endorsed.dirs=%COCOON_HOME%\lib\endorsed" "-Dwebapp=%JETTY_WEBAPP%" -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dhome=%COCOON_HOME%" "-Dloader.jar.repositories=%COCOON_HOME%\tools\jetty\lib;%COCOON_HOME%\lib\endorsed" -Dloader.main.class=org.mortbay.jetty.Server Loader "%COCOON_HOME%\tools\jetty\conf\main.xml"
+goto end
+
+:: ----- Servlet with Administration Web Interface -----------------------------
+
+:doAdmin
+%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath "%CP%" "-Djava.endorsed.dirs=%COCOON_HOME%\lib\endorsed" "-Dwebapp=%JETTY_WEBAPP%" -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dhome=%COCOON_HOME%" "-Dloader.jar.repositories=%COCOON_HOME%\tools\jetty\lib;%COCOON_HOME%\lib\endorsed" -Dloader.main.class=org.mortbay.jetty.Server Loader "%COCOON_HOME%\tools\jetty\conf\main.xml" "%COCOON_HOME%\tools\jetty\conf\admin.xml"
+goto end
+
+:: ----- Servlet Debug ---------------------------------------------------------
+
+:doDebug
+%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -Xdebug -Xrunjdwp:transport=dt_socket,address=%JAVA_DEBUG_PORT%,server=y,suspend=n -classpath "%CP%" "-Djava.endorsed.dirs=%COCOON_HOME%\lib\endorsed" "-Dwebapp=%JETTY_WEBAPP%" "-Dhome=%COCOON_HOME%" -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dloader.jar.repositories=%COCOON_HOME%\tools\jetty\lib;%COCOON_HOME%\lib\endorsed" -Dloader.main.class=org.mortbay.jetty.Server Loader "%COCOON_HOME%\tools\jetty\conf\main.xml"
+goto end
+
+:: ----- Servlet Profile ---------------------------------------------------------
+
+:doProfile
+%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -Xrunhprof:heap=all,cpu=samples,thread=y,depth=3 -classpath "%CP%" "-Djava.endorsed.dirs=%COCOON_HOME%\lib\endorsed" "-Dwebapp=%JETTY_WEBAPP%" "-Dhome=%COCOON_HOME%" -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dloader.jar.repositories=%COCOON_HOME%\tools\jetty\lib;%COCOON_HOME%\lib\endorsed" -Dloader.main.class=org.mortbay.jetty.Server Loader "%COCOON_HOME%\tools\jetty\conf\main.xml"
+
+:: ----- End -------------------------------------------------------------------
+
+:end
+set CP=
+set EXEC=
+
diff --git a/ASF_20_SRC_AUTO/cocoon.sh b/ASF_20_SRC_AUTO/cocoon.sh
new file mode 100755
index 0000000..e20e95a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/cocoon.sh
@@ -0,0 +1,162 @@
+#!/bin/sh
+# -----------------------------------------------------------------------------
+# Cocoon Unix Shell Script
+#
+# $Id: cocoon.sh,v 1.11 2004/03/05 02:24:26 joerg Exp $
+# -----------------------------------------------------------------------------
+
+# Configuration variables
+#
+# COCOON_HOME
+# The root of the Cocoon distribution
+#
+# COCOON_WEBAPP_HOME
+# The root of the Cocoon web application
+#
+# COCOON_LIB
+# Folder containing all the library files needed by the Cocoon CLI
+#
+# JAVA_HOME
+# Home of Java installation.
+#
+# JAVA_OPTIONS
+# Extra options to pass to the JVM
+#
+# JAVA_DEBUG_ARGS
+# The command line arguments for the internal JVM debugger
+#
+# JAVA_PROFILE_ARGS
+# The command line arguments for the internal JVM profiler
+#
+# JETTY_PORT
+# Override the default port for Jetty
+#
+# JETTY_ADMIN_PORT
+# The port where the jetty web administration should bind
+#
+
+
+usage()
+{
+ echo "Usage: $0 (action)"
+ echo "actions:"
+ echo " cli Run Cocoon from the command line"
+ echo " servlet Run Cocoon in a servlet container"
+ echo " servlet-admin Run Cocoon in a servlet container and turn on container web administration"
+ echo " servlet-debug Run Cocoon in a servlet container and turn on JVM remote debug"
+ echo " servlet-profile Run Cocoon in a servlet container and turn on JVM profiling"
+ exit 1
+}
+
+[ $# -gt 0 ] || usage
+
+ACTION=$1
+shift
+ARGS="$*"
+
+# ----- Verify and Set Required Environment Variables -------------------------
+
+if [ "$JAVA_HOME" = "" ] ; then
+ echo You must set JAVA_HOME to point at your Java Development Kit installation
+ exit 1
+fi
+
+if [ "$JAVA_OPTIONS" = "" ] ; then
+ JAVA_OPTIONS='-Xms32M -Xmx512M'
+fi
+
+if [ "$COCOON_HOME" = "" ] ; then
+ COCOON_HOME='.'
+fi
+
+if [ "$COCOON_WEBAPP_HOME" = "" ] ; then
+ STANDALONE_WEBAPP=../webapp
+ if [ -d $STANDALONE_WEBAPP ] ; then
+ # for standalone-webapp setup
+ COCOON_WEBAPP_HOME=$STANDALONE_WEBAPP
+ else
+ # when in the build environment
+ COCOON_WEBAPP_HOME="$COCOON_HOME/build/webapp"
+ fi
+fi
+echo "$0: using $COCOON_WEBAPP_HOME as the webapp directory"
+
+if [ "$COCOON_LIB" = "" ] ; then
+ COCOON_LIB="$COCOON_WEBAPP_HOME/WEB-INF/lib"
+fi
+
+if [ "$JETTY_PORT" = "" ] ; then
+ JETTY_PORT='8888'
+fi
+
+if [ "$JETTY_ADMIN_PORT" = "" ] ; then
+ JETTY_ADMIN_PORT='8889'
+fi
+
+if [ "$JAVA_DEBUG_ARGS" = "" ] ; then
+ JAVA_DEBUG_ARGS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'
+fi
+
+if [ "$JAVA_PROFILE_ARGS" = "" ] ; then
+ JAVA_PROFILE_ARGS='-Xrunhprof:heap=all,cpu=samples,thread=y,depth=3'
+fi
+
+
+# ----- Set platform specific variables
+
+PATHSEP=":";
+case "`uname`" in
+ CYGWIN*) PATHSEP=";" ;;
+esac
+
+# ----- Set Local Variables ( used to minimize cut/paste) ---------------------
+
+JAVA="$JAVA_HOME/bin/java"
+ENDORSED_LIBS="$COCOON_HOME/lib/endorsed"
+ENDORSED="-Djava.endorsed.dirs=$ENDORSED_LIBS"
+PARSER=-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
+LOADER=Loader
+LOADER_LIB="${COCOON_HOME}/tools/loader${PATHSEP}${COCOON_WEBAPP_HOME}/WEB-INF/classes"
+
+CLI=-Dloader.main.class=org.apache.cocoon.Main
+CLI_LIBRARIES="-Dloader.jar.repositories=$COCOON_LIB"
+
+JETTY=-Dloader.main.class=org.mortbay.jetty.Server
+JETTY_CONF="$COCOON_HOME/tools/jetty/conf"
+JETTY_MAIN="$JETTY_CONF/main.xml"
+JETTY_ADMIN="$JETTY_CONF/admin.xml"
+JETTY_WEBAPP="-Dwebapp=$COCOON_WEBAPP_HOME"
+JETTY_HOME="-Dhome=$COCOON_HOME"
+JETTY_PORT_ARGS="-Djetty.port=$JETTY_PORT"
+JETTY_ADMIN_ARGS="-Djetty.admin.port=$JETTY_ADMIN_PORT"
+JETTY_LIBRARIES="-Dloader.jar.repositories=$COCOON_HOME/tools/jetty/lib:$ENDORSED_LIBS"
+
+# ----- Do the action ----------------------------------------------------------
+
+case "$ACTION" in
+ cli)
+ $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $CLI_LIBRARIES $CLI $LOADER $ARGS
+ ;;
+
+ servlet)
+ $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY $LOADER $JETTY_MAIN
+ ;;
+
+ servlet-admin)
+ $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_ADMIN_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY $LOADER $JETTY_MAIN $JETTY_ADMIN
+ ;;
+
+ servlet-debug)
+ $JAVA $JAVA_OPTIONS $JAVA_DEBUG_ARGS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY $LOADER $JETTY_MAIN
+ ;;
+
+ servlet-profile)
+ $JAVA $JAVA_OPTIONS $JAVA_PROFILE_ARGS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY $LOADER $JETTY_MAIN
+ ;;
+
+ *)
+ usage
+ ;;
+esac
+
+exit 0
diff --git a/ASF_20_SRC_AUTO/forrest.properties b/ASF_20_SRC_AUTO/forrest.properties
new file mode 100644
index 0000000..2f8e8c1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/forrest.properties
@@ -0,0 +1,100 @@
+##############
+# Properties used by forrest.build.xml for building the website
+##############
+
+# Prints out a summary of Forrest settings for this project
+#forrest.echo=true
+
+# Project name (used to name .war file)
+project.name=cocoon-2.1.5-dev
+
+# Specifies name of Forrest skin to use
+#project.skin=forrest-site
+#project.skin=avalon-tigris
+#project.skin=krysalis-site
+
+
+##############
+# layout properties
+
+# Properties that must be set to override the default locations
+#
+# Parent properties must be set. This usually means uncommenting
+# project.content-dir if any other property using it is uncommented
+
+#project.status=status.xml
+project.content-dir=src/documentation
+#project.conf-dir=${project.content-dir}/conf
+#project.sitemap=${project.content-dir}/sitemap.xmap
+project.xdocs-dir=build/${project.name}/documentation/xdocs
+#project.stylesheets-dir=${project.content-dir}/resources/stylesheets
+project.images-dir=${project.content-dir}/images
+#project.schema-dir=${project.content-dir}/resources/schema
+#project.skins-dir=${project.content-dir}/skins
+#project.skinconf=${project.content-dir}/skinconf.xml
+#project.lib-dir=${project.content-dir}/lib
+#project.classes-dir=${project.content-dir}/classes
+
+project.build-dir=${project.home}/build/${project.name}
+project.site-dir=${project.build-dir}/site
+
+project.webapp=build/webapp-site
+
+##############
+# Cocoon catalog entity resolver properties
+
+# A local OASIS catalog file to supplement the default Forrest catalog
+#project.catalog=${project.schema-dir}/catalog
+
+# The verbosity level for the entity resolver (1..10)
+#forrest.catalog.verbosity=1
+
+
+##############
+# validation properties
+
+# These props determine if validation is performed at all
+# Values are inherited unless overridden.
+# Eg, if forrest.validate=false, then all others are false unless set to true.
+#forrest.validate=true
+#forrest.validate.xdocs=${forrest.validate}
+#forrest.validate.skinconf=${forrest.validate}
+forrest.validate.sitemap=false
+#forrest.validate.stylesheets=${forrest.validate}
+#forrest.validate.skins=${forrest.validate}
+#forrest.validate.skins.stylesheets=${forrest.validate.skins}
+
+
+# Key:
+# *.failonerror=(true|false) stop when an XML file is invalid
+# *.includes=(pattern) Comma-separated list of path patterns to validate
+# *.excludes=(pattern) Comma-separated list of path patterns to not validate
+
+#forrest.validate.failonerror=true
+#forrest.validate.includes=**/*
+#forrest.validate.excludes=
+#
+#forrest.validate.xdocs.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.xdocs.includes=**/*.x*
+forrest.validate.xdocs.excludes=site.xml,status.xml,drafts/*.xml,dictionary.xml,catalog-test.xml,ctwig/sample/**/*.xml,tabs.xml
+#
+#forrest.validate.skinconf.includes=${skinconf-file}
+#forrest.validate.skinconf.excludes=
+#forrest.validate.skinconf.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.sitemap.includes=${sitemap-file}
+#forrest.validate.sitemap.excludes=
+#forrest.validate.sitemap.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.stylesheets.includes=**/*.xsl
+#forrest.validate.stylesheets.excludes=
+#forrest.validate.stylesheets.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.skins.includes=**/*
+#forrest.validate.skins.excludes=**/*.xsl
+#forrest.validate.skins.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.skins.stylesheets.includes=**/*.xsl
+#forrest.validate.skins.stylesheets.excludes=
+#forrest.validate.skins.stylesheets.failonerror=${forrest.validate.skins.failonerror}
diff --git a/ASF_20_SRC_AUTO/gump.xml b/ASF_20_SRC_AUTO/gump.xml
new file mode 100644
index 0000000..d2fca07
--- /dev/null
+++ b/ASF_20_SRC_AUTO/gump.xml
@@ -0,0 +1,1255 @@
+<?xml version="1.0"?>
+
+<!--+
+ | Cocoon GUMP Descriptor
+ |
+ | CVS $Id: gump.xml,v 1.114 2004/03/01 20:39:18 joerg Exp $
+ +-->
+
+<module name="cocoon-2.1">
+
+ <url href="http://cocoon.apache.org/"/>
+ <description>Java XML Framework</description>
+ <cvs repository="cocoon"/>
+
+ <!--
+ *******************************
+ ******** COCOON CORE ********
+ *******************************
+ -->
+
+ <project name="cocoon">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-core">
+ <property name="version" value="@@DATE@@"/>
+ <depend property="logkit.jar" project="dist-avalon-logkit"/>
+ <depend property="avalonapi.jar" project="avalon"/>
+ </ant>
+
+ <depend project="ant" inherit="runtime"/>
+
+ <depend project="xml-xerces"/>
+ <depend project="xml-xalan2"/>
+ <depend project="xml-commons-resolver"/>
+
+ <depend project="excalibur-compatibility"/>
+ <depend project="excalibur-instrument"/>
+ <depend project="excalibur-instrument-manager"/>
+ <depend project="excalibur-sourceresolve"/>
+ <depend project="excalibur-xmlutil"/>
+ <depend project="excalibur-store"/>
+ <depend project="excalibur-pool"/>
+ <depend project="excalibur-component"/>
+ <depend project="excalibur-logger"/>
+ <depend project="excalibur-event" inherit="runtime"/>
+ <depend project="excalibur-i18n"/>
+
+ <depend project="jakarta-regexp"/>
+ <depend project="jakarta-servletapi"/>
+
+ <depend project="commons-cli"/>
+ <depend project="commons-httpclient"/>
+ <depend project="commons-collections"/>
+ <depend project="commons-jxpath"/>
+ <depend project="commons-lang"/>
+
+ <depend project="rhino-cocoondev"/>
+ <depend project="jisp"/>
+
+ <depend project="jing"/>
+ <depend project="jstyle"/>
+ <depend project="pizza"/>
+ <depend project="junit"/>
+ <depend project="eclipse-jtd"/>
+
+ <depend project="xmlunit"/><!-- used by the testcases -->
+
+ <work nested="build/cocoon-@@DATE@@/classes"/>
+ <work nested="build/cocoon-@@DATE@@/deprecated"/>
+ <work nested="build/cocoon-@@DATE@@/test"/>
+ <work nested="tools/anttasks"/>
+ <work nested="tools/loader"/>
+
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="cocoon.jar"/>
+ <jar name="cocoon-deprecated.jar"/>
+ <jar name="cocoon-tests.jar"/>
+
+ <javadoc parent="build/cocoon-@@DATE@@/javadocs"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org">
+ <regexp pattern="/BUILD FAILED/" subject="Build Failure - Cocoon"/>
+ </nag>
+ </project>
+
+ <!--
+ ********************************************
+ ******** COCOON BLOCKS ********
+ ********************************************
+ -->
+
+ <project name="cocoon-block-fop" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="fop"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="xml-fop-maintenance"/>
+ <depend project="cocoon-block-batik"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/fop-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ <nag from="Gump" to="fop-dev@xml.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-scratchpad" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="scratchpad"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="castor"/>
+ <depend project="commons-jexl" inherit="all"/>
+ <depend project="commons-betwixt" inherit="all"/>
+ <depend project="commons-beanutils" inherit="all"/>
+ <depend project="commons-digester" inherit="all"/>
+ <depend project="jakarta-velocity" inherit="all"/>
+ <depend project="jakarta-servletapi-4"/>
+ <depend project="cocoon-block-velocity"/>
+ <depend project="cocoon-block-cron"/>
+ <depend project="cocoon-block-batik"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/scratchpad-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-batik" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="batik"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="xml-batik"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/batik-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ <nag from="Gump" to="batik-dev@xml.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-chaperon" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="chaperon"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="chaperon"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/chaperon/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/chaperon/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/chaperon-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-swf" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="swf"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="spark"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/swf-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-jfor" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="jfor"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jfor"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/jfor-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-itext" status="stable">
+ <package>org.apache.cocoon</package>
+ <ant target="gump-block">
+ <property name="block-name" value="itext"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="itext"/>
+ <depend project="itext-xml"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/itext-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-session-fw" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="session-fw"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/session-fw-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-authentication-fw" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="authentication-fw"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-session-fw"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/authentication-fw-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-portal-fw" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="portal-fw"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-session-fw"/>
+ <depend project="cocoon-block-authentication-fw"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/portal-fw-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-databases" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="databases"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="excalibur-datasource"/>
+
+ <work nested="tools/anttasks"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/databases/mocks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/databases-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-hsqldb" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="hsqldb"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-databases"/>
+ <depend project="hsqldb"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="hsqldb-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-precept" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="precept"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="castor"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/precept-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-poi" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="poi"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jakarta-poi"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/poi-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ <nag from="Gump" to="poi-dev@jakarta.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-naming" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="naming"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jndi"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/naming-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-jsp" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="jsp"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/jsp/mocks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/jsp-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-php" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="php"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <option project="phpservlt"/>
+
+ <work nested="tools/anttasks"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/php/mocks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/php-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-python" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="python"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <option project="jython"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/python-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-lucene" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="lucene"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jakarta-lucene"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/lucene-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-html" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="html"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jtidy"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/html-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-bsf" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="bsf"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="bsf"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/bsf-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-profiler" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="profiler"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/profiler-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-velocity" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="velocity"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jakarta-velocity"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/velocity-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-linkrewriter" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="linkrewriter"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/linkrewriter-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-web3" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="web3"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="jta"/>
+ <depend project="concurrent"/>
+
+ <work nested="tools/anttasks"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/web3/mocks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/web3-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-slide" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="slide"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-repository"/>
+ <depend project="cocoon-block-eventcache"/>
+ <depend project="cocoon-block-jms"/>
+ <depend project="jta"/>
+ <depend project="jakarta-slide"/>
+ <depend project="jdom"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/slide-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-proxy" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="proxy"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="commons-httpclient"/>
+ <depend project="commons-logging"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/proxy-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-xmldb" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="xmldb"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-databases"/>
+ <depend project="xmldb"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/xmldb-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-deli" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="deli"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="deli"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/deli-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-asciiart" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="asciiart"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/asciiart/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/asciiart/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/asciiart-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-mail" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="mail"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-asciiart"/>
+ <depend project="javamail"/>
+ <depend project="jaf"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/mail-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-axis" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="axis"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="xml-axis"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/axis-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-taglib" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="taglib"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/taglib-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-woody" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="woody"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="xreporter-expression"/>
+ <depend project="jakarta-oro"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/woody/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/woody-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-qdox" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="qdox"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="qdox"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/qdox-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-portal" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="portal"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-session-fw"/>
+ <depend project="cocoon-block-authentication-fw"/>
+ <depend project="cocoon-block-html"/>
+ <depend project="jtidy"/>
+ <depend project="castor"/>
+ <depend project="commons-collections"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/portal-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-xmlform" status="deprecated">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="xmlform"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/xmlform/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/xmlform/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/xmlform-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-jxforms" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="jxforms"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/jxforms/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/jxforms/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/jxforms-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-petstore" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="petstore"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-databases"/>
+ <depend project="cocoon-block-hsqldb"/>
+ <depend project="cocoon-block-velocity"/>
+ <depend project="cocoon-block-woody"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/petstore-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-stx" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="stx"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="commons-logging"/>
+ <depend project="joost"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/stx-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-linotype" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="linotype"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/linotype-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-webdav" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="webdav"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-repository"/>
+ <depend project="jakarta-slide"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/webdav/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/webdav/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/webdav-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-eventcache" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="eventcache"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="build/cocoon-@@DATE@@/blocks/eventcache/dest"/>
+ <work nested="build/cocoon-@@DATE@@/blocks/eventcache/test"/>
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/eventcache-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-apples" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="apples"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <!-- following dependency is only for samples -->
+ <depend project="cocoon-block-woody" />
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/apples-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-slop" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="slop"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/slop-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-midi" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="midi"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/midi-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-cron" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="cron"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="quartz"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/cron-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-ojb" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="ojb"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-databases"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/ojb-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-jms" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="jms"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-eventcache"/>
+ <depend project="cocoon-block-databases"/>
+ <depend project="cocoon-block-hsqldb"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/jms-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-repository" status="unstable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="repository"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <depend project="cocoon-block-databases" />
+ <depend project="cocoon-block-eventcache" />
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/repository-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-paranoid" status="stable">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="paranoid"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="jakarta-servletapi"/>
+ <depend project="cocoon" inherit="all"/>
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/paranoid-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <project name="cocoon-block-workflow" status="unstable" exclude="true">
+ <package>org.apache.cocoon</package>
+
+ <ant target="gump-block">
+ <property name="block-name" value="workflow"/>
+ <property name="version" value="@@DATE@@"/>
+ </ant>
+
+ <depend project="cocoon" inherit="all"/>
+ <!-- we need log4j -->
+ <depend project="cocoon-block-deli" />
+
+ <work nested="tools/anttasks"/>
+ <home nested="build/cocoon-@@DATE@@"/>
+
+ <jar name="blocks/workflow-block.jar"/>
+
+ <nag from="Gump" to="dev@cocoon.apache.org"/>
+ </project>
+
+ <!--
+ ********************************************
+ ******** COCOON SUPPLIED PROJECTS ********
+ ********************************************
+ -->
+
+ <project name="pizza">
+ <url href="http://pizzacompiler.sourceforge.net/"/>
+ <package>net.sf.pizzacompiler</package>
+ <description>
+ Java Compiler
+ </description>
+ <home nested="lib/optional"/>
+ <jar name="pizza-1.1.jar"/>
+ </project>
+
+ <project name="jstyle">
+ <url href="http://astyle.sourceforge.net/"/>
+ <package>jstyle</package>
+ <description>
+ Automatic Indentation Filter
+ </description>
+ <home nested="lib/optional"/>
+ <jar name="jstyle.jar"/>
+ </project>
+
+ <project name="deli">
+ <url href="http://sourceforge.net/projects/delicon/"/>
+ <package>com.hp.hpl.deli</package>
+ <description>
+ Delivery context library
+ </description>
+ <home nested="src/blocks/deli/lib"/>
+ <jar name="deli-0.9.8.jar"/>
+ </project>
+
+ <project name="jisp">
+ <url href="http://www.coyotegulch.com/jisp/"/>
+ <description>
+ Java Indexed Serialization Package
+ </description>
+ <home nested="lib/core"/>
+ <jar name="jisp-2.5.1.jar"/>
+ </project>
+
+ <project name="jing">
+ <package>com/thaiopensource</package>
+ <url href="http://www.thaiopensource.com/relaxng/jing.html"/>
+ <description>
+ Jing performs XML Validation using RelaxNG schemas
+ </description>
+ <home nested="tools/lib"/>
+ <jar name="jing-20030619.jar"/>
+ </project>
+
+ <project name="chaperon">
+ <url href="http://chaperon.sourceforge.net/"/>
+ <description>
+ Chaperon is a project that helps to convert structured text to XML
+ </description>
+ <home nested="src/blocks/chaperon/lib"/>
+ <jar name="chaperon-20040205.jar"/>
+ </project>
+
+ <project name="itext">
+ <url href="http://www.lowagie.com/iText/"/>
+ <description>
+ iText is a library that allows you to generate PDF files on the fly
+ </description>
+ <home nested="src/blocks/itext/lib"/>
+ <jar name="itext-1.02.jar"/>
+ </project>
+
+ <project name="itext-xml">
+ <url href="http://www.lowagie.com/iText/"/>
+ <description>
+ iText is a library that allows you to generate PDF files on the fly
+ </description>
+ <home nested="src/blocks/itext/lib"/>
+ <jar name="itext-xml-1.02.jar"/>
+ </project>
+
+ <project name="eclipse-jtd">
+ <url href="http://www.eclipse.org/"/>
+ <description>
+ Java Development Tools from the Eclipse IDE Project
+ </description>
+ <home nested="lib/optional"/>
+ <jar name="jdtcore-2.1.2.jar"/>
+ </project>
+
+ <project name="spark">
+ <url href="http://www.tivano.de/software/spark/index.shtml"/>
+ <description>
+ Spark is a library for converting XML to Flash (swf)
+ </description>
+ <home nested="src/blocks/swf/lib"/>
+ <jar name="spark-0.2.jar"/>
+ </project>
+
+ <project name="xreporter-expression">
+ <url href="http://xreporter.cocoondev.org"/>
+ <description>
+ An expression language interpreter.
+ </description>
+ <home nested="src/blocks/woody/lib"/>
+ <jar name="xreporter-expression-20030725.jar"/>
+ </project>
+
+ <project name="qdox">
+ <url href="http://qdox.codehaus.org/"/>
+ <description>
+ Small footprint parser for extracting class/interface/method
+ definitions from java source files.
+ </description>
+ <home nested="src/blocks/qdox/lib"/>
+ <jar name="qdox-1.3.jar"/>
+ </project>
+
+ <project name="joost">
+ <url href="http://joost.sourceforge.net"/>
+ <description>
+ Streaming Transformation for XML (STX) library
+ </description>
+ <home nested="src/blocks/stx/lib"/>
+ <jar name="joost-20031219.jar"/>
+ </project>
+
+</module>
diff --git a/ASF_20_SRC_AUTO/legal/LICENSE.htmlarea b/ASF_20_SRC_AUTO/legal/LICENSE.htmlarea
new file mode 100644
index 0000000..32ac404
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/LICENSE.htmlarea
@@ -0,0 +1,30 @@
+htmlArea License (based on BSD license)
+Copyright (c) 2002-2004, interactivetools.com, inc.
+Copyright (c) 2003-2004 dynarch.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1) Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+2) Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3) Neither the name of interactivetools.com, inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/ASF_20_SRC_AUTO/legal/LICENSE.spark.fpl b/ASF_20_SRC_AUTO/legal/LICENSE.spark.fpl
new file mode 100644
index 0000000..de393ec
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/LICENSE.spark.fpl
@@ -0,0 +1,73 @@
+ Flash2XML PUBLIC LICENSE
+ Version 1.0
+
+ 1. Definitions
+ This license is a union of the following two parts that should be
+ found as text files in the same place (directory), in the order of
+ preeminence:
+ [1] This file itself, named fpl.txt
+ [2] The contents of the file opl.txt, stating the general
+ licensing policy of the software.
+
+ 2. Precedence of the license parts In case of conflicting dispositions
+ in the parts of this license, the terms of the lower-numbered part
+ will always be superseded by the terms of the higher numbered part.
+
+ 3. Tivano Software GmbH is License Author For the purposes of this
+ License the "License Author" defined in section 1.13 of OPL.html shall
+ be Tivano Software GmbH, 63263 Neu-Isenburg, Germany
+ (http://www.tivano.de)
+
+ 4. Section 11 of the OPL.html:
+
+ 11. MISCELLANEOUS.
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides
+ that the language of a contract shall be construed against the drafter
+ shall not apply to this License.
+
+ 5. Exhibit A
+
+ "The contents of this file are subject to the Flash2XML Public License
+ Version 1.0 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License on
+ the Flash2XML web site (http://www.tivano.de/software/spark/).
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific terms governing rights and limitations
+ under the License.
+
+ The Initial Developer of Flash2XML is Tivano Software GmbH The
+ original Flash2XML and portions created by Tivano Software GmbH are
+ Copyright Tivano Software GmbH. All Rights Reserved.
+
+ Contributor(s): ______________________________________. "
+
+ 6. Exhibit B
+
+ Part of the software embedded in this product is Flash2XML
+
+ Portions created by Tivano are Copyright 2001 Tivano Software GmbH
+ ([29]http://www.tivano.de). All Rights Reserved.
+
+ THE SOFTWARE IN THIS PRODUCT WAS IN PART PROVIDED BY TIVANO AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ 8. Section 1.10 of OPL The following shall be added to section 1.10:
+ "Original Code" shall include, but is not limited to, all the files in
+ the Java package "de.tivano.flash" and its subpackages.
+
+ 9. Section 3.2 of OPL 1.0 As used in section 3.2 of the OPL "Contact
+ Means" shall mean the email address flash2xml@tivano.de
diff --git a/ASF_20_SRC_AUTO/legal/LICENSE.spark.opl b/ASF_20_SRC_AUTO/legal/LICENSE.spark.opl
new file mode 100644
index 0000000..9f43ad0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/LICENSE.spark.opl
@@ -0,0 +1,378 @@
+ OPEN PUBLIC LICENSE
+ Version 1.0
+
+ 1. Definitions.
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the
+ Modifications made by that particular Contributor.
+ 1.3. "Covered Code" means the Original Code or Modifications or
+ the combination of the Original Code and Modifications, in each
+ case including portions thereof.
+ 1.4. "Electronic Distribution Mechanism" means a mechanism
+ generally accepted in the software development community for the
+ electronic transfer of data.
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by
+ Exhibit A.
+ 1.7. "Larger Work" means a work, which combines Covered Code or
+ portions thereof with code not governed by the terms of this
+ License.
+ 1.8. "License" means this document and the corresponding addendum
+ describe in section 6.4 below.
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files,
+ a Modification is:
+
+ A. Any addition to or deletion from the contents of a file containing
+ Original Code or previous Modifications.
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or a list of source
+ code differential comparisons against either the Original Code or
+ another well known, available Covered Code of the Contributor's
+ choice. The Source Code can be in a compressed or archival form,
+ provided the appropriate decompression or de-archiving software is
+ widely available for no charge.
+
+ 1.12. "You" means an individual or a legal entity exercising rights
+ under, and complying with all of the terms of, this License or a
+ future version of this License issued under Section 6.1. For legal
+ entities, "You" includes any entity which controls, is controlled by,
+ or is under common control with You. For purposes of this definition,
+ "control" means (a) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of fifty percent (50%) or more of the
+ outstanding shares or beneficial ownership of such entity.
+
+ 1.13 "License Author" means Lutris Technologies, Inc.
+
+ 2. Source Code License.
+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants
+ You a worldwide, royalty-free, non-exclusive license, subject to
+ third party intellectual property claims:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) to use, reproduce, modify, display, perform, sublicense
+ and distribute the Original Code (or portions thereof) with or
+ without Modifications, or as part of a Larger Work; and
+ (b) under patents now or hereafter owned or controlled by Initial
+ Developer, to make, have made, use and sell ("offer to sell and
+ import") the Original Code (or portions thereof), but solely to
+ the extent that any such patent is reasonably necessary to enable
+ You to Utilize the Original Code (or portions thereof) and not to
+ any greater extent that may be necessary to Utilize further
+ Modifications or combinations.
+
+ 2.2. Contributor Grant. Each Contributor hereby grants You a
+ worldwide, royalty-free, non-exclusive license, subject to third party
+ intellectual property claims:
+
+ (a) under intellectual property rights (other than patent or
+ trademark) to use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such Contributor (or
+ portions thereof) either on an unmodified basis, with other
+ Modifications, as Covered Code or as part of a Larger Work; and
+ (b) under patents now or hereafter owned or controlled by
+ Contributor, to to make, have made, use and sell ("offer to sell
+ and import") the Contributor Version (or portions thereof), but
+ solely to the extent that any such patent is reasonably necessary
+ to enable You to Utilize the Contributor Version (or portions
+ thereof), and not to any greater extent that may be necessary to
+ Utilize further Modifications or combinations.
+
+ 3. Distribution Obligations.
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without
+ limitation Section 2.2. The Source Code version of Covered Code
+ may be distributed only under the terms of this License or a
+ future version of this License released under Section 6.1, and You
+ must include a copy of this License with every copy of the Source
+ Code You distribute. You may not offer or impose any terms on any
+ Source Code version that alters or restricts the applicable
+ version of this License or the recipients' rights hereunder.
+ However, You may include an additional document offering the
+ additional rights described in Section 3.5.
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must
+ be made available, prior to any use, except for internal
+ development and practice, in Source Code form under the terms of
+ this License either on the same media as an Executable version or
+ via an accepted Electronic Distribution Mechanism to anyone to
+ whom you made an Executable version available; and if made
+ available via Electronic Distribution Mechanism, must remain
+ available for at least twelve (12) months after the date it
+ initially became available, or at least six (6) months after a
+ subsequent version of that particular Modification has been made
+ available to such recipients. You shall notify the Initial
+ Developer of the Modification and the location of the Source Code
+ via the contact means provided for in the Developer Specific
+ license. Initial Developer will be acting as maintainer of the
+ Source Code and may provide an Electronic Distribution mechanism
+ for the Modification to be made available.
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which you contribute to contain
+ a file documenting the changes You made to create that Covered
+ Code and the date of any change. You must include a prominent
+ statement that the Modification is derived, directly or
+ indirectly, from Original Code provided by the Initial Developer
+ and including the name of the Initial Developer in (a) the Source
+ Code, and (b) in any notice in an Executable version or related
+ documentation in which You describe the origin or ownership of the
+ Covered Code.
+ 3.4. Intellectual Property Matters
+
+ (a) Third Party Claims.
+ If You have knowledge that a party claims an intellectual property
+ right in particular functionality or code (or its utilization
+ under this License), you must include a text file with the source
+ code distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If you obtain such knowledge after You make
+ Your Modification available as described in Section 3.2, You shall
+ promptly modify the LEGAL file in all copies You make available
+ thereafter and shall take other steps (such as notifying
+ appropriate mailing lists or newsgroups) reasonably calculated to
+ inform those who received the Covered Code that new knowledge has
+ been obtained.
+ (b) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code, and this License in any documentation for the Source Code, where
+ You describe recipients' rights relating to Covered Code. If You
+ created one or more Modification(s), You may add your name as a
+ Contributor to the notice described in Exhibit A. If it is not
+ possible to put such notice in a particular Source Code file due to
+ its structure, then you must include such notice in a location (such
+ as a relevant directory file) where a user would be likely to look for
+ such a notice. You may choose to offer, and to charge a fee for,
+ warranty, support, indemnity or liability obligations to one or more
+ recipients of Covered Code. However, You may do so only on Your own
+ behalf, and not on behalf of the Initial Developer or any Contributor.
+ You must make it absolutely clear that any such warranty, support,
+ indemnity or liability obligation is offered by You alone, and You
+ hereby agree to indemnify the Initial Developer and every Contributor
+ for any liability incurred by the Initial Developer or such
+ Contributor as a result of warranty, support, indemnity or liability
+ terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code under a license of Your choice, which may contain terms different
+ from this License, provided that You are in compliance with the terms
+ of this License and that the license for the Executable version does
+ not attempt to limit or alter the recipient's rights in the Source
+ Code version from the rights set forth in this License. If You
+ distribute the Executable version under a different license You must
+ make it absolutely clear that any terms which differ from this License
+ are offered by You alone, not by the Initial Developer or any
+ Contributor. You hereby agree to indemnify the Initial Developer and
+ every Contributor for any liability incurred by the Initial Developer
+ or such Contributor as a result of any such terms You offer. If you
+ distribute executable versions containing Covered Code, you must
+ reproduce the notice in Exhibit B in the documentation and/or other
+ materials provided with the product.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+ 4. Inability to Comply Due to Statute or Regulation.
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute or regulation then You must: (a) comply with the terms of
+ this License to the maximum extent possible; and (b) Cite all of
+ the statutes or regulations that prohibit you from complying fully
+ with this license. (c) describe the limitations and the code they
+ affect. Such description must be included in the LEGAL file
+ described in Section 3.4 and must be included with all
+ distributions of the Source Code. Except to the extent prohibited
+ by statute or regulation, such description must be sufficiently
+ detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+ 5. Application of this License.
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A, and to related Covered Code.
+
+ 6. Versions of the License.
+ 6.1. New Versions.
+ License Author may publish revised and/or new versions of the
+ License from time to time. Each version will be given a
+ distinguishing version number and shall be submitted to
+ opensource.org for certification.
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of
+ the License, You may always continue to use it under the terms of
+ that version. You may also choose to use such Covered Code under
+ the terms of any subsequent version of the License published by
+ Initial Developer. No one other than Initial Developer has the
+ right to modify the terms applicable to Covered Code created under
+ this License.
+ 6.3. Derivative Works.
+ If you create or use a modified version of this License, except in
+ association with the required Devloper Specific License described
+ in section 6.4, (which you may only do in order to apply it to
+ code which is not already Covered Code governed by this License),
+ you must (a) rename Your license so that the phrases "Open",
+ "OpenPL", "OPL" or any confusingly similar phrase do not appear
+ anywhere in your license and (b) otherwise make it clear that your
+ version of the license contains terms which differ from the Open
+ Public License. (Filling in the name of the Initial Developer,
+ Original Code or Contributor in the notice described in Exhibit A
+ shall not of themselves be deemed to be modifications of this
+ License.)
+ 6.4. Required Additional Developer Specific License
+ This license is a union of the following two parts that should be
+ found as text files in the same place (directory), in the order of
+ preeminence: [1] A Developer specific license. [2] The contents of
+ this file OPL.html, stating the general licensing policy of the
+ software. In case of conflicting dispositions in the parts of this
+ license, the terms of the lower- numbered part will always be
+ superseded by the terms of the higher numbered part.
+
+ 7. DISCLAIMER OF WARRANTY.
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS
+ FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR
+ NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+ OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE
+ DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
+ OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
+ REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS
+ AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+ 8. TERMINATION.
+ 8.1 Termination upon Breach
+ This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to
+ cure such breach within 30 days of becoming aware of the breach.
+ All sublicenses to the Covered Code, which are properly granted,
+ shall survive any termination of this License. Provisions that, by
+ their nature, must remain in effect beyond the termination of this
+ License shall survive.
+ 8.2. Termination Upon Litigation.
+ If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial
+ Developer or a Contributor (the Initial Developer or Contributor
+ against whom You file such action is referred to as "Participant")
+ alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate
+ prospectively, unless if within 60 days after receipt of notice
+ You either: (i) agree in writing to pay Participant a mutually
+ agreeable reasonable royalty for Your past and future use of
+ Modifications made by such Participant, or (ii) withdraw Your
+ litigation claim with respect to the Contributor Version against
+ such Participant. If within 60 days of notice, a reasonable
+ royalty and payment arrangement are not mutually agreed upon in
+ writing by the parties or the litigation claim is not withdrawn,
+ the rights granted by Participant to You under Sections 2.1 and/or
+ 2.2 automatically terminate at the expiration of the 60 day notice
+ period specified above.
+ (b) any software, hardware, or device, other than such
+ Participant's Contributor Version, directly or indirectly
+ infringes any patent, then any rights granted to You by such
+ Participant under Sections 2.1(b) and 2.2(b) are revoked effective
+ as of the date You first made, used, sold, distributed, or had
+ made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all
+ end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+ 9. LIMITATION OF LIABILITY.
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED
+ CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR
+ ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
+ FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
+ LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
+ POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL
+ NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM
+ SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS
+ SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
+ LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT
+ EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+ 10. U.S. GOVERNMENT END USERS.
+ The Covered Code is a "commercial item," as that term is defined in 48
+ C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as
+ such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent
+ with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
+ (June 1995), all U.S. Government End Users acquire Covered Code
+ with only those rights set forth herein.
+
+ 11. MISCELLANEOUS.
+ This section was intentionally left blank. The contents of this
+ section are found in the corresponding addendum described above.
+
+ 12. RESPONSIBILITY FOR CLAIMS.
+ Except in cases where another Contributor has failed to comply with
+ Section 3.4, You are responsible for damages arising, directly or
+ indirectly, out of Your utilization of rights under this License,
+ based on the number of copies of Covered Code you made available,
+ the revenues you received from utilizing such rights, and other
+ relevant factors. You agree to work with affected parties to
+ distribute with Initial Developer responsibility on an equitable
+ basis.
+
+ Exhibit A.
+ Text for this Exhibit A is found in the corresponding addendum,
+ described in section 6.4 above, text file provided by the Initial
+ Developer. This license is not valid or complete with out that
+ file.
+
+ Exhibit B.
+ Text for this Exhibit B is found in the corresponding addendum,
+ described in section 6.4 above, text file provided by the Initial
+ Developer. This license is not valid or complete with out that
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-client-impl-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-client-impl-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-client-impl-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-client-interfaces-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-client-interfaces-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-client-interfaces-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-common-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-common-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-common-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-registry-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-registry-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-registry-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-server-impl-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-server-impl-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-server-impl-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/altrmi-server-interfacesl-0.9.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/altrmi-server-interfacesl-0.9.2.jar.license.txt
new file mode 100644
index 0000000..ab0e22e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/altrmi-server-interfacesl-0.9.2.jar.license.txt
@@ -0,0 +1,54 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software
+ * itself, if and wherever such third-party acknowledgments
+ * normally appear.
+ *
+ * 4. The names "Incubator", "AltRMI", and "Apache Software Foundation"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/ant-junit.jar.license.txt b/ASF_20_SRC_AUTO/legal/ant-junit.jar.license.txt
new file mode 100644
index 0000000..f820d4b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/ant-junit.jar.license.txt
@@ -0,0 +1,203 @@
+/*
+ * Apache License
+ * Version 2.0, January 2004
+ * http://www.apache.org/licenses/
+ *
+ * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ * 1. Definitions.
+ *
+ * "License" shall mean the terms and conditions for use, reproduction,
+ * and distribution as defined by Sections 1 through 9 of this document.
+ *
+ * "Licensor" shall mean the copyright owner or entity authorized by
+ * the copyright owner that is granting the License.
+ *
+ * "Legal Entity" shall mean the union of the acting entity and all
+ * other entities that control, are controlled by, or are under common
+ * control with that entity. For the purposes of this definition,
+ * "control" means (i) the power, direct or indirect, to cause the
+ * direction or management of such entity, whether by contract or
+ * otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ * outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ * "You" (or "Your") shall mean an individual or Legal Entity
+ * exercising permissions granted by this License.
+ *
+ * "Source" form shall mean the preferred form for making modifications,
+ * including but not limited to software source code, documentation
+ * source, and configuration files.
+ *
+ * "Object" form shall mean any form resulting from mechanical
+ * transformation or translation of a Source form, including but
+ * not limited to compiled object code, generated documentation,
+ * and conversions to other media types.
+ *
+ * "Work" shall mean the work of authorship, whether in Source or
+ * Object form, made available under the License, as indicated by a
+ * copyright notice that is included in or attached to the work
+ * (an example is provided in the Appendix below).
+ *
+ * "Derivative Works" shall mean any work, whether in Source or Object
+ * form, that is based on (or derived from) the Work and for which the
+ * editorial revisions, annotations, elaborations, or other modifications
+ * represent, as a whole, an original work of authorship. For the purposes
+ * of this License, Derivative Works shall not include works that remain
+ * separable from, or merely link (or bind by name) to the interfaces of,
+ * the Work and Derivative Works thereof.
+ *
+ * "Contribution" shall mean any work of authorship, including
+ * the original version of the Work and any modifications or additions
+ * to that Work or Derivative Works thereof, that is intentionally
+ * submitted to Licensor for inclusion in the Work by the copyright owner
+ * or by an individual or Legal Entity authorized to submit on behalf of
+ * the copyright owner. For the purposes of this definition, "submitted"
+ * means any form of electronic, verbal, or written communication sent
+ * to the Licensor or its representatives, including but not limited to
+ * communication on electronic mailing lists, source code control systems,
+ * and issue tracking systems that are managed by, or on behalf of, the
+ * Licensor for the purpose of discussing and improving the Work, but
+ * excluding communication that is conspicuously marked or otherwise
+ * designated in writing by the copyright owner as "Not a Contribution."
+ *
+ * "Contributor" shall mean Licensor and any individual or Legal Entity
+ * on behalf of whom a Contribution has been received by Licensor and
+ * subsequently incorporated within the Work.
+ *
+ * 2. Grant of Copyright License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * copyright license to reproduce, prepare Derivative Works of,
+ * publicly display, publicly perform, sublicense, and distribute the
+ * Work and such Derivative Works in Source or Object form.
+ *
+ * 3. Grant of Patent License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * (except as stated in this section) patent license to make, have made,
+ * use, offer to sell, sell, import, and otherwise transfer the Work,
+ * where such license applies only to those patent claims licensable
+ * by such Contributor that are necessarily infringed by their
+ * Contribution(s) alone or by combination of their Contribution(s)
+ * with the Work to which such Contribution(s) was submitted. If You
+ * institute patent litigation against any entity (including a
+ * cross-claim or counterclaim in a lawsuit) alleging that the Work
+ * or a Contribution incorporated within the Work constitutes direct
+ * or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate
+ * as of the date such litigation is filed.
+ *
+ * 4. Redistribution. You may reproduce and distribute copies of the
+ * Work or Derivative Works thereof in any medium, with or without
+ * modifications, and in Source or Object form, provided that You
+ * meet the following conditions:
+ *
+ * (a) You must give any other recipients of the Work or
+ * Derivative Works a copy of this License; and
+ *
+ * (b) You must cause any modified files to carry prominent notices
+ * stating that You changed the files; and
+ *
+ * (c) You must retain, in the Source form of any Derivative Works
+ * that You distribute, all copyright, patent, trademark, and
+ * attribution notices from the Source form of the Work,
+ * excluding those notices that do not pertain to any part of
+ * the Derivative Works; and
+ *
+ * (d) If the Work includes a "NOTICE" text file as part of its
+ * distribution, then any Derivative Works that You distribute must
+ * include a readable copy of the attribution notices contained
+ * within such NOTICE file, excluding those notices that do not
+ * pertain to any part of the Derivative Works, in at least one
+ * of the following places: within a NOTICE text file distributed
+ * as part of the Derivative Works; within the Source form or
+ * documentation, if provided along with the Derivative Works; or,
+ * within a display generated by the Derivative Works, if and
+ * wherever such third-party notices normally appear. The contents
+ * of the NOTICE file are for informational purposes only and
+ * do not modify the License. You may add Your own attribution
+ * notices within Derivative Works that You distribute, alongside
+ * or as an addendum to the NOTICE text from the Work, provided
+ * that such additional attribution notices cannot be construed
+ * as modifying the License.
+ *
+ * You may add Your own copyright statement to Your modifications and
+ * may provide additional or different license terms and conditions
+ * for use, reproduction, or distribution of Your modifications, or
+ * for any such Derivative Works as a whole, provided Your use,
+ * reproduction, and distribution of the Work otherwise complies with
+ * the conditions stated in this License.
+ *
+ * 5. Submission of Contributions. Unless You explicitly state otherwise,
+ * any Contribution intentionally submitted for inclusion in the Work
+ * by You to the Licensor shall be under the terms and conditions of
+ * this License, without any additional terms or conditions.
+ * Notwithstanding the above, nothing herein shall supersede or modify
+ * the terms of any separate license agreement you may have executed
+ * with Licensor regarding such Contributions.
+ *
+ * 6. Trademarks. This License does not grant permission to use the trade
+ * names, trademarks, service marks, or product names of the Licensor,
+ * except as required for reasonable and customary use in describing the
+ * origin of the Work and reproducing the content of the NOTICE file.
+ *
+ * 7. Disclaimer of Warranty. Unless required by applicable law or
+ * agreed to in writing, Licensor provides the Work (and each
+ * Contributor provides its Contributions) on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied, including, without limitation, any warranties or conditions
+ * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ * PARTICULAR PURPOSE. You are solely responsible for determining the
+ * appropriateness of using or redistributing the Work and assume any
+ * risks associated with Your exercise of permissions under this License.
+ *
+ * 8. Limitation of Liability. In no event and under no legal theory,
+ * whether in tort (including negligence), contract, or otherwise,
+ * unless required by applicable law (such as deliberate and grossly
+ * negligent acts) or agreed to in writing, shall any Contributor be
+ * liable to You for damages, including any direct, indirect, special,
+ * incidental, or consequential damages of any character arising as a
+ * result of this License or out of the use or inability to use the
+ * Work (including but not limited to damages for loss of goodwill,
+ * work stoppage, computer failure or malfunction, or any and all
+ * other commercial damages or losses), even if such Contributor
+ * has been advised of the possibility of such damages.
+ *
+ * 9. Accepting Warranty or Additional Liability. While redistributing
+ * the Work or Derivative Works thereof, You may choose to offer,
+ * and charge a fee for, acceptance of support, warranty, indemnity,
+ * or other liability obligations and/or rights consistent with this
+ * License. However, in accepting such obligations, You may act only
+ * on Your own behalf and on Your sole responsibility, not on behalf
+ * of any other Contributor, and only if You agree to indemnify,
+ * defend, and hold each Contributor harmless for any liability
+ * incurred by, or claims asserted against, such Contributor by reason
+ * of your accepting any such warranty or additional liability.
+ *
+ * END OF TERMS AND CONDITIONS
+ *
+ * APPENDIX: How to apply the Apache License to your work.
+ *
+ * To apply the Apache License to your work, attach the following
+ * boilerplate notice, with the fields enclosed by brackets "[]"
+ * replaced with your own identifying information. (Don't include
+ * the brackets!) The text should be enclosed in the appropriate
+ * comment syntax for the file format. We also recommend that a
+ * file or class name and description of purpose be included on the
+ * same "printed page" as the copyright notice for easier
+ * identification within third-party archives.
+ *
+ * Copyright [yyyy] [name of copyright owner]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/ant-launcher.jar.license.txt b/ASF_20_SRC_AUTO/legal/ant-launcher.jar.license.txt
new file mode 100644
index 0000000..f820d4b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/ant-launcher.jar.license.txt
@@ -0,0 +1,203 @@
+/*
+ * Apache License
+ * Version 2.0, January 2004
+ * http://www.apache.org/licenses/
+ *
+ * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ * 1. Definitions.
+ *
+ * "License" shall mean the terms and conditions for use, reproduction,
+ * and distribution as defined by Sections 1 through 9 of this document.
+ *
+ * "Licensor" shall mean the copyright owner or entity authorized by
+ * the copyright owner that is granting the License.
+ *
+ * "Legal Entity" shall mean the union of the acting entity and all
+ * other entities that control, are controlled by, or are under common
+ * control with that entity. For the purposes of this definition,
+ * "control" means (i) the power, direct or indirect, to cause the
+ * direction or management of such entity, whether by contract or
+ * otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ * outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ * "You" (or "Your") shall mean an individual or Legal Entity
+ * exercising permissions granted by this License.
+ *
+ * "Source" form shall mean the preferred form for making modifications,
+ * including but not limited to software source code, documentation
+ * source, and configuration files.
+ *
+ * "Object" form shall mean any form resulting from mechanical
+ * transformation or translation of a Source form, including but
+ * not limited to compiled object code, generated documentation,
+ * and conversions to other media types.
+ *
+ * "Work" shall mean the work of authorship, whether in Source or
+ * Object form, made available under the License, as indicated by a
+ * copyright notice that is included in or attached to the work
+ * (an example is provided in the Appendix below).
+ *
+ * "Derivative Works" shall mean any work, whether in Source or Object
+ * form, that is based on (or derived from) the Work and for which the
+ * editorial revisions, annotations, elaborations, or other modifications
+ * represent, as a whole, an original work of authorship. For the purposes
+ * of this License, Derivative Works shall not include works that remain
+ * separable from, or merely link (or bind by name) to the interfaces of,
+ * the Work and Derivative Works thereof.
+ *
+ * "Contribution" shall mean any work of authorship, including
+ * the original version of the Work and any modifications or additions
+ * to that Work or Derivative Works thereof, that is intentionally
+ * submitted to Licensor for inclusion in the Work by the copyright owner
+ * or by an individual or Legal Entity authorized to submit on behalf of
+ * the copyright owner. For the purposes of this definition, "submitted"
+ * means any form of electronic, verbal, or written communication sent
+ * to the Licensor or its representatives, including but not limited to
+ * communication on electronic mailing lists, source code control systems,
+ * and issue tracking systems that are managed by, or on behalf of, the
+ * Licensor for the purpose of discussing and improving the Work, but
+ * excluding communication that is conspicuously marked or otherwise
+ * designated in writing by the copyright owner as "Not a Contribution."
+ *
+ * "Contributor" shall mean Licensor and any individual or Legal Entity
+ * on behalf of whom a Contribution has been received by Licensor and
+ * subsequently incorporated within the Work.
+ *
+ * 2. Grant of Copyright License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * copyright license to reproduce, prepare Derivative Works of,
+ * publicly display, publicly perform, sublicense, and distribute the
+ * Work and such Derivative Works in Source or Object form.
+ *
+ * 3. Grant of Patent License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * (except as stated in this section) patent license to make, have made,
+ * use, offer to sell, sell, import, and otherwise transfer the Work,
+ * where such license applies only to those patent claims licensable
+ * by such Contributor that are necessarily infringed by their
+ * Contribution(s) alone or by combination of their Contribution(s)
+ * with the Work to which such Contribution(s) was submitted. If You
+ * institute patent litigation against any entity (including a
+ * cross-claim or counterclaim in a lawsuit) alleging that the Work
+ * or a Contribution incorporated within the Work constitutes direct
+ * or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate
+ * as of the date such litigation is filed.
+ *
+ * 4. Redistribution. You may reproduce and distribute copies of the
+ * Work or Derivative Works thereof in any medium, with or without
+ * modifications, and in Source or Object form, provided that You
+ * meet the following conditions:
+ *
+ * (a) You must give any other recipients of the Work or
+ * Derivative Works a copy of this License; and
+ *
+ * (b) You must cause any modified files to carry prominent notices
+ * stating that You changed the files; and
+ *
+ * (c) You must retain, in the Source form of any Derivative Works
+ * that You distribute, all copyright, patent, trademark, and
+ * attribution notices from the Source form of the Work,
+ * excluding those notices that do not pertain to any part of
+ * the Derivative Works; and
+ *
+ * (d) If the Work includes a "NOTICE" text file as part of its
+ * distribution, then any Derivative Works that You distribute must
+ * include a readable copy of the attribution notices contained
+ * within such NOTICE file, excluding those notices that do not
+ * pertain to any part of the Derivative Works, in at least one
+ * of the following places: within a NOTICE text file distributed
+ * as part of the Derivative Works; within the Source form or
+ * documentation, if provided along with the Derivative Works; or,
+ * within a display generated by the Derivative Works, if and
+ * wherever such third-party notices normally appear. The contents
+ * of the NOTICE file are for informational purposes only and
+ * do not modify the License. You may add Your own attribution
+ * notices within Derivative Works that You distribute, alongside
+ * or as an addendum to the NOTICE text from the Work, provided
+ * that such additional attribution notices cannot be construed
+ * as modifying the License.
+ *
+ * You may add Your own copyright statement to Your modifications and
+ * may provide additional or different license terms and conditions
+ * for use, reproduction, or distribution of Your modifications, or
+ * for any such Derivative Works as a whole, provided Your use,
+ * reproduction, and distribution of the Work otherwise complies with
+ * the conditions stated in this License.
+ *
+ * 5. Submission of Contributions. Unless You explicitly state otherwise,
+ * any Contribution intentionally submitted for inclusion in the Work
+ * by You to the Licensor shall be under the terms and conditions of
+ * this License, without any additional terms or conditions.
+ * Notwithstanding the above, nothing herein shall supersede or modify
+ * the terms of any separate license agreement you may have executed
+ * with Licensor regarding such Contributions.
+ *
+ * 6. Trademarks. This License does not grant permission to use the trade
+ * names, trademarks, service marks, or product names of the Licensor,
+ * except as required for reasonable and customary use in describing the
+ * origin of the Work and reproducing the content of the NOTICE file.
+ *
+ * 7. Disclaimer of Warranty. Unless required by applicable law or
+ * agreed to in writing, Licensor provides the Work (and each
+ * Contributor provides its Contributions) on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied, including, without limitation, any warranties or conditions
+ * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ * PARTICULAR PURPOSE. You are solely responsible for determining the
+ * appropriateness of using or redistributing the Work and assume any
+ * risks associated with Your exercise of permissions under this License.
+ *
+ * 8. Limitation of Liability. In no event and under no legal theory,
+ * whether in tort (including negligence), contract, or otherwise,
+ * unless required by applicable law (such as deliberate and grossly
+ * negligent acts) or agreed to in writing, shall any Contributor be
+ * liable to You for damages, including any direct, indirect, special,
+ * incidental, or consequential damages of any character arising as a
+ * result of this License or out of the use or inability to use the
+ * Work (including but not limited to damages for loss of goodwill,
+ * work stoppage, computer failure or malfunction, or any and all
+ * other commercial damages or losses), even if such Contributor
+ * has been advised of the possibility of such damages.
+ *
+ * 9. Accepting Warranty or Additional Liability. While redistributing
+ * the Work or Derivative Works thereof, You may choose to offer,
+ * and charge a fee for, acceptance of support, warranty, indemnity,
+ * or other liability obligations and/or rights consistent with this
+ * License. However, in accepting such obligations, You may act only
+ * on Your own behalf and on Your sole responsibility, not on behalf
+ * of any other Contributor, and only if You agree to indemnify,
+ * defend, and hold each Contributor harmless for any liability
+ * incurred by, or claims asserted against, such Contributor by reason
+ * of your accepting any such warranty or additional liability.
+ *
+ * END OF TERMS AND CONDITIONS
+ *
+ * APPENDIX: How to apply the Apache License to your work.
+ *
+ * To apply the Apache License to your work, attach the following
+ * boilerplate notice, with the fields enclosed by brackets "[]"
+ * replaced with your own identifying information. (Don't include
+ * the brackets!) The text should be enclosed in the appropriate
+ * comment syntax for the file format. We also recommend that a
+ * file or class name and description of purpose be included on the
+ * same "printed page" as the copyright notice for easier
+ * identification within third-party archives.
+ *
+ * Copyright [yyyy] [name of copyright owner]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/ant-trax.jar.license.txt b/ASF_20_SRC_AUTO/legal/ant-trax.jar.license.txt
new file mode 100644
index 0000000..f820d4b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/ant-trax.jar.license.txt
@@ -0,0 +1,203 @@
+/*
+ * Apache License
+ * Version 2.0, January 2004
+ * http://www.apache.org/licenses/
+ *
+ * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ * 1. Definitions.
+ *
+ * "License" shall mean the terms and conditions for use, reproduction,
+ * and distribution as defined by Sections 1 through 9 of this document.
+ *
+ * "Licensor" shall mean the copyright owner or entity authorized by
+ * the copyright owner that is granting the License.
+ *
+ * "Legal Entity" shall mean the union of the acting entity and all
+ * other entities that control, are controlled by, or are under common
+ * control with that entity. For the purposes of this definition,
+ * "control" means (i) the power, direct or indirect, to cause the
+ * direction or management of such entity, whether by contract or
+ * otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ * outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ * "You" (or "Your") shall mean an individual or Legal Entity
+ * exercising permissions granted by this License.
+ *
+ * "Source" form shall mean the preferred form for making modifications,
+ * including but not limited to software source code, documentation
+ * source, and configuration files.
+ *
+ * "Object" form shall mean any form resulting from mechanical
+ * transformation or translation of a Source form, including but
+ * not limited to compiled object code, generated documentation,
+ * and conversions to other media types.
+ *
+ * "Work" shall mean the work of authorship, whether in Source or
+ * Object form, made available under the License, as indicated by a
+ * copyright notice that is included in or attached to the work
+ * (an example is provided in the Appendix below).
+ *
+ * "Derivative Works" shall mean any work, whether in Source or Object
+ * form, that is based on (or derived from) the Work and for which the
+ * editorial revisions, annotations, elaborations, or other modifications
+ * represent, as a whole, an original work of authorship. For the purposes
+ * of this License, Derivative Works shall not include works that remain
+ * separable from, or merely link (or bind by name) to the interfaces of,
+ * the Work and Derivative Works thereof.
+ *
+ * "Contribution" shall mean any work of authorship, including
+ * the original version of the Work and any modifications or additions
+ * to that Work or Derivative Works thereof, that is intentionally
+ * submitted to Licensor for inclusion in the Work by the copyright owner
+ * or by an individual or Legal Entity authorized to submit on behalf of
+ * the copyright owner. For the purposes of this definition, "submitted"
+ * means any form of electronic, verbal, or written communication sent
+ * to the Licensor or its representatives, including but not limited to
+ * communication on electronic mailing lists, source code control systems,
+ * and issue tracking systems that are managed by, or on behalf of, the
+ * Licensor for the purpose of discussing and improving the Work, but
+ * excluding communication that is conspicuously marked or otherwise
+ * designated in writing by the copyright owner as "Not a Contribution."
+ *
+ * "Contributor" shall mean Licensor and any individual or Legal Entity
+ * on behalf of whom a Contribution has been received by Licensor and
+ * subsequently incorporated within the Work.
+ *
+ * 2. Grant of Copyright License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * copyright license to reproduce, prepare Derivative Works of,
+ * publicly display, publicly perform, sublicense, and distribute the
+ * Work and such Derivative Works in Source or Object form.
+ *
+ * 3. Grant of Patent License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * (except as stated in this section) patent license to make, have made,
+ * use, offer to sell, sell, import, and otherwise transfer the Work,
+ * where such license applies only to those patent claims licensable
+ * by such Contributor that are necessarily infringed by their
+ * Contribution(s) alone or by combination of their Contribution(s)
+ * with the Work to which such Contribution(s) was submitted. If You
+ * institute patent litigation against any entity (including a
+ * cross-claim or counterclaim in a lawsuit) alleging that the Work
+ * or a Contribution incorporated within the Work constitutes direct
+ * or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate
+ * as of the date such litigation is filed.
+ *
+ * 4. Redistribution. You may reproduce and distribute copies of the
+ * Work or Derivative Works thereof in any medium, with or without
+ * modifications, and in Source or Object form, provided that You
+ * meet the following conditions:
+ *
+ * (a) You must give any other recipients of the Work or
+ * Derivative Works a copy of this License; and
+ *
+ * (b) You must cause any modified files to carry prominent notices
+ * stating that You changed the files; and
+ *
+ * (c) You must retain, in the Source form of any Derivative Works
+ * that You distribute, all copyright, patent, trademark, and
+ * attribution notices from the Source form of the Work,
+ * excluding those notices that do not pertain to any part of
+ * the Derivative Works; and
+ *
+ * (d) If the Work includes a "NOTICE" text file as part of its
+ * distribution, then any Derivative Works that You distribute must
+ * include a readable copy of the attribution notices contained
+ * within such NOTICE file, excluding those notices that do not
+ * pertain to any part of the Derivative Works, in at least one
+ * of the following places: within a NOTICE text file distributed
+ * as part of the Derivative Works; within the Source form or
+ * documentation, if provided along with the Derivative Works; or,
+ * within a display generated by the Derivative Works, if and
+ * wherever such third-party notices normally appear. The contents
+ * of the NOTICE file are for informational purposes only and
+ * do not modify the License. You may add Your own attribution
+ * notices within Derivative Works that You distribute, alongside
+ * or as an addendum to the NOTICE text from the Work, provided
+ * that such additional attribution notices cannot be construed
+ * as modifying the License.
+ *
+ * You may add Your own copyright statement to Your modifications and
+ * may provide additional or different license terms and conditions
+ * for use, reproduction, or distribution of Your modifications, or
+ * for any such Derivative Works as a whole, provided Your use,
+ * reproduction, and distribution of the Work otherwise complies with
+ * the conditions stated in this License.
+ *
+ * 5. Submission of Contributions. Unless You explicitly state otherwise,
+ * any Contribution intentionally submitted for inclusion in the Work
+ * by You to the Licensor shall be under the terms and conditions of
+ * this License, without any additional terms or conditions.
+ * Notwithstanding the above, nothing herein shall supersede or modify
+ * the terms of any separate license agreement you may have executed
+ * with Licensor regarding such Contributions.
+ *
+ * 6. Trademarks. This License does not grant permission to use the trade
+ * names, trademarks, service marks, or product names of the Licensor,
+ * except as required for reasonable and customary use in describing the
+ * origin of the Work and reproducing the content of the NOTICE file.
+ *
+ * 7. Disclaimer of Warranty. Unless required by applicable law or
+ * agreed to in writing, Licensor provides the Work (and each
+ * Contributor provides its Contributions) on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied, including, without limitation, any warranties or conditions
+ * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ * PARTICULAR PURPOSE. You are solely responsible for determining the
+ * appropriateness of using or redistributing the Work and assume any
+ * risks associated with Your exercise of permissions under this License.
+ *
+ * 8. Limitation of Liability. In no event and under no legal theory,
+ * whether in tort (including negligence), contract, or otherwise,
+ * unless required by applicable law (such as deliberate and grossly
+ * negligent acts) or agreed to in writing, shall any Contributor be
+ * liable to You for damages, including any direct, indirect, special,
+ * incidental, or consequential damages of any character arising as a
+ * result of this License or out of the use or inability to use the
+ * Work (including but not limited to damages for loss of goodwill,
+ * work stoppage, computer failure or malfunction, or any and all
+ * other commercial damages or losses), even if such Contributor
+ * has been advised of the possibility of such damages.
+ *
+ * 9. Accepting Warranty or Additional Liability. While redistributing
+ * the Work or Derivative Works thereof, You may choose to offer,
+ * and charge a fee for, acceptance of support, warranty, indemnity,
+ * or other liability obligations and/or rights consistent with this
+ * License. However, in accepting such obligations, You may act only
+ * on Your own behalf and on Your sole responsibility, not on behalf
+ * of any other Contributor, and only if You agree to indemnify,
+ * defend, and hold each Contributor harmless for any liability
+ * incurred by, or claims asserted against, such Contributor by reason
+ * of your accepting any such warranty or additional liability.
+ *
+ * END OF TERMS AND CONDITIONS
+ *
+ * APPENDIX: How to apply the Apache License to your work.
+ *
+ * To apply the Apache License to your work, attach the following
+ * boilerplate notice, with the fields enclosed by brackets "[]"
+ * replaced with your own identifying information. (Don't include
+ * the brackets!) The text should be enclosed in the appropriate
+ * comment syntax for the file format. We also recommend that a
+ * file or class name and description of purpose be included on the
+ * same "printed page" as the copyright notice for easier
+ * identification within third-party archives.
+ *
+ * Copyright [yyyy] [name of copyright owner]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/ant.jar.license.txt b/ASF_20_SRC_AUTO/legal/ant.jar.license.txt
new file mode 100644
index 0000000..f820d4b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/ant.jar.license.txt
@@ -0,0 +1,203 @@
+/*
+ * Apache License
+ * Version 2.0, January 2004
+ * http://www.apache.org/licenses/
+ *
+ * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ * 1. Definitions.
+ *
+ * "License" shall mean the terms and conditions for use, reproduction,
+ * and distribution as defined by Sections 1 through 9 of this document.
+ *
+ * "Licensor" shall mean the copyright owner or entity authorized by
+ * the copyright owner that is granting the License.
+ *
+ * "Legal Entity" shall mean the union of the acting entity and all
+ * other entities that control, are controlled by, or are under common
+ * control with that entity. For the purposes of this definition,
+ * "control" means (i) the power, direct or indirect, to cause the
+ * direction or management of such entity, whether by contract or
+ * otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ * outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ * "You" (or "Your") shall mean an individual or Legal Entity
+ * exercising permissions granted by this License.
+ *
+ * "Source" form shall mean the preferred form for making modifications,
+ * including but not limited to software source code, documentation
+ * source, and configuration files.
+ *
+ * "Object" form shall mean any form resulting from mechanical
+ * transformation or translation of a Source form, including but
+ * not limited to compiled object code, generated documentation,
+ * and conversions to other media types.
+ *
+ * "Work" shall mean the work of authorship, whether in Source or
+ * Object form, made available under the License, as indicated by a
+ * copyright notice that is included in or attached to the work
+ * (an example is provided in the Appendix below).
+ *
+ * "Derivative Works" shall mean any work, whether in Source or Object
+ * form, that is based on (or derived from) the Work and for which the
+ * editorial revisions, annotations, elaborations, or other modifications
+ * represent, as a whole, an original work of authorship. For the purposes
+ * of this License, Derivative Works shall not include works that remain
+ * separable from, or merely link (or bind by name) to the interfaces of,
+ * the Work and Derivative Works thereof.
+ *
+ * "Contribution" shall mean any work of authorship, including
+ * the original version of the Work and any modifications or additions
+ * to that Work or Derivative Works thereof, that is intentionally
+ * submitted to Licensor for inclusion in the Work by the copyright owner
+ * or by an individual or Legal Entity authorized to submit on behalf of
+ * the copyright owner. For the purposes of this definition, "submitted"
+ * means any form of electronic, verbal, or written communication sent
+ * to the Licensor or its representatives, including but not limited to
+ * communication on electronic mailing lists, source code control systems,
+ * and issue tracking systems that are managed by, or on behalf of, the
+ * Licensor for the purpose of discussing and improving the Work, but
+ * excluding communication that is conspicuously marked or otherwise
+ * designated in writing by the copyright owner as "Not a Contribution."
+ *
+ * "Contributor" shall mean Licensor and any individual or Legal Entity
+ * on behalf of whom a Contribution has been received by Licensor and
+ * subsequently incorporated within the Work.
+ *
+ * 2. Grant of Copyright License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * copyright license to reproduce, prepare Derivative Works of,
+ * publicly display, publicly perform, sublicense, and distribute the
+ * Work and such Derivative Works in Source or Object form.
+ *
+ * 3. Grant of Patent License. Subject to the terms and conditions of
+ * this License, each Contributor hereby grants to You a perpetual,
+ * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ * (except as stated in this section) patent license to make, have made,
+ * use, offer to sell, sell, import, and otherwise transfer the Work,
+ * where such license applies only to those patent claims licensable
+ * by such Contributor that are necessarily infringed by their
+ * Contribution(s) alone or by combination of their Contribution(s)
+ * with the Work to which such Contribution(s) was submitted. If You
+ * institute patent litigation against any entity (including a
+ * cross-claim or counterclaim in a lawsuit) alleging that the Work
+ * or a Contribution incorporated within the Work constitutes direct
+ * or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate
+ * as of the date such litigation is filed.
+ *
+ * 4. Redistribution. You may reproduce and distribute copies of the
+ * Work or Derivative Works thereof in any medium, with or without
+ * modifications, and in Source or Object form, provided that You
+ * meet the following conditions:
+ *
+ * (a) You must give any other recipients of the Work or
+ * Derivative Works a copy of this License; and
+ *
+ * (b) You must cause any modified files to carry prominent notices
+ * stating that You changed the files; and
+ *
+ * (c) You must retain, in the Source form of any Derivative Works
+ * that You distribute, all copyright, patent, trademark, and
+ * attribution notices from the Source form of the Work,
+ * excluding those notices that do not pertain to any part of
+ * the Derivative Works; and
+ *
+ * (d) If the Work includes a "NOTICE" text file as part of its
+ * distribution, then any Derivative Works that You distribute must
+ * include a readable copy of the attribution notices contained
+ * within such NOTICE file, excluding those notices that do not
+ * pertain to any part of the Derivative Works, in at least one
+ * of the following places: within a NOTICE text file distributed
+ * as part of the Derivative Works; within the Source form or
+ * documentation, if provided along with the Derivative Works; or,
+ * within a display generated by the Derivative Works, if and
+ * wherever such third-party notices normally appear. The contents
+ * of the NOTICE file are for informational purposes only and
+ * do not modify the License. You may add Your own attribution
+ * notices within Derivative Works that You distribute, alongside
+ * or as an addendum to the NOTICE text from the Work, provided
+ * that such additional attribution notices cannot be construed
+ * as modifying the License.
+ *
+ * You may add Your own copyright statement to Your modifications and
+ * may provide additional or different license terms and conditions
+ * for use, reproduction, or distribution of Your modifications, or
+ * for any such Derivative Works as a whole, provided Your use,
+ * reproduction, and distribution of the Work otherwise complies with
+ * the conditions stated in this License.
+ *
+ * 5. Submission of Contributions. Unless You explicitly state otherwise,
+ * any Contribution intentionally submitted for inclusion in the Work
+ * by You to the Licensor shall be under the terms and conditions of
+ * this License, without any additional terms or conditions.
+ * Notwithstanding the above, nothing herein shall supersede or modify
+ * the terms of any separate license agreement you may have executed
+ * with Licensor regarding such Contributions.
+ *
+ * 6. Trademarks. This License does not grant permission to use the trade
+ * names, trademarks, service marks, or product names of the Licensor,
+ * except as required for reasonable and customary use in describing the
+ * origin of the Work and reproducing the content of the NOTICE file.
+ *
+ * 7. Disclaimer of Warranty. Unless required by applicable law or
+ * agreed to in writing, Licensor provides the Work (and each
+ * Contributor provides its Contributions) on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied, including, without limitation, any warranties or conditions
+ * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ * PARTICULAR PURPOSE. You are solely responsible for determining the
+ * appropriateness of using or redistributing the Work and assume any
+ * risks associated with Your exercise of permissions under this License.
+ *
+ * 8. Limitation of Liability. In no event and under no legal theory,
+ * whether in tort (including negligence), contract, or otherwise,
+ * unless required by applicable law (such as deliberate and grossly
+ * negligent acts) or agreed to in writing, shall any Contributor be
+ * liable to You for damages, including any direct, indirect, special,
+ * incidental, or consequential damages of any character arising as a
+ * result of this License or out of the use or inability to use the
+ * Work (including but not limited to damages for loss of goodwill,
+ * work stoppage, computer failure or malfunction, or any and all
+ * other commercial damages or losses), even if such Contributor
+ * has been advised of the possibility of such damages.
+ *
+ * 9. Accepting Warranty or Additional Liability. While redistributing
+ * the Work or Derivative Works thereof, You may choose to offer,
+ * and charge a fee for, acceptance of support, warranty, indemnity,
+ * or other liability obligations and/or rights consistent with this
+ * License. However, in accepting such obligations, You may act only
+ * on Your own behalf and on Your sole responsibility, not on behalf
+ * of any other Contributor, and only if You agree to indemnify,
+ * defend, and hold each Contributor harmless for any liability
+ * incurred by, or claims asserted against, such Contributor by reason
+ * of your accepting any such warranty or additional liability.
+ *
+ * END OF TERMS AND CONDITIONS
+ *
+ * APPENDIX: How to apply the Apache License to your work.
+ *
+ * To apply the Apache License to your work, attach the following
+ * boilerplate notice, with the fields enclosed by brackets "[]"
+ * replaced with your own identifying information. (Don't include
+ * the brackets!) The text should be enclosed in the appropriate
+ * comment syntax for the file format. We also recommend that a
+ * file or class name and description of purpose be included on the
+ * same "printed page" as the copyright notice for easier
+ * identification within third-party archives.
+ *
+ * Copyright [yyyy] [name of copyright owner]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/antlr-2.7.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/antlr-2.7.2.jar.license.txt
new file mode 100644
index 0000000..58df7b0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/antlr-2.7.2.jar.license.txt
@@ -0,0 +1,19 @@
+From: http://www.antlr.org/license.html
+Date: 26-09-2003
+
+
+We reserve no legal rights to the ANTLR--it is fully in the public domain.
+An individual or company may do whatever they wish with source code
+distributed with ANTLR or the code generated by ANTLR, including the
+incorporation of ANTLR, or its output, into commerical software.
+
+We encourage users to develop software with ANTLR. However, we do ask that
+credit is given to us for developing ANTLR. By "credit", we mean that if you
+use ANTLR or incorporate any source code into one of your programs (commercial
+product, research project, or otherwise) that you acknowledge this fact
+somewhere in the documentation, research report, etc... If you like ANTLR and
+have developed a nice tool with the output, please mention that you developed
+it using ANTLR. In addition, we ask that the headers remain intact in our
+source code. As long as these guidelines are kept, we expect to continue
+enhancing this system and expect to make other tools available as they are
+completed.
diff --git a/ASF_20_SRC_AUTO/legal/avalon-framework-api-4.1.5.jar.license.txt b/ASF_20_SRC_AUTO/legal/avalon-framework-api-4.1.5.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/avalon-framework-api-4.1.5.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/avalon-framework-impl-4.1.5.jar.license.txt b/ASF_20_SRC_AUTO/legal/avalon-framework-impl-4.1.5.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/avalon-framework-impl-4.1.5.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/axis-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/axis-1.1.jar.license.txt
new file mode 100644
index 0000000..92c9adc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/axis-1.1.jar.license.txt
@@ -0,0 +1,54 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Axis" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/axis-jaxrpc-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/axis-jaxrpc-1.1.jar.license.txt
new file mode 100644
index 0000000..92c9adc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/axis-jaxrpc-1.1.jar.license.txt
@@ -0,0 +1,54 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Axis" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/axis-saaj-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/axis-saaj-1.1.jar.license.txt
new file mode 100644
index 0000000..92c9adc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/axis-saaj-1.1.jar.license.txt
@@ -0,0 +1,54 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Axis" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/batik-all-1.5.jar.license.txt b/ASF_20_SRC_AUTO/legal/batik-all-1.5.jar.license.txt
new file mode 100644
index 0000000..6480f2a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/batik-all-1.5.jar.license.txt
@@ -0,0 +1,45 @@
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2000 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Batik" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation. For more information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
diff --git a/ASF_20_SRC_AUTO/legal/bsf-2.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/bsf-2.2.jar.license.txt
new file mode 100644
index 0000000..81dd71a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/bsf-2.2.jar.license.txt
@@ -0,0 +1,229 @@
+IBM PUBLIC LICENSE VERSION 1.0 - BEAN SCRIPTING FRAMEWORK
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a. in the case of International Business Machines Corporation ("IBM"), the Original Program, and
+
+ b. in the case of each Contributor,
+
+ i. changes to the Program, and
+
+ ii. additions to the Program;
+
+ where such changes and/or additions to the Program originate from and
+ are distributed by that particular Contributor. A Contribution
+ 'originates' from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's
+ behalf. Contributions do not include additions to the Program which:
+ (i) are separate modules of software distributed in conjunction with
+ the Program under their own license agreement, and (ii) are not
+ derivative works of the Program.
+
+"Contributor" means IBM and any other entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.
+
+"Original Program" means the original version of the software
+accompanying this Agreement as released by IBM, including source
+code, object code and documentation, if any.
+
+"Program" means the Original Program and Contributions.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+ a. Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare derivative works of, publicly display,
+ publicly perform, distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works, in source code and
+ object code form.
+ b. Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in source code and object code form. This patent license
+ shall apply to the combination of the Contribution and the Program
+ if, at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered by
+ the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ c. Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby assumes
+ sole responsibility to secure any other intellectual property rights
+ needed, if any. For example, if a third party patent license is
+ required to allow Recipient to distribute the Program, it is
+ Recipient's responsibility to acquire that license before
+ distributing the Program.
+ d. Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant the
+ copyright license set forth in this Agreement.
+
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute
+the Program in object code form under its own license agreement,
+provided that:
+
+ a. it complies with the terms and conditions of this Agreement; and
+ its license agreement:
+ i. effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or
+ conditions of title and non-infringement, and implied warranties or
+ conditions of merchantability and fitness for a particular purpose;
+ ii. effectively excludes on behalf of all Contributors all liability
+ for damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits;
+ iii. states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party; and
+ iv. states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+ a. it must be made available under this Agreement; and
+ b. a copy of this Agreement must be included with each copy of the
+ Program.
+
+Each Contributor must include the following in a conspicuous location in the Program:
+
+ Copyright (C) 1996, 1999 International Business Machines Corporation and others. All Rights Reserved.
+
+In addition, each Contributor must identify itself as the originator
+of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial
+use of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with
+its distribution of the Program in a commercial product offering.
+The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b)
+allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any
+such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's
+responsibility alone. Under this section, the Commercial Contributor
+would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any
+other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement, including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with
+respect to a patent applicable to software (including a cross-claim
+or counterclaim in a lawsuit), then any patent licenses granted by
+that Contributor to such Recipient under this Agreement shall
+terminate as of the date such litigation is filed. In addition, if
+Recipient institutes patent litigation against any entity (including
+a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any
+licenses granted by Recipient relating to the Program shall continue
+and survive.
+
+IBM may publish new versions (including revisions) of this Agreement
+from time to time. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions)
+may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. No one
+other than IBM has the right to modify this Agreement. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor
+under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each
+party waives its rights to a jury trial in any resulting litigation.
diff --git a/ASF_20_SRC_AUTO/legal/castor-0.9.5-xml.jar.license.txt b/ASF_20_SRC_AUTO/legal/castor-0.9.5-xml.jar.license.txt
new file mode 100644
index 0000000..9a7f2b9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/castor-0.9.5-xml.jar.license.txt
@@ -0,0 +1,38 @@
+Copyright 2000 (C) Intalio Inc. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements
+ and notices. Redistributions must also contain a copy of this
+ document.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. The name "ExoLab" must not be used to endorse or promote products
+ derived from this Software without prior written permission of
+ Intalio Inc. For written permission, please contact info@exolab.org.
+
+4. Products derived from this Software may not be called "Castor"
+ nor may "Castor" appear in their names without prior written
+ permission of Intalio Inc. Exolab, Castor and Intalio are
+ trademarks of Intalio Inc.
+
+5. Due credit should be given to the ExoLab Project
+ (http://www.exolab.org/).
+
+THIS SOFTWARE IS PROVIDED BY INTALIO AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTALIO OR ITS
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/ASF_20_SRC_AUTO/legal/chaperon-20040205.jar.license.txt b/ASF_20_SRC_AUTO/legal/chaperon-20040205.jar.license.txt
new file mode 100644
index 0000000..b31c83d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/chaperon-20040205.jar.license.txt
@@ -0,0 +1,48 @@
+/*
+ * Chaperon. Apache-Style Software License
+ *
+ *
+ * Copyright (c) 2002 Chaperon. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by
+ * Chaperon (http://www.sourceforge.net/projects/chaperon/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The name "Chaperon" must not be used to endorse
+ * or promote products derived from this software without prior written
+ * permission. For written permission, please contact
+ * stephan@vern.chem.tu-berlin.de.
+ *
+ * 5. Products derived from this software may not be called "Chaperon",
+ * nor may "Chaperon" appear in their name, without prior written
+ * permission of stephan@vern.chem.tu-berlin.de.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CHAPERON PROJECT OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-beanutils-1.6.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-beanutils-1.6.1.jar.license.txt
new file mode 100644
index 0000000..01aa874
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-beanutils-1.6.1.jar.license.txt
@@ -0,0 +1,60 @@
+/*
+ * $Header: /home/cvs/cocoon-2.1/legal/commons-beanutils-1.6.1.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-betwixt-20030910.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-betwixt-20030910.jar.license.txt
new file mode 100644
index 0000000..d507568
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-betwixt-20030910.jar.license.txt
@@ -0,0 +1,60 @@
+/*
+ * $Header: /home/cvs/cocoon-2.1/legal/Attic/commons-betwixt-20030910.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-cli-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-cli-1.0.jar.license.txt
new file mode 100644
index 0000000..c2dc940
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-cli-1.0.jar.license.txt
@@ -0,0 +1,60 @@
+/*
+ * $Header: /home/cvs/cocoon-2.1/legal/commons-cli-1.0.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-collections-3.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-collections-3.0.jar.license.txt
new file mode 100644
index 0000000..4d8aea8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-collections-3.0.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2004 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-dbcp-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-dbcp-1.1.jar.license.txt
new file mode 100644
index 0000000..d03e1e9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-dbcp-1.1.jar.license.txt
@@ -0,0 +1,61 @@
+/*
+ * $Source: /home/cvs/cocoon-2.1/legal/Attic/commons-dbcp-1.1.jar.license.txt,v $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation - http://www.apache.org/"
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * http://www.apache.org/
+ *
+ */
+
diff --git a/ASF_20_SRC_AUTO/legal/commons-digester-1.3.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-digester-1.3.jar.license.txt
new file mode 100644
index 0000000..9c0a270
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-digester-1.3.jar.license.txt
@@ -0,0 +1,60 @@
+/*
+ * $Header: /home/cvs/cocoon-2.1/legal/Attic/commons-digester-1.3.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-discovery-0.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-discovery-0.2.jar.license.txt
new file mode 100644
index 0000000..c778cee
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-discovery-0.2.jar.license.txt
@@ -0,0 +1,54 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-httpclient-2.0-final.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-httpclient-2.0-final.jar.license.txt
new file mode 100644
index 0000000..59a84f3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-httpclient-2.0-final.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Velocity" nor may "Apache" appear in their names without prior
+ * written permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-jexl-1.0-beta-1-20040113.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-jexl-1.0-beta-1-20040113.jar.license.txt
new file mode 100644
index 0000000..59a84f3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-jexl-1.0-beta-1-20040113.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Velocity" nor may "Apache" appear in their names without prior
+ * written permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-jxpath-20030909.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-jxpath-20030909.jar.license.txt
new file mode 100644
index 0000000..59a84f3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-jxpath-20030909.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Velocity" nor may "Apache" appear in their names without prior
+ * written permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/commons-lang-2.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-lang-2.0.jar.license.txt
new file mode 100644
index 0000000..d31e521
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-lang-2.0.jar.license.txt
@@ -0,0 +1,60 @@
+/*
+ * $Header: /home/cvs/cocoon-2.1/legal/commons-lang-2.0.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/legal/commons-logging-1.0.3.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-logging-1.0.3.jar.license.txt
new file mode 100644
index 0000000..1deadcc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-logging-1.0.3.jar.license.txt
@@ -0,0 +1,59 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+
+
+
+
diff --git a/ASF_20_SRC_AUTO/legal/commons-pool-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/commons-pool-1.1.jar.license.txt
new file mode 100644
index 0000000..2b44c6b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/commons-pool-1.1.jar.license.txt
@@ -0,0 +1,61 @@
+/*
+ * $Source: /home/cvs/cocoon-2.1/legal/Attic/commons-pool-1.1.jar.license.txt,v $
+ * $Revision: 1.1 $
+ * $Date: 2004/03/04 08:08:51 $
+ *
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation - http://www.apache.org/"
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Commons", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * http://www.apache.org/
+ *
+ */
+
diff --git a/ASF_20_SRC_AUTO/legal/db-ojb-1.0.rc5-20040222.jar.license.txt b/ASF_20_SRC_AUTO/legal/db-ojb-1.0.rc5-20040222.jar.license.txt
new file mode 100644
index 0000000..e87563e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/db-ojb-1.0.rc5-20040222.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache ObjectRelationalBridge" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache ObjectRelationalBridge", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/deli-0.9.8.jar.license.txt b/ASF_20_SRC_AUTO/legal/deli-0.9.8.jar.license.txt
new file mode 100644
index 0000000..81327ea
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/deli-0.9.8.jar.license.txt
@@ -0,0 +1,37 @@
+Jena RDF API and DELI Delivery Context Library
+
+[Note: this is the 'BSD License' as endorsed by OpenSource.org.]
+==========================================================================
+(c) Copyright Hewlett-Packard Company 2002
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==========================================================================
+
+Jena is released under the Hewlett Packard License above.
+For more information on Jena see
+http://www.hpl.hp.com/semweb
+
+DELI is released under the Hewlett Packard License above
+For more information on DELI see
+http://www-uk.hpl.hp.com/people/marbut/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-component-1.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-component-1.2.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-component-1.2.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-datasource-1.1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-datasource-1.1.1.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-datasource-1.1.1.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-event-api-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-event-api-1.1.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-event-api-1.1.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-event-impl-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-event-impl-1.1.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-event-impl-1.1.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-i18n-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-i18n-1.1.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-i18n-1.1.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-instrument-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-instrument-1.0.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-instrument-1.0.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-instrument-client-2003-03-31.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-instrument-client-2003-03-31.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-instrument-client-2003-03-31.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-1.0.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-1.0.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-interfaces-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-interfaces-1.0.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-instrument-manager-interfaces-1.0.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-io-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-io-1.1.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-io-1.1.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-logger-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-logger-1.1.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-logger-1.1.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-monitor-1.0.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-monitor-1.0.2.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-monitor-1.0.2.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-naming-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-naming-1.0.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-naming-1.0.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-pool-1.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-pool-1.2.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-pool-1.2.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-sourceresolve-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-sourceresolve-1.1.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-sourceresolve-1.1.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-store-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-store-1.0.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-store-1.0.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-testcase-1.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-testcase-1.2.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-testcase-1.2.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-util-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-util-1.0.jar.license.txt
new file mode 100644
index 0000000..dbfd421
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-util-1.0.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Jakarta", "Apache Avalon", "Avalon Excalibur", "Avalon
+ Framework" and "Apache Software Foundation" must not be used to endorse
+ or promote products derived from this software without prior written
+ permission. For written permission, please contact apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/excalibur-xmlutil-1.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/excalibur-xmlutil-1.0.jar.license.txt
new file mode 100644
index 0000000..68c771a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/excalibur-xmlutil-1.0.jar.license.txt
@@ -0,0 +1,176 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
diff --git a/ASF_20_SRC_AUTO/legal/fop-0.20.5.jar.license.txt b/ASF_20_SRC_AUTO/legal/fop-0.20.5.jar.license.txt
new file mode 100644
index 0000000..d38fbeb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/fop-0.20.5.jar.license.txt
@@ -0,0 +1,48 @@
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
diff --git a/ASF_20_SRC_AUTO/legal/geronimo-spec-jms-DEV-20031120.jar.license.txt b/ASF_20_SRC_AUTO/legal/geronimo-spec-jms-DEV-20031120.jar.license.txt
new file mode 100644
index 0000000..aa5abef
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/geronimo-spec-jms-DEV-20031120.jar.license.txt
@@ -0,0 +1,62 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Geronimo" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache Geronimo", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+
diff --git a/ASF_20_SRC_AUTO/legal/geronimo-spec-jta-DEV-20040202.jar.license.txt b/ASF_20_SRC_AUTO/legal/geronimo-spec-jta-DEV-20040202.jar.license.txt
new file mode 100644
index 0000000..aa5abef
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/geronimo-spec-jta-DEV-20040202.jar.license.txt
@@ -0,0 +1,62 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Geronimo" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache Geronimo", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+
diff --git a/ASF_20_SRC_AUTO/legal/hsqldb-1.7.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/hsqldb-1.7.1.jar.license.txt
new file mode 100644
index 0000000..3e74378
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/hsqldb-1.7.1.jar.license.txt
@@ -0,0 +1,30 @@
+ * Copyright (c) 2001, The HSQL Development Group
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ *
+ * Neither the name of the HSQL Development Group nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This package is based on HypersonicSQL, originally developed by Thomas Mueller.
diff --git a/ASF_20_SRC_AUTO/legal/icu4j.jar.license.txt b/ASF_20_SRC_AUTO/legal/icu4j.jar.license.txt
new file mode 100644
index 0000000..ca081ab
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/icu4j.jar.license.txt
@@ -0,0 +1,34 @@
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2003 International Business Machines Corporation and others
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+--------------------------------------------------------------------------------
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/legal/itext-1.02.jar.license.txt b/ASF_20_SRC_AUTO/legal/itext-1.02.jar.license.txt
new file mode 100644
index 0000000..7714141
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/itext-1.02.jar.license.txt
@@ -0,0 +1,470 @@
+ MOZILLA PUBLIC LICENSE
+ Version 1.1
+
+ ---------------
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+ combination of the Original Code and Modifications, in each case
+ including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+ hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be
+ distributed only under the terms of this License or a future version
+ of this License released under Section 6.1, and You must include a
+ copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this
+ License or the recipients' rights hereunder. However, You may include
+ an additional document offering the additional rights described in
+ Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+ made available in Source Code form under the terms of this License
+ either on the same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic
+ Distribution Mechanism, must remain available for at least twelve (12)
+ months after the date it initially became available, or at least six
+ (6) months after a subsequent version of that particular Modification
+ has been made available to such recipients. You are responsible for
+ ensuring that the Source Code version remains available even if the
+ Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+ file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that
+ the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the
+ Initial Developer in (a) the Source Code, and (b) in any notice in an
+ Executable version or related documentation in which You describe the
+ origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+ intellectual property rights is required to exercise the rights
+ granted by such Contributor under Sections 2.1 or 2.2,
+ Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If Contributor obtains such knowledge after
+ the Modification is made available as described in Section 3.2,
+ Contributor shall promptly modify the LEGAL file in all copies
+ Contributor makes available thereafter and shall take other steps
+ (such as notifying appropriate mailing lists or newsgroups)
+ reasonably calculated to inform those who received the Covered
+ Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+ interface and Contributor has knowledge of patent licenses which
+ are reasonably necessary to implement that API, Contributor must
+ also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely
+ to look for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described in
+ Exhibit A. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership
+ rights relating to Covered Code. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Code. However, You
+ may do so only on Your own behalf, and not on behalf of the Initial
+ Developer or any Contributor. You must make it absolutely clear than
+ any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code or ownership rights under a license of Your choice, which may
+ contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the recipient's
+ rights in the Source Code version from the rights set forth in this
+ License. If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred by
+ the Initial Developer or such Contributor as a result of any such
+ terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.4 and must
+ be included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+ and/or new versions of the License from time to time. Each version
+ will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms
+ of any subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable to
+ Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+ only do in order to apply it to code which is not already Covered Code
+ governed by this License), You must (a) rename Your license so that
+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+ "MPL", "NPL" or any confusingly similar phrase do not appear in your
+ license (except to note that your license differs from this License)
+ and (b) otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described in
+ Exhibit A shall not of themselves be deemed to be modifications of
+ this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom
+ You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate prospectively,
+ unless if within 60 days after receipt of notice You either: (i)
+ agree in writing to pay Participant a mutually agreeable reasonable
+ royalty for Your past and future use of Modifications made by such
+ Participant, or (ii) withdraw Your litigation claim with respect to
+ the Contributor Version against such Participant. If within 60 days
+ of notice, a reasonable royalty and payment arrangement are not
+ mutually agreed upon in writing by the parties or the litigation claim
+ is not withdrawn, the rights granted by Participant to You under
+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+ the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then
+ any rights granted to You by such Participant under Sections 2.1(b)
+ and 2.2(b) are revoked effective as of the date You first made, used,
+ sold, distributed, or had made, Modifications made by that
+ Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in
+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as such
+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+ all U.S. Government End Users acquire Covered Code with only those
+ rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions.
+ With respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the United
+ States of America, any litigation relating to this License shall be
+ subject to the jurisdiction of the Federal Courts of the Northern
+ District of California, with venue lying in Santa Clara County,
+ California, with the losing party responsible for costs, including
+ without limitation, court costs and reasonable attorneys' fees and
+ expenses. The application of the United Nations Convention on
+ Contracts for the International Sale of Goods is expressly excluded.
+ Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this
+ License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly,
+ out of its utilization of rights under this License and You agree to
+ work with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+ Developer permits you to utilize portions of the Covered Code under
+ Your choice of the NPL or the alternative licenses, if any, specified
+ by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+ Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+ Portions created by ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms
+ of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those
+ above. If you wish to allow use of your version of this file only
+ under the terms of the [____] License and not to allow others to use
+ your version of this file under the MPL, indicate your decision by
+ deleting the provisions above and replace them with the notice and
+ other provisions required by the [___] License. If you do not delete
+ the provisions above, a recipient may use your version of this file
+ under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+
diff --git a/ASF_20_SRC_AUTO/legal/itext-xml-1.02.jar.license.txt b/ASF_20_SRC_AUTO/legal/itext-xml-1.02.jar.license.txt
new file mode 100644
index 0000000..7714141
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/itext-xml-1.02.jar.license.txt
@@ -0,0 +1,470 @@
+ MOZILLA PUBLIC LICENSE
+ Version 1.1
+
+ ---------------
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+ combination of the Original Code and Modifications, in each case
+ including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+ hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be
+ distributed only under the terms of this License or a future version
+ of this License released under Section 6.1, and You must include a
+ copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this
+ License or the recipients' rights hereunder. However, You may include
+ an additional document offering the additional rights described in
+ Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+ made available in Source Code form under the terms of this License
+ either on the same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic
+ Distribution Mechanism, must remain available for at least twelve (12)
+ months after the date it initially became available, or at least six
+ (6) months after a subsequent version of that particular Modification
+ has been made available to such recipients. You are responsible for
+ ensuring that the Source Code version remains available even if the
+ Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+ file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that
+ the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the
+ Initial Developer in (a) the Source Code, and (b) in any notice in an
+ Executable version or related documentation in which You describe the
+ origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+ intellectual property rights is required to exercise the rights
+ granted by such Contributor under Sections 2.1 or 2.2,
+ Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If Contributor obtains such knowledge after
+ the Modification is made available as described in Section 3.2,
+ Contributor shall promptly modify the LEGAL file in all copies
+ Contributor makes available thereafter and shall take other steps
+ (such as notifying appropriate mailing lists or newsgroups)
+ reasonably calculated to inform those who received the Covered
+ Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+ interface and Contributor has knowledge of patent licenses which
+ are reasonably necessary to implement that API, Contributor must
+ also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely
+ to look for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described in
+ Exhibit A. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership
+ rights relating to Covered Code. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Code. However, You
+ may do so only on Your own behalf, and not on behalf of the Initial
+ Developer or any Contributor. You must make it absolutely clear than
+ any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code or ownership rights under a license of Your choice, which may
+ contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the recipient's
+ rights in the Source Code version from the rights set forth in this
+ License. If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred by
+ the Initial Developer or such Contributor as a result of any such
+ terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.4 and must
+ be included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+ and/or new versions of the License from time to time. Each version
+ will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms
+ of any subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable to
+ Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+ only do in order to apply it to code which is not already Covered Code
+ governed by this License), You must (a) rename Your license so that
+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+ "MPL", "NPL" or any confusingly similar phrase do not appear in your
+ license (except to note that your license differs from this License)
+ and (b) otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described in
+ Exhibit A shall not of themselves be deemed to be modifications of
+ this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom
+ You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate prospectively,
+ unless if within 60 days after receipt of notice You either: (i)
+ agree in writing to pay Participant a mutually agreeable reasonable
+ royalty for Your past and future use of Modifications made by such
+ Participant, or (ii) withdraw Your litigation claim with respect to
+ the Contributor Version against such Participant. If within 60 days
+ of notice, a reasonable royalty and payment arrangement are not
+ mutually agreed upon in writing by the parties or the litigation claim
+ is not withdrawn, the rights granted by Participant to You under
+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+ the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then
+ any rights granted to You by such Participant under Sections 2.1(b)
+ and 2.2(b) are revoked effective as of the date You first made, used,
+ sold, distributed, or had made, Modifications made by that
+ Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in
+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as such
+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+ all U.S. Government End Users acquire Covered Code with only those
+ rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions.
+ With respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the United
+ States of America, any litigation relating to this License shall be
+ subject to the jurisdiction of the Federal Courts of the Northern
+ District of California, with venue lying in Santa Clara County,
+ California, with the losing party responsible for costs, including
+ without limitation, court costs and reasonable attorneys' fees and
+ expenses. The application of the United Nations Convention on
+ Contracts for the International Sale of Goods is expressly excluded.
+ Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this
+ License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly,
+ out of its utilization of rights under this License and You agree to
+ work with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+ Developer permits you to utilize portions of the Covered Code under
+ Your choice of the NPL or the alternative licenses, if any, specified
+ by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+ Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+ Portions created by ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms
+ of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those
+ above. If you wish to allow use of your version of this file only
+ under the terms of the [____] License and not to allow others to use
+ your version of this file under the MPL, indicate your decision by
+ deleting the provisions above and replace them with the notice and
+ other provisions required by the [___] License. If you do not delete
+ the provisions above, a recipient may use your version of this file
+ under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+
diff --git a/ASF_20_SRC_AUTO/legal/jakarta-oro-2.0.8.jar.license.txt b/ASF_20_SRC_AUTO/legal/jakarta-oro-2.0.8.jar.license.txt
new file mode 100644
index 0000000..4b3a622
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jakarta-oro-2.0.8.jar.license.txt
@@ -0,0 +1,57 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation", "Jakarta-Oro"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * or "Jakarta-Oro", nor may "Apache" or "Jakarta-Oro" appear in their
+ * name, without prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * Portions of this software are based upon software originally written
+ * by Daniel F. Savarese. We appreciate his contributions.
+ */
+
diff --git a/ASF_20_SRC_AUTO/legal/jakarta-regexp-1.3.jar.license.txt b/ASF_20_SRC_AUTO/legal/jakarta-regexp-1.3.jar.license.txt
new file mode 100644
index 0000000..64ea074
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jakarta-regexp-1.3.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/jcs-1.0-dev.20040303.jar.license.txt b/ASF_20_SRC_AUTO/legal/jcs-1.0-dev.20040303.jar.license.txt
new file mode 100644
index 0000000..499d643
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jcs-1.0-dev.20040303.jar.license.txt
@@ -0,0 +1,55 @@
+
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache JCS" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache JCS", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/jdom-b9.jar.license.txt b/ASF_20_SRC_AUTO/legal/jdom-b9.jar.license.txt
new file mode 100644
index 0000000..8474e65
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jdom-b9.jar.license.txt
@@ -0,0 +1,56 @@
+/*--
+
+ $Id: jdom-b9.jar.license.txt,v 1.1 2004/03/04 08:08:51 cziegeler Exp $
+
+ Copyright (C) 2000-2002 Brett McLaughlin & Jason Hunter.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the disclaimer that follows
+ these conditions in the documentation and/or other materials
+ provided with the distribution.
+
+ 3. The name "JDOM" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact license@jdom.org.
+
+ 4. Products derived from this software may not be called "JDOM", nor
+ may "JDOM" appear in their name, without prior written permission
+ from the JDOM Project Management (pm@jdom.org).
+
+ In addition, we request (but do not require) that you include in the
+ end-user documentation provided with the redistribution and/or in the
+ software itself an acknowledgement equivalent to the following:
+ "This product includes software developed by the
+ JDOM Project (http://www.jdom.org/)."
+ Alternatively, the acknowledgment may be graphical using the logos
+ available at http://www.jdom.org/images/logos.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many
+ individuals on behalf of the JDOM Project and was originally
+ created by Brett McLaughlin <brett@jdom.org> and
+ Jason Hunter <jhunter@jdom.org>. For more information on the
+ JDOM Project, please see <http://www.jdom.org/>.
+
+ */
+
diff --git a/ASF_20_SRC_AUTO/legal/jdtcore-2.1.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/jdtcore-2.1.2.jar.license.txt
new file mode 100644
index 0000000..83a65f7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jdtcore-2.1.2.jar.license.txt
@@ -0,0 +1,297 @@
+Eclipse.org Software User Agreement
+
+17th June, 2002
+
+ECLIPSE.ORG MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT
+AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED
+OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE
+CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF
+ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.
+IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE
+TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES
+INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.
+
+Unless otherwise indicated, all Content made available by Eclipse.org is
+provided to you under the terms and conditions of the Common Public License
+Version 1.0 ("CPL"). A copy of the CPL is provided with this Content and is
+also available at http://www.eclipse.org/legal/cpl-v10.html. For purposes
+of the CPL, "Program" will mean the Content.
+
+Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse.org CVS repository
+("Repository") in CVS modules ("Modules") and made available as
+downloadable archives ("Downloads").
+
+Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments
+("Fragments"), and features ("Features"). A Feature is a bundle of one or
+more Plug-ins and/or Fragments and associated material. Files named
+"feature.xml" may contain a list of the names and version numbers of the
+Plug-ins and/or Fragments associated with a Feature. Plug-ins and Fragments
+are located in directories named "plugins" and Features are located in
+directories named "features".
+
+Features may also include other Features ("Included Features"). Files named
+"feature.xml" may contain a list of the names and version numbers of
+Included Features.
+
+The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and conditions
+governing Features and Included Features should be contained in files named
+"license.html" ("Feature Licenses"). Abouts and Feature Licenses may be
+located in any directory of a Download or Module including, but not limited
+to the following locations:
+
+ * The top-level (root) directory
+ * Plug-in and Fragment directories
+ * Subdirectories of the directory named "src" of certain Plug-ins
+ * Feature directories
+
+Note: if a Feature made available by Eclipse.org is installed using the
+Eclipse Update Manager, you must agree to a license ("Feature Update
+License") during the installation process. If the Feature contains Included
+Features, the Feature Update License should either provide you with the
+terms and conditions governing the Included Features or inform you where
+you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties". Such Abouts, Feature Licenses
+and Feature Update Licenses contain the terms and conditions (or references
+to such terms and conditions) that govern your use of the associated
+Content in that directory. The Abouts, Feature Licenses and Feature Update
+Licenses may refer to the CPL or other license agreements, notices or terms
+and conditions . It is your obligation to read and accept all such all
+terms and conditions prior to use of the Content. If no About, Feature
+License or Feature Update License is provided, please contact Eclipse.org
+to determine what terms and conditions govern that particular Content.
+
+Content may contain encryption software. The country in which you are
+currently may have restrictions on the import, possession, and use, and/or
+re-export to another country, of encryption software. BEFORE using any
+encryption software, please check the country's laws, regulations and
+policies concerning the import, possession, or use, and re-export of
+encryption software, to see if this is permitted.
+
+ Common Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and
+ documentation distributed under this Agreement, and
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and
+ are distributed by that particular Contributor. A Contribution
+ 'originates' from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include additions to the Program which: (i) are
+ separate modules of software distributed in conjunction with the
+ Program under their own license agreement, and (ii) are not derivative
+ works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone or
+when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare derivative works of, publicly display,
+ publicly perform, distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works, in source code and
+ object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor, if
+ any, in source code and object code form. This patent license shall
+ apply to the combination of the Contribution and the Program if, at
+ the time the Contribution is added by the Contributor, such addition
+ of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other
+ combinations which include the Contribution. No hardware per se is
+ licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity. Each
+ Contributor disclaims any liability to Recipient for claims brought by
+ any other entity based on infringement of intellectual property rights
+ or otherwise. As a condition to exercising the rights and licenses
+ granted hereunder, each Recipient hereby assumes sole responsibility
+ to secure any other intellectual property rights needed, if any. For
+ example, if a third party patent license is required to allow
+ Recipient to distribute the Program, it is Recipient's responsibility
+ to acquire that license before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or
+ conditions of title and non-infringement, and implied warranties or
+ conditions of merchantability and fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability
+ for damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the
+ Program.
+
+Contributors may not remove or alter any copyright notices contained within
+the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a
+commercial product offering, such Contributor ("Commercial Contributor")
+hereby agrees to defend and indemnify every other Contributor ("Indemnified
+Contributor") against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating
+to any actual or alleged intellectual property infringement. In order to
+qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial
+Contributor to control, and cooperate with the Commercial Contributor in,
+the defense and any related settlement negotiations. The Indemnified
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance claims,
+or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under
+this section, the Commercial Contributor would have to defend claims
+against the other Contributors related to those performance claims and
+warranties, and if a court requires any other Contributor to pay any
+damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON
+AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
+EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
+CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
+the appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with
+respect to a patent applicable to software (including a cross-claim or
+counterclaim in a lawsuit), then any patent licenses granted by that
+Contributor to such Recipient under this Agreement shall terminate as of
+the date such litigation is filed. In addition, if Recipient institutes
+patent litigation against any entity (including a cross-claim or
+counterclaim in a lawsuit) alleging that the Program itself (excluding
+combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section
+2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and
+does not cure such failure in a reasonable period of time after becoming
+aware of such noncompliance. If all Recipient's rights under this Agreement
+terminate, Recipient agrees to cease use and distribution of the Program as
+soon as reasonably practicable. However, Recipient's obligations under this
+Agreement and any licenses granted by Recipient relating to the Program
+shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but
+in order to avoid inconsistency the Agreement is copyrighted and may only
+be modified in the following manner. The Agreement Steward reserves the
+right to publish new versions (including revisions) of this Agreement from
+time to time. No one other than the Agreement Steward has the right to
+modify this Agreement. IBM is the initial Agreement Steward. IBM may assign
+the responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in
+Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program
+not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than one
+year after the cause of action arose. Each party waives its rights to a
+jury trial in any resulting litigation.
diff --git a/ASF_20_SRC_AUTO/legal/jena-2.0.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/jena-2.0.0.jar.license.txt
new file mode 100644
index 0000000..81327ea
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jena-2.0.0.jar.license.txt
@@ -0,0 +1,37 @@
+Jena RDF API and DELI Delivery Context Library
+
+[Note: this is the 'BSD License' as endorsed by OpenSource.org.]
+==========================================================================
+(c) Copyright Hewlett-Packard Company 2002
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==========================================================================
+
+Jena is released under the Hewlett Packard License above.
+For more information on Jena see
+http://www.hpl.hp.com/semweb
+
+DELI is released under the Hewlett Packard License above
+For more information on DELI see
+http://www-uk.hpl.hp.com/people/marbut/
diff --git a/ASF_20_SRC_AUTO/legal/jetty-4.2.14.jar.license.txt b/ASF_20_SRC_AUTO/legal/jetty-4.2.14.jar.license.txt
new file mode 100644
index 0000000..5f3706f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jetty-4.2.14.jar.license.txt
@@ -0,0 +1,133 @@
+Jetty License
+$Revision: 1.1 $
+Preamble:
+
+The intent of this document is to state the conditions under which the Jetty
+Package may be copied, such that the Copyright Holder maintains some semblance
+of control over the development of the package, while giving the users of the
+package the right to use, distribute and make reasonable modifications to the
+Package in accordance with the goals and ideals of the Open Source concept as
+described at http://www.opensource.org.
+
+It is the intent of this license to allow commercial usage of the Jetty package,
+so long as the source code is distributed or suitable visible credit given or
+other arrangements made with the copyright holders.
+
+Definitions:
+
+ * "Jetty" refers to the collection of Java classes that are distributed as a
+HTTP server with servlet capabilities and associated utilities.
+
+ * "Package" refers to the collection of files distributed by the Copyright
+Holder, and derivatives of that collection of files created through textual
+modification.
+
+ * "Standard Version" refers to such a Package if it has not been modified,
+or has been modified in accordance with the wishes of the Copyright Holder.
+
+ * "Copyright Holder" is whoever is named in the copyright or copyrights for
+the package.
+ Mort Bay Consulting Pty. Ltd. (Australia) is the "Copyright Holder" for
+the Jetty package.
+
+ * "You" is you, if you're thinking about copying or distributing this
+Package.
+
+ * "Reasonable copying fee" is whatever you can justify on the basis of media
+cost, duplication charges, time of people involved, and so on. (You will not be
+required to justify it to the Copyright Holder, but only to the computing
+community at large as a market that must bear the fee.)
+
+ * "Freely Available" means that no fee is charged for the item itself,
+though there may be fees involved in handling the item. It also means that
+recipients of the item may redistribute it under the same conditions they
+received it.
+
+0. The Jetty Package is Copyright (c) Mort Bay Consulting Pty. Ltd. (Australia)
+and others. Individual files in this package may contain additional copyright
+notices. The javax.servlet packages are copyright Sun Microsystems Inc.
+
+1. The Standard Version of the Jetty package is available from
+http://jetty.mortbay.org.
+
+2. You may make and distribute verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you include
+this license and all of the original copyright notices and associated
+disclaimers.
+
+3. You may make and distribute verbatim copies of the compiled form of the
+Standard Version of this Package without restriction, provided that you include
+this license.
+
+4. You may apply bug fixes, portability fixes and other modifications derived
+from the Public Domain or from the Copyright Holder. A Package modified in such
+a way shall still be considered the Standard Version.
+
+5. You may otherwise modify your copy of this Package in any way, provided that
+you insert a prominent notice in each changed file stating how and when you
+changed that file, and provided that you do at least ONE of the following:
+
+ a) Place your modifications in the Public Domain or otherwise make them
+Freely Available, such as by posting said modifications to Usenet or an
+equivalent medium, or placing the modifications on a major archive site such as
+ftp.uu.net, or by allowing the Copyright Holder to include your modifications in
+the Standard Version of the Package.
+
+ b) Use the modified Package only within your corporation or organization.
+
+ c) Rename any non-standard classes so the names do not conflict with
+standard classes, which must also be provided, and provide a separate manual
+page for each non-standard class that clearly documents how it differs from the
+Standard Version.
+
+ d) Make other arrangements with the Copyright Holder.
+
+6. You may distribute modifications or subsets of this Package in source code or
+compiled form, provided that you do at least ONE of the following:
+
+ a) Distribute this license and all original copyright messages, together
+with instructions (in the about dialog, manual page or equivalent) on where to
+get the complete Standard Version.
+
+ b) Accompany the distribution with the machine-readable source of the
+Package with your modifications. The modified package must include this license
+and all of the original copyright notices and associated disclaimers, together
+with instructions on where to get the complete Standard Version.
+
+ c) Make other arrangements with the Copyright Holder.
+
+7. You may charge a reasonable copying fee for any distribution of this Package.
+You may charge any fee you choose for support of this Package. You may not
+charge a fee for this Package itself. However, you may distribute this Package
+in aggregate with other (possibly commercial) programs as part of a larger
+(possibly commercial) software distribution provided that you meet the other
+distribution requirements of this license.
+
+8. Input to or the output produced from the programs of this Package do not
+automatically fall under the copyright of this Package, but belong to whomever
+generated them, and may be sold commercially, and may be aggregated with this
+Package.
+
+9. Any program subroutines supplied by you and linked into this Package shall
+not be considered part of this Package.
+
+10. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+11. This license may change with each release of a Standard Version of the
+Package. You may choose to use the license associated with version you are using
+or the license of the latest Standard Version.
+
+12. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+13. If any superior law implies a warranty, the sole remedy under such shall be
+, at the Copyright Holders option either a) return of any price paid or b) use
+or reasonable endeavours to repair or replace the software.
+
+14. This license shall be read under the laws of Australia.
+
+The End
+This license was derived from the Artistic license published on
+http://www.opensource.com
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/legal/jfor-0.7.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/jfor-0.7.1.jar.license.txt
new file mode 100644
index 0000000..07947bb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jfor-0.7.1.jar.license.txt
@@ -0,0 +1,43 @@
+ * ====================================================================
+ * jfor Apache-Style Software License.
+ * Copyright (c) 2002 by the jfor project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed
+ * by the jfor project (http://www.jfor.org)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The name "jfor" must not be used to endorse
+ * or promote products derived from this software without prior written
+ * permission. For written permission, please contact info@jfor.org.
+ *
+ * 5. Products derived from this software may not be called "jfor",
+ * nor may "jfor" appear in their name, without prior written
+ * permission of info@jfor.org.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE JFOR PROJECT OR ITS CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
diff --git a/ASF_20_SRC_AUTO/legal/jing-20030619.jar.license.txt b/ASF_20_SRC_AUTO/legal/jing-20030619.jar.license.txt
new file mode 100644
index 0000000..d04a636
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jing-20030619.jar.license.txt
@@ -0,0 +1,31 @@
+Copyright (c) 2001, 2002 Thai Open Source Software Center Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ Neither the name of the Thai Open Source Software Center Ltd nor
+ the names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ASF_20_SRC_AUTO/legal/jisp-2.5.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/jisp-2.5.1.jar.license.txt
new file mode 100644
index 0000000..c22bc3d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jisp-2.5.1.jar.license.txt
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------------------------
+JISP - Java Index Serialization Package
+
+version 1.0.2
+5 August 2001
+------------------------------------------------------------------------------------------------
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify this file, you may insert additional notices immediately following this sentence.
+
+Copyright 2001 Scott Robert Ladd. All rights reserved, except as noted herein.
+
+This computer program source file is supplied "AS IS". Scott Robert Ladd (hereinafter referred to
+as "Author") disclaims all warranties, expressed or implied, including, without limitation, the
+warranties of merchantability and of fitness for any purpose. The Author assumes no liability for
+direct, indirect, incidental, special, exemplary, or consequential damages, which may result from
+the use of the PNG Reference Library, even if advised of the possibility of such damage.
+
+The Author hereby grants anyone permission to use, copy, modify, and distribute this source code,
+or portions hereof, for any purpose, without fee, subject to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not be misrepresented as being the
+original source.
+
+3. This Copyright notice may not be removed or altered from any source or altered source
+distribution.
+
+The Author specifically permits (without fee) and encourages the use of this source code for
+entertainment, education, or decoration. If you use this source code in a product, acknowledgment
+is not required but would be appreciated.
+
+The Author's contact information is:
+
+Scott Robert Ladd
+scott@coyotegulch.com
+http://www.coyotegulch.com
+
+Acknowledgement:
+This document is based on the wonderful simple license that accompanies libpng.
diff --git a/ASF_20_SRC_AUTO/legal/joost-20031219.jar.license.txt b/ASF_20_SRC_AUTO/legal/joost-20031219.jar.license.txt
new file mode 100644
index 0000000..7714141
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/joost-20031219.jar.license.txt
@@ -0,0 +1,470 @@
+ MOZILLA PUBLIC LICENSE
+ Version 1.1
+
+ ---------------
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+ combination of the Original Code and Modifications, in each case
+ including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+ hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be
+ distributed only under the terms of this License or a future version
+ of this License released under Section 6.1, and You must include a
+ copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this
+ License or the recipients' rights hereunder. However, You may include
+ an additional document offering the additional rights described in
+ Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+ made available in Source Code form under the terms of this License
+ either on the same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic
+ Distribution Mechanism, must remain available for at least twelve (12)
+ months after the date it initially became available, or at least six
+ (6) months after a subsequent version of that particular Modification
+ has been made available to such recipients. You are responsible for
+ ensuring that the Source Code version remains available even if the
+ Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+ file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that
+ the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the
+ Initial Developer in (a) the Source Code, and (b) in any notice in an
+ Executable version or related documentation in which You describe the
+ origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+ intellectual property rights is required to exercise the rights
+ granted by such Contributor under Sections 2.1 or 2.2,
+ Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If Contributor obtains such knowledge after
+ the Modification is made available as described in Section 3.2,
+ Contributor shall promptly modify the LEGAL file in all copies
+ Contributor makes available thereafter and shall take other steps
+ (such as notifying appropriate mailing lists or newsgroups)
+ reasonably calculated to inform those who received the Covered
+ Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+ interface and Contributor has knowledge of patent licenses which
+ are reasonably necessary to implement that API, Contributor must
+ also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely
+ to look for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described in
+ Exhibit A. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership
+ rights relating to Covered Code. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Code. However, You
+ may do so only on Your own behalf, and not on behalf of the Initial
+ Developer or any Contributor. You must make it absolutely clear than
+ any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code or ownership rights under a license of Your choice, which may
+ contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the recipient's
+ rights in the Source Code version from the rights set forth in this
+ License. If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred by
+ the Initial Developer or such Contributor as a result of any such
+ terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.4 and must
+ be included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+ and/or new versions of the License from time to time. Each version
+ will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms
+ of any subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable to
+ Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+ only do in order to apply it to code which is not already Covered Code
+ governed by this License), You must (a) rename Your license so that
+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+ "MPL", "NPL" or any confusingly similar phrase do not appear in your
+ license (except to note that your license differs from this License)
+ and (b) otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described in
+ Exhibit A shall not of themselves be deemed to be modifications of
+ this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom
+ You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate prospectively,
+ unless if within 60 days after receipt of notice You either: (i)
+ agree in writing to pay Participant a mutually agreeable reasonable
+ royalty for Your past and future use of Modifications made by such
+ Participant, or (ii) withdraw Your litigation claim with respect to
+ the Contributor Version against such Participant. If within 60 days
+ of notice, a reasonable royalty and payment arrangement are not
+ mutually agreed upon in writing by the parties or the litigation claim
+ is not withdrawn, the rights granted by Participant to You under
+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+ the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then
+ any rights granted to You by such Participant under Sections 2.1(b)
+ and 2.2(b) are revoked effective as of the date You first made, used,
+ sold, distributed, or had made, Modifications made by that
+ Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in
+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as such
+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+ all U.S. Government End Users acquire Covered Code with only those
+ rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions.
+ With respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the United
+ States of America, any litigation relating to this License shall be
+ subject to the jurisdiction of the Federal Courts of the Northern
+ District of California, with venue lying in Santa Clara County,
+ California, with the losing party responsible for costs, including
+ without limitation, court costs and reasonable attorneys' fees and
+ expenses. The application of the United Nations Convention on
+ Contracts for the International Sale of Goods is expressly excluded.
+ Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this
+ License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly,
+ out of its utilization of rights under this License and You agree to
+ work with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+ Developer permits you to utilize portions of the Covered Code under
+ Your choice of the NPL or the alternative licenses, if any, specified
+ by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+ Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+ Portions created by ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms
+ of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those
+ above. If you wish to allow use of your version of this file only
+ under the terms of the [____] License and not to allow others to use
+ your version of this file under the MPL, indicate your decision by
+ deleting the provisions above and replace them with the notice and
+ other provisions required by the [___] License. If you do not delete
+ the provisions above, a recipient may use your version of this file
+ under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+
diff --git a/ASF_20_SRC_AUTO/legal/jstyle.jar.license.txt b/ASF_20_SRC_AUTO/legal/jstyle.jar.license.txt
new file mode 100644
index 0000000..ec58ec3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jstyle.jar.license.txt
@@ -0,0 +1,116 @@
+Jstyle was replaced several years ago by Artistic Style, which can be
+found at http://astyle.sourceforge.net. Jstyle is covered by Artistic
+License.
+
+http://astyle.sourceforge.net/license.html
+--------------------------------------------------------------------------------
+
+The ``Artistic License''
+
+Preamble
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package, while
+giving the users of the package the right to use and distribute the
+Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+--------------------------------------------------------------------------------
+
+Definitions
+``Package'' refers to the collection of files distributed by the
+Copyright Holder, and derivatives of that collection of files created
+through textual modification.
+``Standard Version'' refers to such a Package if it has not been
+modified, or has been modified in accordance with the wishes of the
+Copyright Holder as specified below.
+``Copyright Holder'' is whoever is named in the copyright or copyrights
+for the package.
+``You'' is you, if you're thinking about copying or distributing this
+Package.
+``Reasonable copying fee'' is whatever you can justify on the basis of
+media cost, duplication charges, time of people involved, and so on.
+(You will not be required to justify it to the Copyright Holder, but
+only to the computing community at large as a market that must bear the
+fee.)
+``Freely Available'' means that no fee is charged for the item itself,
+though there may be fees involved in handling the item. It also means
+that recipients of the item may redistribute it under the same
+conditions they received it.
+
+--------------------------------------------------------------------------------
+
+You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated
+disclaimers.
+You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder. A Package
+modified in such a way shall still be considered the Standard Version.
+You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+place your modifications in the Public Domain or otherwise make them
+Freely Available, such as by posting said modifications to Usenet or an
+equivalent medium, or placing the modifications on a major archive site
+such as uunet.uu.net, or by allowing the Copyright Holder to include
+your modifications in the Standard Version of the Package.
+use the modified Package only within your corporation or organization.
+rename any non-standard executables so the names do not conflict with
+standard executables, which must also be provided, and provide a
+separate manual page for each non-standard executable that clearly
+documents how it differs from the Standard Version.
+make other distribution arrangements with the Copyright Holder.
+You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+distribute a Standard Version of the executables and library files,
+together with instructions (in the manual page or equivalent) on where
+to get the Standard Version.
+accompany the distribution with the machine-readable source of the
+Package with your modifications.
+give non-standard executables non-standard names, and clearly document
+the differences in manual pages (or equivalent), together with
+instructions on where to get the Standard Version.
+make other distribution arrangements with the Copyright Holder.
+You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this Package.
+You may not charge a fee for this Package itself. However, you may
+distribute this Package in aggregate with other (possibly commercial)
+programs as part of a larger (possibly commercial) software distribution
+provided that you do not advertise this Package as a product of your
+own. You may embed this Package's interpreter within an executable of
+yours (by linking); this shall be construed as a mere form of
+aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+The scripts and library files supplied as input to or produced as output
+from the programs of this Package do not automatically fall under the
+copyright of this Package, but belong to whomever generated them, and
+may be sold commercially, and may be aggregated with this Package. If
+such scripts or library files are aggregated with this Package via the
+so-called "undump" or "unexec" methods of producing a binary executable
+image, then distribution of such an image shall neither be construed as
+a distribution of this Package nor shall it fall under the restrictions
+of Paragraphs 3 and 4, provided that you do not represent such an
+executable image as a Standard Version of this Package.
+C subroutines (or comparably compiled subroutines in other languages)
+supplied by you and linked into this Package in order to emulate
+subroutines and variables of the language defined by this Package shall
+not be considered part of this Package, but are the equivalent of input
+as in Paragraph 6, provided these subroutines do not change the language
+in any way that would cause it to fail the regression tests for the
+language.
+Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution. Such use shall not be
+construed as a distribution of this Package.
+The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/ASF_20_SRC_AUTO/legal/jtidy-04aug2000r7-dev.jar.license.txt b/ASF_20_SRC_AUTO/legal/jtidy-04aug2000r7-dev.jar.license.txt
new file mode 100644
index 0000000..84e366b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/jtidy-04aug2000r7-dev.jar.license.txt
@@ -0,0 +1,49 @@
+ Java HTML Tidy - JTidy
+ HTML parser and pretty printer
+
+ Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
+ Institute of Technology, Institut National de Recherche en
+ Informatique et en Automatique, Keio University). All Rights
+ Reserved.
+
+ Contributing Author(s):
+
+ Dave Raggett <dsr@w3.org>
+ Andy Quick <ac.quick@sympatico.ca> (translation to Java)
+ Gary L Peskin <garyp@firstech.com> (Java development)
+ Sami Lempinen <sami@lempinen.net> (release management)
+
+ The contributing author(s) would like to thank all those who
+ helped with testing, bug fixes, and patience. This wouldn't
+ have been possible without all of you.
+
+ COPYRIGHT NOTICE:
+
+ This software and documentation is provided "as is," and
+ the copyright holders and contributing author(s) make no
+ representations or warranties, express or implied, including
+ but not limited to, warranties of merchantability or fitness
+ for any particular purpose or that the use of the software or
+ documentation will not infringe any third party patents,
+ copyrights, trademarks or other rights.
+
+ The copyright holders and contributing author(s) will not be
+ liable for any direct, indirect, special or consequential damages
+ arising out of any use of the software or documentation, even if
+ advised of the possibility of such damage.
+
+ Permission is hereby granted to use, copy, modify, and distribute
+ this source code, or portions hereof, documentation and executables,
+ for any purpose, without fee, subject to the following restrictions:
+
+ 1. The origin of this source code must not be misrepresented.
+ 2. Altered versions must be plainly marked as such and must
+ not be misrepresented as being the original source.
+ 3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.
+
+ The copyright holders and contributing author(s) specifically
+ permit, without fee, and encourage the use of this source code
+ as a component for supporting the Hypertext Markup Language in
+ commercial products. If you use this source code in a product,
+ acknowledgment is not required but would be appreciated.
diff --git a/ASF_20_SRC_AUTO/legal/junit.jar.license.txt b/ASF_20_SRC_AUTO/legal/junit.jar.license.txt
new file mode 100644
index 0000000..fbd1e20
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/junit.jar.license.txt
@@ -0,0 +1,185 @@
+
+IBM Public License Version 1.0
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE
+PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+1. DEFINITIONS
+
+"Contribution" means:
+ a) in the case of International Business Machines Corporation ("IBM"),
+ the Original Program, and
+ b) in the case of each Contributor,
+ i) changes to the Program, and
+ ii) additions to the Program;
+ where such changes and/or additions to the Program originate from and
+ are distributed by that particular Contributor. A Contribution
+ 'originates' from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include additions to the Program which: (i) are
+ separate modules of software distributed in conjunction with the Program
+ under their own license agreement, and (ii) are not derivative works of
+ the Program.
+"Contributor" means IBM and any other entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone or
+when combined with the Program.
+"Original Program" means the original version of the software accompanying
+this Agreement as released by IBM, including source code, object code and
+documentation, if any.
+"Program" means the Original Program and Contributions.
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+2. GRANT OF RIGHTS
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare derivative works of, publicly display,
+ publicly perform, distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works, in source code and
+ object code form.
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent license
+ under Licensed Patents to make, use, sell, offer to sell, import and
+ otherwise transfer the Contribution of such Contributor, if any, in
+ source code and object code form. This patent license shall apply to the
+ combination of the Contribution and the Program if, at the time the
+ Contribution is added by the Contributor, such addition of the
+ Contribution causes such combination to be covered by the Licensed
+ Patents. The patent license shall not apply to any other combinations
+ which include the Contribution. No hardware per se is licensed
+ hereunder.
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity. Each
+ Contributor disclaims any liability to Recipient for claims brought by
+ any other entity based on infringement of intellectual property rights
+ or otherwise. As a condition to exercising the rights and licenses
+ granted hereunder, each Recipient hereby assumes sole responsibility to
+ secure any other intellectual property rights needed, if any. For
+ example, if a third party patent license is required to allow Recipient
+ to distribute the Program, it is Recipient's responsibility to acquire
+ that license before distributing the Program.
+ d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+3. REQUIREMENTS
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+ a) it complies with the terms and conditions of this Agreement; and
+ b) its license agreement:
+ i) effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or conditions
+ of title and non-infringement, and implied warranties or conditions of
+ merchantability and fitness for a particular purpose;
+ ii) effectively excludes on behalf of all Contributors all liability for
+ damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits;
+ iii) states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party; and
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+ a) it must be made available under this Agreement; and
+ b) a copy of this Agreement must be included with each copy of the
+ Program.
+Each Contributor must include the following in a conspicuous location in
+the Program:
+ Copyright © {date here}, International Business Machines Corporation and
+ others. All Rights Reserved.
+In addition, each Contributor must identify itself as the originator of
+its Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+4. COMMERCIAL DISTRIBUTION
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a
+commercial product offering, such Contributor ("Commercial Contributor")
+hereby agrees to defend and indemnify every other Contributor
+("Indemnified Contributor") against any losses, damages and costs
+(collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor
+in connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or
+Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must: a)
+promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance claims,
+or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under
+this section, the Commercial Contributor would have to defend claims
+against the other Contributors related to those performance claims and
+warranties, and if a court requires any other Contributor to pay any
+damages as a result, the Commercial Contributor must pay those damages.
+5. NO WARRANTY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
+EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
+CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
+the appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations.
+6. DISCLAIMER OF LIABILITY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION
+OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+7. GENERAL
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by
+the parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+If Recipient institutes patent litigation against a Contributor with
+respect to a patent applicable to software (including a cross-claim or
+counterclaim in a lawsuit), then any patent licenses granted by that
+Contributor to such Recipient under this Agreement shall terminate as of
+the date such litigation is filed. In addition, If Recipient institutes
+patent litigation against any entity (including a cross-claim or
+counterclaim in a lawsuit) alleging that the Program itself (excluding
+combinations of the Program with other software or hardware) infringes
+such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and
+does not cure such failure in a reasonable period of time after becoming
+aware of such noncompliance. If all Recipient's rights under this
+Agreement terminate, Recipient agrees to cease use and distribution of the
+Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient
+relating to the Program shall continue and survive.
+IBM may publish new versions (including revisions) of this Agreement from
+time to time. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions) may
+always be distributed subject to the version of the Agreement under which
+it was received. In addition, after a new version of the Agreement is
+published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. No one other than IBM has the right
+to modify this Agreement. Except as expressly stated in Sections 2(a) and
+2(b) above, Recipient receives no rights or licenses to the intellectual
+property of any Contributor under this Agreement, whether expressly, by
+implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than
+one year after the cause of action arose. Each party waives its rights to
+a jury trial in any resulting litigation.
diff --git a/ASF_20_SRC_AUTO/legal/log4j-1.2.8.jar.license.txt b/ASF_20_SRC_AUTO/legal/log4j-1.2.8.jar.license.txt
new file mode 100644
index 0000000..007db57
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/log4j-1.2.8.jar.license.txt
@@ -0,0 +1,48 @@
+/*
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/logkit-1.2.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/logkit-1.2.2.jar.license.txt
new file mode 100644
index 0000000..b360565
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/logkit-1.2.2.jar.license.txt
@@ -0,0 +1,50 @@
+/*
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "LogKit", "Jakarta" and "Apache Software Foundation" must not
+ be used to endorse or promote products derived from this software without
+ prior written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+*/
diff --git a/ASF_20_SRC_AUTO/legal/lucene-1.3-final.jar.license.txt b/ASF_20_SRC_AUTO/legal/lucene-1.3-final.jar.license.txt
new file mode 100644
index 0000000..388a2f0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/lucene-1.3-final.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Lucene" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache Lucene", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/pizza-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/pizza-1.1.jar.license.txt
new file mode 100644
index 0000000..9a6d60f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/pizza-1.1.jar.license.txt
@@ -0,0 +1,114 @@
+The Artistic License
+Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to
+make reasonable modifications.
+
+Definitions:
+
+"Package" refers to the collection of files distributed by the
+Copyright Holder, and derivatives of that collection of files created
+through textual modification.
+
+"Standard Version" refers to such a Package if it has not been
+modified, or has been modified in accordance with the wishes of the
+Copyright Holder.
+
+"Copyright Holder" is whoever is named in the copyright or copyrights
+for the package.
+
+"You" is you, if you're thinking about copying or distributing this
+Package.
+
+"Reasonable copying fee" is whatever you can justify on the basis of
+media cost, duplication charges, time of people involved, and so
+on. (You will not be required to justify it to the Copyright Holder,
+but only to the computing community at large as a market that must
+bear the fee.)
+
+"Freely Available" means that no fee is charged for the item itself,
+though there may be fees involved in handling the item. It also means
+that recipients of the item may redistribute it under the same
+conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of
+ the Standard Version of this Package without restriction, provided
+ that you duplicate all of the original copyright notices and
+ associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+ derived from the Public Domain or from the Copyright Holder. A
+ Package modified in such a way shall still be considered the
+ Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way,
+ provided that you insert a prominent notice in each changed file
+ stating how and when you changed that file, and provided that you
+ do at least ONE of the following:
+
+a) place your modifications in the Public Domain or otherwise make
+them Freely Available, such as by posting said modifications to Usenet
+or an equivalent medium, or placing the modifications on a major
+archive site such as ftp.uu.net, or by allowing the Copyright Holder
+to include your modifications in the Standard Version of the Package.
+
+b) use the modified Package only within your corporation or
+organization.
+
+c) rename any non-standard executables so the names do not conflict
+with standard executables, which must also be provided, and provide a
+separate manual page for each non-standard executable that clearly
+documents how it differs from the Standard Version.
+
+d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+ executable form, provided that you do at least ONE of the
+ following:
+
+a) distribute a Standard Version of the executables and library files,
+together with instructions (in the manual page or equivalent) on where
+to get the Standard Version.
+
+b) accompany the distribution with the machine-readable source of the
+Package with your modifications.
+
+c) accompany any non-standard executables with their corresponding
+Standard Version executables, giving the non-standard executables
+non-standard names, and clearly documenting the differences in manual
+pages (or equivalent), together with instructions on where to get the
+Standard Version.
+
+d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of
+ this Package. You may charge any fee you choose for support of this
+ Package. You may not charge a fee for this Package itself. However,
+ you may distribute this Package in aggregate with other (possibly
+ commercial) programs as part of a larger (possibly commercial)
+ software distribution provided that you do not advertise this
+ Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as
+ output from the programs of this Package do not automatically fall
+ under the copyright of this Package, but belong to whomever
+ generated them, and may be sold commercially, and may be aggregated
+ with this Package.
+
+7. C or perl or any other language subroutines supplied by you and
+ linked into this Package shall not be considered part of this
+ Package.
+
+8. The name of the Copyright Holder may not be used to endorse or
+ promote products derived from this software without specific prior
+ written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
+ OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/ASF_20_SRC_AUTO/legal/pluto-20040121.jar.license.txt b/ASF_20_SRC_AUTO/legal/pluto-20040121.jar.license.txt
new file mode 100644
index 0000000..394b4af
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/pluto-20040121.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Pluto" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache Pluto", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/poi-2.5-final-20040302.jar.license.txt b/ASF_20_SRC_AUTO/legal/poi-2.5-final-20040302.jar.license.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/poi-2.5-final-20040302.jar.license.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/ASF_20_SRC_AUTO/legal/portlet-api-20040121.jar.license.txt b/ASF_20_SRC_AUTO/legal/portlet-api-20040121.jar.license.txt
new file mode 100644
index 0000000..394b4af
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/portlet-api-20040121.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Pluto" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache Pluto", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/qdox-1.3.jar.license.txt b/ASF_20_SRC_AUTO/legal/qdox-1.3.jar.license.txt
new file mode 100644
index 0000000..5ec0156
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/qdox-1.3.jar.license.txt
@@ -0,0 +1,52 @@
+QDox license as found at http://qdox.codehaus.org/license.html, May 6th, 2003
+
+/* ====================================================================
+ * The IronSmith Software License, Version 1.1
+ *
+ * (this license is derived and fully compatible with the Apache Software
+ * License - see http://www.apache.org/LICENSE.txt)
+ *
+ * Copyright (c) 2002 The IronSmith Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * IronSmith Project (http://www.ironsmith.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "IronSmith" and "The IronSmith Project"
+ * must not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact help@ironsmith.org.
+ *
+ * 5. Products derived from this software may not be called "IronSmith"
+ * or "QDox", nor may "IronSmith" or "QDox" appear in their
+ * name, without prior written permission of the IronSmith Project.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ */
diff --git a/ASF_20_SRC_AUTO/legal/quartz-1.3.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/quartz-1.3.2.jar.license.txt
new file mode 100644
index 0000000..c002145
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/quartz-1.3.2.jar.license.txt
@@ -0,0 +1,41 @@
+/*
+ * All source code, binaries, documentation and other files distributed
+ * with Quartz Enterprise Job Scheduler are subject to the following
+ * license terms, and are held under the following copyright,
+ * unless otherwise noted within the individual files.
+ *
+ */
+
+
+/*
+ * Copyright James House (c) 2001-2004
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *
+ * This product uses and includes within its distribution,
+ * software developed by the Apache Software Foundation
+ * (http://www.apache.org/)
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/rhino1.5r4-continuations-20040228.jar.license.txt b/ASF_20_SRC_AUTO/legal/rhino1.5r4-continuations-20040228.jar.license.txt
new file mode 100644
index 0000000..d6ceeba
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/rhino1.5r4-continuations-20040228.jar.license.txt
@@ -0,0 +1,472 @@
+ MOZILLA PUBLIC LICENSE
+ Version 1.1
+
+ ---------------
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+ combination of the Original Code and Modifications, in each case
+ including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+ hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be
+ distributed only under the terms of this License or a future version
+ of this License released under Section 6.1, and You must include a
+ copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this
+ License or the recipients' rights hereunder. However, You may include
+ an additional document offering the additional rights described in
+ Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+ made available in Source Code form under the terms of this License
+ either on the same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic
+ Distribution Mechanism, must remain available for at least twelve (12)
+ months after the date it initially became available, or at least six
+ (6) months after a subsequent version of that particular Modification
+ has been made available to such recipients. You are responsible for
+ ensuring that the Source Code version remains available even if the
+ Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+ file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that
+ the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the
+ Initial Developer in (a) the Source Code, and (b) in any notice in an
+ Executable version or related documentation in which You describe the
+ origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+ intellectual property rights is required to exercise the rights
+ granted by such Contributor under Sections 2.1 or 2.2,
+ Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If Contributor obtains such knowledge after
+ the Modification is made available as described in Section 3.2,
+ Contributor shall promptly modify the LEGAL file in all copies
+ Contributor makes available thereafter and shall take other steps
+ (such as notifying appropriate mailing lists or newsgroups)
+ reasonably calculated to inform those who received the Covered
+ Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+ interface and Contributor has knowledge of patent licenses which
+ are reasonably necessary to implement that API, Contributor must
+ also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely
+ to look for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described in
+ Exhibit A. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership
+ rights relating to Covered Code. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Code. However, You
+ may do so only on Your own behalf, and not on behalf of the Initial
+ Developer or any Contributor. You must make it absolutely clear than
+ any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code or ownership rights under a license of Your choice, which may
+ contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the recipient's
+ rights in the Source Code version from the rights set forth in this
+ License. If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred by
+ the Initial Developer or such Contributor as a result of any such
+ terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.4 and must
+ be included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+ and/or new versions of the License from time to time. Each version
+ will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms
+ of any subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable to
+ Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+ only do in order to apply it to code which is not already Covered Code
+ governed by this License), You must (a) rename Your license so that
+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+ "MPL", "NPL" or any confusingly similar phrase do not appear in your
+ license (except to note that your license differs from this License)
+ and (b) otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described in
+ Exhibit A shall not of themselves be deemed to be modifications of
+ this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom
+ You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate prospectively,
+ unless if within 60 days after receipt of notice You either: (i)
+ agree in writing to pay Participant a mutually agreeable reasonable
+ royalty for Your past and future use of Modifications made by such
+ Participant, or (ii) withdraw Your litigation claim with respect to
+ the Contributor Version against such Participant. If within 60 days
+ of notice, a reasonable royalty and payment arrangement are not
+ mutually agreed upon in writing by the parties or the litigation claim
+ is not withdrawn, the rights granted by Participant to You under
+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+ the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then
+ any rights granted to You by such Participant under Sections 2.1(b)
+ and 2.2(b) are revoked effective as of the date You first made, used,
+ sold, distributed, or had made, Modifications made by that
+ Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in
+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as such
+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+ all U.S. Government End Users acquire Covered Code with only those
+ rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions.
+ With respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the United
+ States of America, any litigation relating to this License shall be
+ subject to the jurisdiction of the Federal Courts of the Northern
+ District of California, with venue lying in Santa Clara County,
+ California, with the losing party responsible for costs, including
+ without limitation, court costs and reasonable attorneys' fees and
+ expenses. The application of the United Nations Convention on
+ Contracts for the International Sale of Goods is expressly excluded.
+ Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this
+ License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly,
+ out of its utilization of rights under this License and You agree to
+ work with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+ Developer permits you to utilize portions of the Covered Code under
+ Your choice of the NPL or the alternative licenses, if any, specified
+ by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+ Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+ Portions created by ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms
+ of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those
+ above. If you wish to allow use of your version of this file only
+ under the terms of the [____] License and not to allow others to use
+ your version of this file under the MPL, indicate your decision by
+ deleting the provisions above and replace them with the notice and
+ other provisions required by the [___] License. If you do not delete
+ the provisions above, a recipient may use your version of this file
+ under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+
+
+
diff --git a/ASF_20_SRC_AUTO/legal/servlet-2.3.jar.license.txt b/ASF_20_SRC_AUTO/legal/servlet-2.3.jar.license.txt
new file mode 100644
index 0000000..9bace83
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/servlet-2.3.jar.license.txt
@@ -0,0 +1,59 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ *
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
diff --git a/ASF_20_SRC_AUTO/legal/servlet_2_2.jar.license.txt b/ASF_20_SRC_AUTO/legal/servlet_2_2.jar.license.txt
new file mode 100644
index 0000000..9bace83
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/servlet_2_2.jar.license.txt
@@ -0,0 +1,59 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ *
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
diff --git a/ASF_20_SRC_AUTO/legal/slide-kernel-2.0b1-20040119.jar.license.txt b/ASF_20_SRC_AUTO/legal/slide-kernel-2.0b1-20040119.jar.license.txt
new file mode 100644
index 0000000..fb7c80c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/slide-kernel-2.0b1-20040119.jar.license.txt
@@ -0,0 +1,56 @@
+/* ========================================================================= *
+ * *
+ * The Apache Software License, Version 1.1 *
+ * *
+ * Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
+ * All rights reserved. *
+ * *
+ * ========================================================================= *
+ * *
+ * Redistribution and use in source and binary forms, with or without modi- *
+ * fication, are permitted provided that the following conditions are met: *
+ * *
+ * 1. Redistributions of source code must retain the above copyright notice *
+ * notice, this list of conditions and the following disclaimer. *
+ * *
+ * 2. Redistributions in binary form must reproduce the above copyright *
+ * notice, this list of conditions and the following disclaimer in the *
+ * documentation and/or other materials provided with the distribution. *
+ * *
+ * 3. The end-user documentation included with the redistribution, if any, *
+ * must include the following acknowlegement: *
+ * *
+ * "This product includes software developed by the Apache Software *
+ * Foundation <http://www.apache.org/>." *
+ * *
+ * Alternately, this acknowlegement may appear in the software itself, if *
+ * and wherever such third-party acknowlegements normally appear. *
+ * *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
+ * Foundation" must not be used to endorse or promote products derived *
+ * from this software without prior written permission. For written *
+ * permission, please contact <apache@apache.org>. *
+ * *
+ * 5. Products derived from this software may not be called "Apache" nor may *
+ * "Apache" appear in their names without prior written permission of the *
+ * Apache Software Foundation. *
+ * *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
+ * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+ * POSSIBILITY OF SUCH DAMAGE. *
+ * *
+ * ========================================================================= *
+ * *
+ * This software consists of voluntary contributions made by many indivi- *
+ * duals on behalf of the Apache Software Foundation. For more information *
+ * on the Apache Software Foundation, please see <http://www.apache.org/>. *
+ * *
+ * ========================================================================= */
diff --git a/ASF_20_SRC_AUTO/legal/slide-stores-2.0b1-20040119.jar.license.txt b/ASF_20_SRC_AUTO/legal/slide-stores-2.0b1-20040119.jar.license.txt
new file mode 100644
index 0000000..fb7c80c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/slide-stores-2.0b1-20040119.jar.license.txt
@@ -0,0 +1,56 @@
+/* ========================================================================= *
+ * *
+ * The Apache Software License, Version 1.1 *
+ * *
+ * Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
+ * All rights reserved. *
+ * *
+ * ========================================================================= *
+ * *
+ * Redistribution and use in source and binary forms, with or without modi- *
+ * fication, are permitted provided that the following conditions are met: *
+ * *
+ * 1. Redistributions of source code must retain the above copyright notice *
+ * notice, this list of conditions and the following disclaimer. *
+ * *
+ * 2. Redistributions in binary form must reproduce the above copyright *
+ * notice, this list of conditions and the following disclaimer in the *
+ * documentation and/or other materials provided with the distribution. *
+ * *
+ * 3. The end-user documentation included with the redistribution, if any, *
+ * must include the following acknowlegement: *
+ * *
+ * "This product includes software developed by the Apache Software *
+ * Foundation <http://www.apache.org/>." *
+ * *
+ * Alternately, this acknowlegement may appear in the software itself, if *
+ * and wherever such third-party acknowlegements normally appear. *
+ * *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
+ * Foundation" must not be used to endorse or promote products derived *
+ * from this software without prior written permission. For written *
+ * permission, please contact <apache@apache.org>. *
+ * *
+ * 5. Products derived from this software may not be called "Apache" nor may *
+ * "Apache" appear in their names without prior written permission of the *
+ * Apache Software Foundation. *
+ * *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
+ * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+ * POSSIBILITY OF SUCH DAMAGE. *
+ * *
+ * ========================================================================= *
+ * *
+ * This software consists of voluntary contributions made by many indivi- *
+ * duals on behalf of the Apache Software Foundation. For more information *
+ * on the Apache Software Foundation, please see <http://www.apache.org/>. *
+ * *
+ * ========================================================================= */
diff --git a/ASF_20_SRC_AUTO/legal/slide-webdavlib-20030711.jar.license.txt b/ASF_20_SRC_AUTO/legal/slide-webdavlib-20030711.jar.license.txt
new file mode 100644
index 0000000..fb7c80c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/slide-webdavlib-20030711.jar.license.txt
@@ -0,0 +1,56 @@
+/* ========================================================================= *
+ * *
+ * The Apache Software License, Version 1.1 *
+ * *
+ * Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
+ * All rights reserved. *
+ * *
+ * ========================================================================= *
+ * *
+ * Redistribution and use in source and binary forms, with or without modi- *
+ * fication, are permitted provided that the following conditions are met: *
+ * *
+ * 1. Redistributions of source code must retain the above copyright notice *
+ * notice, this list of conditions and the following disclaimer. *
+ * *
+ * 2. Redistributions in binary form must reproduce the above copyright *
+ * notice, this list of conditions and the following disclaimer in the *
+ * documentation and/or other materials provided with the distribution. *
+ * *
+ * 3. The end-user documentation included with the redistribution, if any, *
+ * must include the following acknowlegement: *
+ * *
+ * "This product includes software developed by the Apache Software *
+ * Foundation <http://www.apache.org/>." *
+ * *
+ * Alternately, this acknowlegement may appear in the software itself, if *
+ * and wherever such third-party acknowlegements normally appear. *
+ * *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
+ * Foundation" must not be used to endorse or promote products derived *
+ * from this software without prior written permission. For written *
+ * permission, please contact <apache@apache.org>. *
+ * *
+ * 5. Products derived from this software may not be called "Apache" nor may *
+ * "Apache" appear in their names without prior written permission of the *
+ * Apache Software Foundation. *
+ * *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
+ * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+ * POSSIBILITY OF SUCH DAMAGE. *
+ * *
+ * ========================================================================= *
+ * *
+ * This software consists of voluntary contributions made by many indivi- *
+ * duals on behalf of the Apache Software Foundation. For more information *
+ * on the Apache Software Foundation, please see <http://www.apache.org/>. *
+ * *
+ * ========================================================================= */
diff --git a/ASF_20_SRC_AUTO/legal/slide-webdavservlet-2.0b1-20040119.jar.license.txt b/ASF_20_SRC_AUTO/legal/slide-webdavservlet-2.0b1-20040119.jar.license.txt
new file mode 100644
index 0000000..fb7c80c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/slide-webdavservlet-2.0b1-20040119.jar.license.txt
@@ -0,0 +1,56 @@
+/* ========================================================================= *
+ * *
+ * The Apache Software License, Version 1.1 *
+ * *
+ * Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
+ * All rights reserved. *
+ * *
+ * ========================================================================= *
+ * *
+ * Redistribution and use in source and binary forms, with or without modi- *
+ * fication, are permitted provided that the following conditions are met: *
+ * *
+ * 1. Redistributions of source code must retain the above copyright notice *
+ * notice, this list of conditions and the following disclaimer. *
+ * *
+ * 2. Redistributions in binary form must reproduce the above copyright *
+ * notice, this list of conditions and the following disclaimer in the *
+ * documentation and/or other materials provided with the distribution. *
+ * *
+ * 3. The end-user documentation included with the redistribution, if any, *
+ * must include the following acknowlegement: *
+ * *
+ * "This product includes software developed by the Apache Software *
+ * Foundation <http://www.apache.org/>." *
+ * *
+ * Alternately, this acknowlegement may appear in the software itself, if *
+ * and wherever such third-party acknowlegements normally appear. *
+ * *
+ * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
+ * Foundation" must not be used to endorse or promote products derived *
+ * from this software without prior written permission. For written *
+ * permission, please contact <apache@apache.org>. *
+ * *
+ * 5. Products derived from this software may not be called "Apache" nor may *
+ * "Apache" appear in their names without prior written permission of the *
+ * Apache Software Foundation. *
+ * *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
+ * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+ * POSSIBILITY OF SUCH DAMAGE. *
+ * *
+ * ========================================================================= *
+ * *
+ * This software consists of voluntary contributions made by many indivi- *
+ * duals on behalf of the Apache Software Foundation. For more information *
+ * on the Apache Software Foundation, please see <http://www.apache.org/>. *
+ * *
+ * ========================================================================= */
diff --git a/ASF_20_SRC_AUTO/legal/util.concurrent-1.3.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/util.concurrent-1.3.2.jar.license.txt
new file mode 100644
index 0000000..271c15a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/util.concurrent-1.3.2.jar.license.txt
@@ -0,0 +1,5 @@
+Public Domain.
+
+Doug Lea's concurrency utils come with no warranty, nor ristrictions
+to use.
+
diff --git a/ASF_20_SRC_AUTO/legal/velocity-1.4-dev-20030301.jar.license.txt b/ASF_20_SRC_AUTO/legal/velocity-1.4-dev-20030301.jar.license.txt
new file mode 100644
index 0000000..e92e50e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/velocity-1.4-dev-20030301.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowledgement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Velocity", and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Velocity" nor may "Apache" appear in their names without prior
+ * written permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
diff --git a/ASF_20_SRC_AUTO/legal/wsdl4j-1.4.jar.license.txt b/ASF_20_SRC_AUTO/legal/wsdl4j-1.4.jar.license.txt
new file mode 100644
index 0000000..9d7ce63
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/wsdl4j-1.4.jar.license.txt
@@ -0,0 +1,90 @@
+Common Public License
+
+Common Public License Version 0.5
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
diff --git a/ASF_20_SRC_AUTO/legal/xalan-2.6.0.jar.license.txt b/ASF_20_SRC_AUTO/legal/xalan-2.6.0.jar.license.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xalan-2.6.0.jar.license.txt
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/ASF_20_SRC_AUTO/legal/xercesImpl-2.6.2.jar.license.txt b/ASF_20_SRC_AUTO/legal/xercesImpl-2.6.2.jar.license.txt
new file mode 100644
index 0000000..21156a6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xercesImpl-2.6.2.jar.license.txt
@@ -0,0 +1,55 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, Lotus
+ * Development Corporation., http://www.lotus.com. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/xindice-1.1b3.jar.license.txt b/ASF_20_SRC_AUTO/legal/xindice-1.1b3.jar.license.txt
new file mode 100644
index 0000000..a8c3bd6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xindice-1.1b3.jar.license.txt
@@ -0,0 +1,56 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xindice" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999-2001, The dbXML
+ * Group, L.L.C., http://www.dbxmlgroup.com. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/xml-apis.jar.license.txt b/ASF_20_SRC_AUTO/legal/xml-apis.jar.license.txt
new file mode 100644
index 0000000..b9f6031
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xml-apis.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/xml-commons-resolver-1.1.jar.license.txt b/ASF_20_SRC_AUTO/legal/xml-commons-resolver-1.1.jar.license.txt
new file mode 100644
index 0000000..b9f6031
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xml-commons-resolver-1.1.jar.license.txt
@@ -0,0 +1,53 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/ASF_20_SRC_AUTO/legal/xmldb-api-20021118.jar.license.txt b/ASF_20_SRC_AUTO/legal/xmldb-api-20021118.jar.license.txt
new file mode 100644
index 0000000..3c8a53c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xmldb-api-20021118.jar.license.txt
@@ -0,0 +1,47 @@
+Copyright (c) 2000-2001 The XML:DB Initiative. All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+3. The end-user documentation included with the redistribution,
+ if any, must include the following acknowledgment:
+ "This product includes software developed by the
+ XML:DB Initiative (http://www.xmldb.org/)."
+ Alternately, this acknowledgment may appear in the software itself,
+ if and wherever such third-party acknowledgments normally appear.
+
+4. The name "XML:DB Initiative" must not be used to endorse or
+ promote products derived from this software without prior written
+ permission. For written permission, please contact info@xmldb.org.
+
+5. Products derived from this software may not be called "XML:DB",
+ nor may "XML:DB" appear in their name, without prior written
+ permission of the XML:DB Initiative.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+====================================================================
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the XML:DB Initiative. For more information
+on the XML:DB Initiative, please see <http://www.xmldb.org/>.
diff --git a/ASF_20_SRC_AUTO/legal/xmldb-common-20021220.jar.license.txt b/ASF_20_SRC_AUTO/legal/xmldb-common-20021220.jar.license.txt
new file mode 100644
index 0000000..3c8a53c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xmldb-common-20021220.jar.license.txt
@@ -0,0 +1,47 @@
+Copyright (c) 2000-2001 The XML:DB Initiative. All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+3. The end-user documentation included with the redistribution,
+ if any, must include the following acknowledgment:
+ "This product includes software developed by the
+ XML:DB Initiative (http://www.xmldb.org/)."
+ Alternately, this acknowledgment may appear in the software itself,
+ if and wherever such third-party acknowledgments normally appear.
+
+4. The name "XML:DB Initiative" must not be used to endorse or
+ promote products derived from this software without prior written
+ permission. For written permission, please contact info@xmldb.org.
+
+5. Products derived from this software may not be called "XML:DB",
+ nor may "XML:DB" appear in their name, without prior written
+ permission of the XML:DB Initiative.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+====================================================================
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the XML:DB Initiative. For more information
+on the XML:DB Initiative, please see <http://www.xmldb.org/>.
diff --git a/ASF_20_SRC_AUTO/legal/xmldb-xupdate-20021220.jar.license.txt b/ASF_20_SRC_AUTO/legal/xmldb-xupdate-20021220.jar.license.txt
new file mode 100644
index 0000000..3c8a53c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xmldb-xupdate-20021220.jar.license.txt
@@ -0,0 +1,47 @@
+Copyright (c) 2000-2001 The XML:DB Initiative. All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+3. The end-user documentation included with the redistribution,
+ if any, must include the following acknowledgment:
+ "This product includes software developed by the
+ XML:DB Initiative (http://www.xmldb.org/)."
+ Alternately, this acknowledgment may appear in the software itself,
+ if and wherever such third-party acknowledgments normally appear.
+
+4. The name "XML:DB Initiative" must not be used to endorse or
+ promote products derived from this software without prior written
+ permission. For written permission, please contact info@xmldb.org.
+
+5. Products derived from this software may not be called "XML:DB",
+ nor may "XML:DB" appear in their name, without prior written
+ permission of the XML:DB Initiative.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+====================================================================
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the XML:DB Initiative. For more information
+on the XML:DB Initiative, please see <http://www.xmldb.org/>.
diff --git a/ASF_20_SRC_AUTO/legal/xmlunit0.8.jar.license.txt b/ASF_20_SRC_AUTO/legal/xmlunit0.8.jar.license.txt
new file mode 100644
index 0000000..0a1439f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xmlunit0.8.jar.license.txt
@@ -0,0 +1,35 @@
+/*
+******************************************************************
+Copyright (c) 2001, Jeff Martin, Tim Bacon
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of the xmlunit.sourceforge.net nor the names
+ of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+******************************************************************
+*/
diff --git a/ASF_20_SRC_AUTO/legal/xreporter-expression-20030725.jar.license.txt b/ASF_20_SRC_AUTO/legal/xreporter-expression-20030725.jar.license.txt
new file mode 100644
index 0000000..ee20562
--- /dev/null
+++ b/ASF_20_SRC_AUTO/legal/xreporter-expression-20030725.jar.license.txt
@@ -0,0 +1,48 @@
+============================================================================
+The xReporter License, based on the Apache Software License 1.1
+============================================================================
+
+Copyright (C) 2002 Outerthought bvba and Schaubroeck nv. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software developed
+ by Outerthought and Schaubroeck http://xreporter.cocoondev.org/" This
+ acknowledgment must also appear in the software itself, if and wherever such
+ third-party acknowledgments normally appear: an accompanying README or LICENSE
+ file and/or startup splash screen.
+
+4. The names xReporter, Outerthought and Schaubroeck must not be used to
+ endorse or promote products derived from this software without prior written
+ permission. For written permission, please contact
+ xreporter-license@outerthought.org.
+
+5. Products derived from this software may not be called xReporter,
+ Outerthought or Schaubroeck, nor may xReporter, Outerthought or Schaubroeck
+ appear in their name, without prior written permission of Outerthought and
+ Schaubroeck.
+
+6. Outerthought and Schaubroeck reserve the right to change the terms and
+ conditions of this license at any time without any prior notice, including the
+ donation of this software to an Open Source Community or Foundation.
+
+
+THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+OUTERTHOUGHT, SCHAUBROECK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ASF_20_SRC_AUTO/lib/core/avalon-framework-api-4.1.5.jar b/ASF_20_SRC_AUTO/lib/core/avalon-framework-api-4.1.5.jar
new file mode 100644
index 0000000..1d3d8ce
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/avalon-framework-api-4.1.5.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/avalon-framework-impl-4.1.5.jar b/ASF_20_SRC_AUTO/lib/core/avalon-framework-impl-4.1.5.jar
new file mode 100644
index 0000000..3281c26
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/avalon-framework-impl-4.1.5.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-cli-1.0.jar b/ASF_20_SRC_AUTO/lib/core/commons-cli-1.0.jar
new file mode 100644
index 0000000..22a004e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-cli-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-collections-3.0.jar b/ASF_20_SRC_AUTO/lib/core/commons-collections-3.0.jar
new file mode 100644
index 0000000..5cc4f90
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-collections-3.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-httpclient-2.0-final.jar b/ASF_20_SRC_AUTO/lib/core/commons-httpclient-2.0-final.jar
new file mode 100644
index 0000000..8bd4a24
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-httpclient-2.0-final.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-jexl-1.0-beta-1-20040113.jar b/ASF_20_SRC_AUTO/lib/core/commons-jexl-1.0-beta-1-20040113.jar
new file mode 100755
index 0000000..4dcb1d0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-jexl-1.0-beta-1-20040113.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-jxpath-20030909.jar b/ASF_20_SRC_AUTO/lib/core/commons-jxpath-20030909.jar
new file mode 100644
index 0000000..cc673c2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-jxpath-20030909.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/commons-lang-2.0.jar b/ASF_20_SRC_AUTO/lib/core/commons-lang-2.0.jar
new file mode 100644
index 0000000..c8a2870
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/commons-lang-2.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-component-1.2.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-component-1.2.jar
new file mode 100644
index 0000000..55a3ac8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-component-1.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-event-api-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-event-api-1.1.jar
new file mode 100644
index 0000000..22070d8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-event-api-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-event-impl-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-event-impl-1.1.jar
new file mode 100644
index 0000000..6a6409e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-event-impl-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-i18n-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-i18n-1.1.jar
new file mode 100644
index 0000000..8905dc1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-i18n-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-1.0.jar
new file mode 100644
index 0000000..5dc1f76
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-1.0.jar
new file mode 100644
index 0000000..5f33dfb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-interfaces-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-interfaces-1.0.jar
new file mode 100644
index 0000000..3d8943b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-instrument-manager-interfaces-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-io-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-io-1.1.jar
new file mode 100644
index 0000000..c596eb0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-io-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-logger-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-logger-1.1.jar
new file mode 100644
index 0000000..b2323cd
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-logger-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-monitor-1.0.2.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-monitor-1.0.2.jar
new file mode 100644
index 0000000..3b4ad2c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-monitor-1.0.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-naming-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-naming-1.0.jar
new file mode 100644
index 0000000..e791508
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-naming-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-pool-1.2.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-pool-1.2.jar
new file mode 100644
index 0000000..128db61
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-pool-1.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-sourceresolve-1.1.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-sourceresolve-1.1.jar
new file mode 100644
index 0000000..cfd03a2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-sourceresolve-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-store-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-store-1.0.jar
new file mode 100644
index 0000000..fbf03a8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-store-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-testcase-1.2.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-testcase-1.2.jar
new file mode 100644
index 0000000..2a37446
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-testcase-1.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/excalibur-xmlutil-1.0.jar b/ASF_20_SRC_AUTO/lib/core/excalibur-xmlutil-1.0.jar
new file mode 100644
index 0000000..c341024
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/excalibur-xmlutil-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/jakarta-regexp-1.3.jar b/ASF_20_SRC_AUTO/lib/core/jakarta-regexp-1.3.jar
new file mode 100755
index 0000000..d653a38
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/jakarta-regexp-1.3.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/javacApi-0.9.jar b/ASF_20_SRC_AUTO/lib/core/javacApi-0.9.jar
new file mode 100755
index 0000000..97b54ca
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/javacApi-0.9.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/javacImpl-0.9.jar b/ASF_20_SRC_AUTO/lib/core/javacImpl-0.9.jar
new file mode 100755
index 0000000..2f76245
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/javacImpl-0.9.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/jisp-2.5.1.jar b/ASF_20_SRC_AUTO/lib/core/jisp-2.5.1.jar
new file mode 100644
index 0000000..754ee0f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/jisp-2.5.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/logkit-1.2.2.jar b/ASF_20_SRC_AUTO/lib/core/logkit-1.2.2.jar
new file mode 100644
index 0000000..7032402
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/logkit-1.2.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/rhino1.5r4-continuations-20040228.jar b/ASF_20_SRC_AUTO/lib/core/rhino1.5r4-continuations-20040228.jar
new file mode 100755
index 0000000..fccfecf
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/rhino1.5r4-continuations-20040228.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/util.concurrent-1.3.2.jar b/ASF_20_SRC_AUTO/lib/core/util.concurrent-1.3.2.jar
new file mode 100644
index 0000000..8819d85
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/util.concurrent-1.3.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/core/xml-commons-resolver-1.1.jar b/ASF_20_SRC_AUTO/lib/core/xml-commons-resolver-1.1.jar
new file mode 100644
index 0000000..073d789
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/core/xml-commons-resolver-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/endorsed/xalan-2.6.0.jar b/ASF_20_SRC_AUTO/lib/endorsed/xalan-2.6.0.jar
new file mode 100644
index 0000000..8bdf6ff
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/endorsed/xalan-2.6.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/endorsed/xercesImpl-2.6.2.jar b/ASF_20_SRC_AUTO/lib/endorsed/xercesImpl-2.6.2.jar
new file mode 100644
index 0000000..f0fb0e8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/endorsed/xercesImpl-2.6.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/endorsed/xml-apis.jar b/ASF_20_SRC_AUTO/lib/endorsed/xml-apis.jar
new file mode 100644
index 0000000..2dd8377
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/endorsed/xml-apis.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/jars.xml b/ASF_20_SRC_AUTO/lib/jars.xml
new file mode 100644
index 0000000..a0619ac
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/jars.xml
@@ -0,0 +1,1065 @@
+<?xml version="1.0"?>
+
+<!--+
+ | CVS $Id: jars.xml,v 1.182 2004/03/04 07:01:56 antonio Exp $
+ |
+ | Add an entry for each jar file used by Cocoon, following the other entries.
+ | Please ensure that you use a version number or datestamp in the jar filename.
+ |
+ +-->
+
+<jars>
+ <file>
+ <title>Doug Lea's Concurrent Utilities</title>
+ <description>
+ The concurrency management primitives that will be the
+ foundation of JDK 1.5 concurrency management.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/util.concurrent-1.3.2.jar</lib>
+ <homepage>http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur DataSource</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>databases/lib/excalibur-datasource-1.1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons CLI</title>
+ <description>
+ Part of jakarta-commons, it's a package that
+ is used to manage commandline options.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/commons-cli-1.0.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/cli/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Component</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-component-1.2.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Testcase</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-testcase-1.2.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Event</title>
+ <description>
+ This is the Excalibur Event package which includes event queues,
+ asynchronous command processing, and the interfaces to support
+ event based programming.
+ </description>
+ <used-by>Cocoon Flow</used-by>
+ <lib>core/excalibur-event-api-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+ <file>
+ <title>Avalon Excalibur Event</title>
+ <description>
+ This is the Excalibur Event package which includes event queues,
+ asynchronous command processing, and the interfaces to support
+ event based programming.
+ </description>
+ <used-by>Cocoon Flow</used-by>
+ <lib>core/excalibur-event-impl-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur I18n</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-i18n-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/i18n/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Instrument</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-instrument-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Instrument Manager</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-instrument-manager-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Instrument Manager Interfaces</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-instrument-manager-interfaces-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur IO</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-io-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Logger</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-logger-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Monitor</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-monitor-1.0.2.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Naming</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-naming-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Pool</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-pool-1.2.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur SourceResolve</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-sourceresolve-1.1.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Store</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-store-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur XMLUtil</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/excalibur-xmlutil-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Framework</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/avalon-framework-api-4.1.5.jar</lib>
+ <homepage>http://avalon.apache.org/framework/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Framework - Implementation</title>
+ <description>
+ Part of avalon, it is a set of classes and patterns that
+ support high level server development.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>core/avalon-framework-impl-4.1.5.jar</lib>
+ <homepage>http://avalon.apache.org/framework/</homepage>
+ </file>
+
+ <!--+
+ | If you update the AltRMI server libraries, make sure
+ | you also update the AltRMI client libraries in
+ | tools/instrumentation/lib !!
+ +-->
+ <file>
+ <title>Avalon AltRMI Common</title>
+ <description>
+ Part of avalon for communicating with a remote server.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/altrmi-common-0.9.2.jar</lib>
+ <homepage>http://incubator.apache.org/projects/altrmi/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon AltRMI Server implementation</title>
+ <description>
+ Part of avalon for communicating with a remote server.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/altrmi-server-impl-0.9.2.jar</lib>
+ <homepage>http://incubator.apache.org/projects/altrmi/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon AltRMI Server interfaces</title>
+ <description>
+ Part of avalon for communicating with a remote server.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/altrmi-server-interfaces-0.9.2.jar</lib>
+ <homepage>http://incubator.apache.org/projects/altrmi/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon AltRMI Registry</title>
+ <description>
+ Part of avalon for communicating with a remote server.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/altrmi-registry-0.9.2.jar</lib>
+ <homepage>http://incubator.apache.org/projects/altrmi/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Collections</title>
+ <description>Common implementations of collection classes.</description>
+ <used-by>Cocoon, OJB</used-by>
+ <lib>core/commons-collections-3.0.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/collections/index.html</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Regexp</title>
+ <description>
+ Regexp is a Java Regular Expression package that was graciously
+ donated to the Apache Software Foundation by Jonathan Locke.
+ </description>
+ <used-by>sitemap matchers</used-by>
+ <lib>core/jakarta-regexp-1.3.jar</lib>
+ <homepage>http://jakarta.apache.org/regexp/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Logkit</title>
+ <description>
+ avalon-logkit is a logging toolkit designed for secure
+ performance oriented logging in applications.
+ </description>
+ <used-by>Cocoon logging</used-by>
+ <lib>core/logkit-1.2.2.jar</lib>
+ <homepage>http://avalon.apache.org/logkit/</homepage>
+ </file>
+
+ <file>
+ <title>The XSLT processor</title>
+ <description>
+ Xalan is an XSLT processor that fully supports the W3C specs.
+ Includes XSLTC.
+ </description>
+ <ant-target>jar</ant-target>
+ <used-by>Cocoon</used-by>
+ <lib>endorsed/xalan-2.6.0.jar</lib>
+ <homepage>http://xml.apache.org/xalan-j/</homepage>
+ </file>
+
+ <file>
+ <title>The XML parser</title>
+ <description>Xerces is an XML parser.</description>
+ <used-by>Cocoon</used-by>
+ <ant-target>jars</ant-target>
+ <lib>endorsed/xercesImpl-2.6.2.jar</lib>
+ <homepage>http://xml.apache.org/xerces2-j/</homepage>
+ </file>
+
+ <file>
+ <title>The XML APIs</title>
+ <description>
+ JAXP, DOM and SAX interfaces.
+ These are the common interfaces for XML processing.
+ </description>
+ <ant-target>external</ant-target>
+ <used-by>Cocoon</used-by>
+ <lib>endorsed/xml-apis.jar</lib>
+ <homepage>http://xml.apache.org/commons/</homepage>
+ </file>
+
+ <file>
+ <title>Batik</title>
+ <description>
+ Batik is a Java based toolkit for applications which handle images in
+ the Scalable Vector Graphics (SVG) format for various purposes, such as
+ viewing, generation or manipulation.</description>
+ <used-by>SVG serializer (batik block)</used-by>
+ <lib>batik/lib/batik-all-1.5.jar</lib>
+ <homepage>http://xml.apache.org/batik/</homepage>
+ </file>
+
+ <file>
+ <title>BSF scripting framework</title>
+ <description>
+ The Bean Scripting Framework (BSF) is an architecture for
+ incorporating scripting into, and enabling scripting against, Java
+ applications and applets. Using BSF, an application can use scripting,
+ and become scriptable, against any BSF-supported language. When BSF
+ supports additional languages, the application will automatically
+ support the additional languages.
+ </description>
+ <used-by>Script generator, script action (bsf block)</used-by>
+ <lib>bsf/lib/bsf-2.2.jar</lib>
+ <homepage>http://oss.software.ibm.com/developerworks/projects/bsf</homepage>
+ </file>
+
+ <file>
+ <title>Device capabilities</title>
+ <description>
+ Open Source Delivery Context Java Library supporting CC/PP and UAProf.
+ Different web-enabled devices have different input, output, hardware,
+ software, network and browser capabilities. In order for a web server or
+ web-based application to provide optimized content to different clients
+ it requires a description of the capabilities of the client known as the
+ delivery context.
+ </description>
+ <used-by>DELI (deli block)</used-by>
+ <lib>deli/lib/deli-0.9.8.jar</lib>
+ <homepage>http://delicon.sourceforge.net</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons HttpClient</title>
+ <description>
+ Although the java.net package provides basic support for accessing
+ resources via HTTP, it doesn't provide the full flexibility or
+ functionality needed by many applications. The Jakarta Commons HttpClient
+ component seeks to fill this void by providing an efficient, up-to-date,
+ and feature-rich package implementing the client side of the most recent
+ HTTP standards and recommendations.
+ </description>
+ <used-by>SOAP logicsheet, WebServiceProxyGenerator, HttpProxyGenerator</used-by>
+ <lib>core/commons-httpclient-2.0-final.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/httpclient/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Logging</title>
+ <description>
+ The Logging package is an ultra-thin bridge between different logging libraries.
+ </description>
+ <used-by>Jakarta Commons HttpClient, Chaperon</used-by>
+ <lib>optional/commons-logging-1.0.3.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/logging.html</homepage>
+ </file>
+
+ <file>
+ <title>iText XML to PDF/HTML/RTF converter (Renderer)</title>
+ <description>iText reads XML documents and turns them into PDFs</description>
+ <used-by>iText serializer</used-by>
+ <lib>itext/lib/itext-1.02.jar</lib>
+ <homepage>http://www.lowagie.com/iText/</homepage>
+ </file>
+
+ <file>
+ <title>iText XML to PDF/HTML/RTF converter (XML APIs)</title>
+ <description>iText reads XML documents and turns them into PDFs</description>
+ <used-by>iText serializer</used-by>
+ <lib>itext/lib/itext-xml-1.02.jar</lib>
+ <homepage>http://www.lowagie.com/iText/</homepage>
+ </file>
+
+ <file>
+ <title>XML FO processor</title>
+ <description>
+ FOP is a Java application that reads a formatting object tree conforming to
+ the XSL recommendation and then turns it into a PDF document.
+ </description>
+ <used-by>FOP serializer (fop block)</used-by>
+ <lib>fop/lib/fop-0.20.5.jar</lib>
+ <homepage>http://xml.apache.org/fop/</homepage>
+ </file>
+
+ <file>
+ <title>XSL-FO to RTF converter</title>
+ <description>
+ jfor is a Java application that reads XSL-FO documents
+ and converts them to RTF format, allowing them to be loaded in
+ common wordprocessors.
+ </description>
+ <used-by>RTF serializer (jfor block)</used-by>
+ <lib>jfor/lib/jfor-0.7.1.jar</lib>
+ <homepage>http://www.jfor.org</homepage>
+ </file>
+
+ <file>
+ <title>Simple SQL database</title>
+ <description>
+ hsqldb is a relational database engine written in Java, with a JDBC
+ driver, supporting a subset of ANSI-92 SQL. It offers a small, fast
+ database engine which offers both in memory and disk based tables.
+ </description>
+ <used-by>Cocoon samples webapp</used-by>
+ <lib>hsqldb/lib/hsqldb-1.7.1.jar</lib>
+ <homepage>http://hsqldb.sourceforge.net/</homepage>
+ </file>
+
+ <file>
+ <title>Create proprietary file formats</title>
+ <description>
+ The POI project consists of APIs for manipulating various file formats
+ based upon Microsoft's OLE 2 Compound Document format using pure Java.
+ </description>
+ <used-by>MS Excel serializer (poi block)</used-by>
+ <lib>poi/lib/poi-2.5-final-20040302.jar</lib>
+ <homepage>http://jakarta.apache.org/poi/</homepage>
+ </file>
+
+ <file>
+ <title>Jena RDF framework</title>
+ <description>Jena is a java API for manipulating RDF models.</description>
+ <used-by>DELI (deli block)</used-by>
+ <lib>deli/lib/jena-2.0.0.jar</lib>
+ <homepage>http://www.hpl.hp.com/semweb/jena.htm</homepage>
+ </file>
+
+ <file>
+ <title>ICU4J International Components for Unicode framework</title>
+ <description>The International Components for Unicode (ICU) library
+ provides robust and full-featured Unicode services on a wide variety
+ of platforms. </description>
+ <used-by>DELI (deli block)</used-by>
+ <lib>deli/lib/icu4j.jar</lib>
+ <homepage>http://oss.software.ibm.com/icu4j/index.html</homepage>
+ </file>
+
+
+ <file>
+ <title>JISP</title>
+ <description>Java Indexed Serialization Package</description>
+ <used-by>JISP file storage</used-by>
+ <lib>core/jisp-2.5.1.jar</lib>
+ <homepage>http://www.coyotegulch.com/jisp/</homepage>
+ </file>
+
+ <file>
+ <title>JCS</title>
+ <description>Java Caching System</description>
+ <used-by>JCS Store</used-by>
+ <lib>scratchpad/lib/jcs-1.0-dev-20040303.jar</lib>
+ <homepage>http://jakarta.apache.org/turbine/jcs</homepage>
+ </file>
+
+ <file>
+ <title>Java Formatter</title>
+ <description>
+ This program formats Java code with consistent indentation and so
+ forth, to make it easier to read and maintain.
+ </description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/jstyle.jar</lib>
+ <homepage>http://astyle.sourceforge.net/</homepage>
+ </file>
+
+ <file>
+ <title>Transform HTML to XML</title>
+ <description>Tidy is a HTML syntax checker and pretty printer.</description>
+ <used-by>HTML generator (html block), RSSTransformer (Portal block)</used-by>
+ <lib>html/lib/jtidy-04aug2000r7-dev.jar</lib>
+ <homepage>http://lempinen.net/sami/jtidy/</homepage>
+ </file>
+
+ <file>
+ <title>Search engine</title>
+ <description>
+ jakarta-lucene is a search engine toolkit designed for indexing and
+ searching of documents.
+ </description>
+ <used-by>Lucene block</used-by>
+ <lib>lucene/lib/lucene-1.3-final.jar</lib>
+ <homepage>http://jakarta.apache.org/lucene/</homepage>
+ </file>
+
+ <file>
+ <title>Pizza Java Compiler</title>
+ <description>Java Compiler</description>
+ <used-by>XSP</used-by>
+ <lib>optional/pizza-1.1.jar</lib>
+ <homepage>http://pizzacompiler.sourceforge.net/</homepage>
+ </file>
+
+ <file>
+ <title>Log4j</title>
+ <description>Logging for java</description>
+ <used-by>DELI (deli block)</used-by>
+ <lib>optional/log4j-1.2.8.jar</lib>
+ <homepage>http://jakarta.apache.org/log4j</homepage>
+ </file>
+
+ <file>
+ <title>XML Catalog Entity Resolver</title>
+ <description>
+ Maps URIs to other URIs using the mechanisms defined by
+ OASIS Catalog or XML Catalog. Mainly used for DTDs and character
+ entity sets, but can be used for other resources too.
+ </description>
+ <used-by>Cocoon Role entity-resolver</used-by>
+ <lib>core/xml-commons-resolver-1.1.jar</lib>
+ <homepage>http://xml.apache.org/commons/</homepage>
+ </file>
+
+ <file>
+ <title>Servlet API</title>
+ <description>Servlet API Version 2.2</description>
+ <used-by>Cocoon</used-by>
+ <lib>optional/servlet_2_2.jar</lib>
+ <homepage>http://jakarta.apache.org/tomcat/</homepage>
+ </file>
+ <file>
+ <title>Servlet API</title>
+ <description>Servlet API Version 2.3</description>
+ <used-by>Cocoon</used-by>
+ <lib>scratchpad/lib/servlet-2_3.jar</lib>
+ <homepage>http://jakarta.apache.org/tomcat/</homepage>
+ </file>
+
+ <file>
+ <title>Velocity engine</title>
+ <description>Velocity is a general purpose template engine written in Java.</description>
+ <used-by>Velocity Generator (velocity block)</used-by>
+ <lib>velocity/lib/velocity-1.4-dev-20030301.jar</lib>
+ <homepage>http://jakarta.apache.org/velocity/</homepage>
+ </file>
+
+ <file>
+ <title>XML DB APIs</title>
+ <description>Database tailored for the storage of XML data.</description>
+ <used-by>XML:DB source (xmldb block)</used-by>
+ <lib>xmldb/lib/xmldb-api-20021118.jar</lib>
+ <homepage>http://www.xmldb.org/</homepage>
+ </file>
+
+ <file>
+ <title>XML DB APIs</title>
+ <description>Database tailored for the storage of XML data.</description>
+ <used-by>XML:DB source (xmldb block)</used-by>
+ <lib>xmldb/lib/xmldb-common-20021220.jar</lib>
+ <homepage>http://www.xmldb.org/</homepage>
+ </file>
+
+ <file>
+ <title>XML DB APIs</title>
+ <description>Database tailored for the storage of XML data.</description>
+ <used-by>XML:DB source (xmldb block)</used-by>
+ <lib>xmldb/lib/xmldb-xupdate-20021220.jar</lib>
+ <homepage>http://www.xmldb.org/</homepage>
+ </file>
+
+ <file>
+ <title>XML Xindice</title>
+ <description>Native XML Database by Apache XML project</description>
+ <used-by>xmldb block</used-by>
+ <lib>xmldb/lib/xindice-1.1b3.jar</lib>
+ <homepage>http://xml.apache.org/xindice/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons JXPath</title>
+ <description>XPath interpreter. Work with JavaBeans and DOM nodes</description>
+ <used-by>Flow, JXPath logicsheet, and XMLForm</used-by>
+ <lib>core/commons-jxpath-20030909.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/jxpath/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Jexl</title>
+ <description>JSTL Expression Language</description>
+ <used-by>JXTemplateGenerator</used-by>
+ <lib>core/commons-jexl-1.0-beta-1-20040113.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/jexl/</homepage>
+ </file>
+
+ <file>
+ <title>Eclipse Java Development Tools Core</title>
+ <description>Eclipse Java Compiler</description>
+ <used-by>XSP</used-by>
+ <lib>optional/jdtcore-2.1.2.jar</lib>
+ <homepage>http://www.eclipse.org/jdt</homepage>
+ </file>
+
+ <file>
+ <title>Continuations-based JavaScript engine</title>
+ <description>Rhino is an implementation of JavaScript in Java.</description>
+ <used-by>Control flow</used-by>
+ <lib>core/rhino1.5r4-continuations-20040228.jar</lib>
+ <homepage>http://cvs.cocoondev.org/cgi-bin/viewcvs.cgi/?cvsroot=rhino</homepage>
+ </file>
+
+ <file>
+ <title>JavacAPI</title>
+ <description>Embedded Java Compiler API</description>
+ <used-by>Control flow</used-by>
+ <lib>core/javacApi-0.9.jar</lib>
+ <homepage>ftp://ftp.primaryinterface.com/pub/javacAPI</homepage>
+ </file>
+
+ <file>
+ <title>JavacAPI Eclipse Implementation</title>
+ <description>Embedded Java Compiler API implemented with Eclipse JDT Core</description>
+ <used-by>Control flow</used-by>
+ <lib>core/javacImpl-0.9.jar</lib>
+ <homepage>ftp://ftp.primaryinterface.com/pub/javacAPI</homepage>
+ </file>
+
+ <file>
+ <title>Spark</title>
+ <description>
+ Spark is a Java library that converts data in Macromedias SWF ("Flash")
+ data format to XML conforming to a specialized DTD and vice versa
+ </description>
+ <used-by>SWF Serializer (swf block)</used-by>
+ <lib>swf/lib/spark-0.2.jar</lib>
+ <homepage>http://www.tivano.de/software/spark/</homepage>
+ </file>
+
+ <file>
+ <title>Chaperon Text Parser</title>
+ <description>
+ The chaperon project is parser which could parse text files, and convert
+ those to XML files.
+ </description>
+ <used-by>Chaperon block</used-by>
+ <lib>chaperon/lib/chaperon-20040205.jar</lib>
+ <homepage>http://chaperon.sourceforge.net</homepage>
+ </file>
+
+ <file>
+ <title>Castor</title>
+ <description></description>
+ <used-by>CastorTransformer and precept</used-by>
+ <lib>optional/castor-0.9.5-xml.jar</lib>
+ <homepage>http://castor.exolab.org</homepage>
+ </file>
+
+ <!-- Currently only used by the build
+ <file>
+ <title>Jing</title>
+ <description>RELAX NG validator</description>
+ <used-by>build</used-by>
+ <lib>tools/lib/jing-20030619.jar</lib>
+ <homepage>http://www.thaiopensource.com/relaxng/jing.html</homepage>
+ </file>
+ -->
+
+ <file>
+ <title>Slide kernel</title>
+ <description>The Jakarta Slide kernel API.</description>
+ <used-by>Slide block</used-by>
+ <lib>slide/lib/slide-kernel-2.0b1-20040119.jar</lib>
+ <homepage>http://jakarta.apache.org/slide/</homepage>
+ </file>
+
+ <file>
+ <title>Slide stores</title>
+ <description>The Jakarta Slide stores implementation.</description>
+ <used-by>Slide block</used-by>
+ <lib>slide/lib/slide-stores-2.0b1-20040119.jar</lib>
+ <homepage>http://jakarta.apache.org/slide/</homepage>
+ </file>
+
+ <file>
+ <title>Slide WebDAV Servlet</title>
+ <description>The Jakarta Slide WebDAV servlet.</description>
+ <used-by>Slide block</used-by>
+ <lib>slide/lib/slide-webdavservlet-2.0b1-20040119.jar</lib>
+ <homepage>http://jakarta.apache.org/slide/</homepage>
+ </file>
+
+ <file>
+ <title>Slide WebDAV Client library</title>
+ <description>The Jakarta Slide WebDAV client library.</description>
+ <used-by>WebDAV block</used-by>
+ <lib>webdav/lib/slide-webdavlib-20030711.jar</lib>
+ <homepage>http://jakarta.apache.org/slide/</homepage>
+ </file>
+
+ <file>
+ <title>JDOM</title>
+ <description>JDOM</description>
+ <used-by>Slide block</used-by>
+ <lib>slide/lib/jdom-b9.jar</lib>
+ <homepage>http://www.jdom.org/</homepage>
+ </file>
+
+ <file>
+ <title>JTA spec</title>
+ <description>
+ J2EE Java Transaction API.
+ Implementation taken from the Apache Geronimo project for license compatibility.
+ </description>
+ <used-by>Slide block</used-by>
+ <lib>slide/lib/geronimo-spec-jta-DEV-20040202.jar</lib>
+ <homepage>http://java.sun.com/products/jta/</homepage>
+ </file>
+
+ <file>
+ <title>WSDL</title>
+ <description>
+ The Web Services Description Language for Java Toolkit (WSDL4J) allows
+ the creation, representation, and manipulation of WSDL documents
+ describing services
+ </description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/wsdl4j-1.4.jar</lib>
+ <homepage>http://www-124.ibm.com/developerworks/projects/wsdl4j/</homepage>
+ </file>
+
+ <file>
+ <title>SOAP with Attachments API for Java (SAAJ)</title>
+ <description>
+ SAAJ enables developers to produce and consume messages conforming to the
+ SOAP 1.1 specification and SOAP with Attachments note.
+ </description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/axis-saaj-1.1.jar</lib>
+ <homepage>http://java.sun.com/xml/saaj/</homepage>
+ </file>
+
+ <file>
+ <title>Avalon Excalibur Util</title>
+ <description>???</description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/excalibur-util-1.0.jar</lib>
+ <homepage>http://avalon.apache.org/excalibur/</homepage>
+ </file>
+
+ <file>
+ <title>Commons Discovery</title>
+ <description>
+ The Discovery Component is about discovering, or finding, implementations
+ for pluggable interfaces. It provides facilities intantiating classes in
+ general, and for lifecycle management of singleton (factory) classes.
+ </description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/commons-discovery-0.2.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/discovery/</homepage>
+ </file>
+
+ <file>
+ <title>Java API for XML-based RPC (JAX-RPC)</title>
+ <description>The JAX-RPC enables Java technology developers to build Web
+ applications and Web services incorporating XML based RPC functionality
+ according to the SOAP (Simple Object Access Protocol) 1.1 specification.
+ JAX-RPC provides the core API for developing and deploying web services
+ on the Java platform.
+ </description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/axis-jaxrpc-1.1.jar</lib>
+ <homepage>http://java.sun.com/xml/jaxrpc/</homepage>
+ </file>
+
+ <file>
+ <title>Apache Axis</title>
+ <description>
+ Apache Axis is an implementation of the SOAP ("Simple Object Access
+ Protocol")
+ </description>
+ <used-by>Axis block</used-by>
+ <lib>axis/lib/axis-1.1.jar</lib>
+ <homepage>http://ws.apache.org/axis/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons lang</title>
+ <description>
+ Part of jakarta-commons, it's a package that provides extended services
+ on base classes of the JDK, such as unrolling exceptions.
+ </description>
+ <used-by>Cocoon, OJB</used-by>
+ <lib>core/commons-lang-2.0.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/lang/</homepage>
+ </file>
+
+ <file>
+ <title>xReporter expression language interpreter</title>
+ <description>
+ An expression language interpreter.
+ </description>
+ <used-by>Woody block</used-by>
+ <lib>woody/lib/xreporter-expression-20030725.jar</lib>
+ <homepage>http://xreporter.cocoondev.org</homepage>
+ </file>
+
+ <file>
+ <title>ORO</title>
+ <description>Perl5 compatible regular expression engine</description>
+ <used-by>Woody block</used-by>
+ <lib>woody/lib/jakarta-oro-2.0.8.jar</lib>
+ <homepage>http://jakarta.apache.org/oro</homepage>
+ </file>
+
+ <file>
+ <title>Joost</title>
+ <description>Streaming Transformation for XML (STX) library</description>
+ <used-by>STX block</used-by>
+ <lib>stx/lib/joost-20031219.jar</lib>
+ <homepage>http://joost.sourceforge.net/</homepage>
+ </file>
+
+ <file>
+ <title>QDox - Quick JavaDoc Scanner</title>
+ <description>
+ QDox is a high speed, small footprint parser for extracting class/interface/method
+ definitions from source files complete with JavaDoc @tags.
+ </description>
+ <used-by>QDoxSource (qdox block)</used-by>
+ <lib>qdox/lib/qdox-1.3.jar</lib>
+ <homepage>http://qdox.codehaus.org</homepage>
+ </file>
+
+ <file>
+ <title>Quartz</title>
+ <description>Quartz Scheduler</description>
+ <used-by>Cron block</used-by>
+ <lib>cron/lib/quartz-1.3.2.jar</lib>
+ <homepage>http://www.quartzscheduler.org/quartz/</homepage>
+ </file>
+
+ <file>
+ <title>Garbage</title>
+ <description>Garbage</description>
+ <used-by>Scratchpad block</used-by>
+ <lib>scratchpad/lib/apache-garbage-0.0.jar</lib>
+ <homepage>http://cocoon.apache.org/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Betwixt</title>
+ <description>
+ The Betwixt library provides an XML introspection mechanism for
+ mapping beans to XML in a flexible way. It is implemented using
+ an XMLIntrospector and XMLBeanInfo classes which are similar to
+ the standard Introspector and BeanInfo from the Java Beans
+ specification.
+ </description>
+ <used-by>BetwixtTransformer</used-by>
+ <lib>scratchpad/lib/commons-betwixt-20030910.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/betwixt/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Beantuils</title>
+ <description>
+ The Java language provides Reflection and Introspection APIs
+ (see the java.lang.reflect and java.beans packages in the JDK Javadocs).
+ However, these APIs can be quite complex to understand and utilize.
+ The BeanUtils component provides easy-to-use wrappers around these capabilities.
+ </description>
+ <used-by>BetwixtTransformer</used-by>
+ <lib>scratchpad/lib/commons-beanutils-1.6.1.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/beanutils/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Digester</title>
+ <description>
+ Allow configure an XML -> Java object mapping module, which triggers
+ certain actions called rules whenever a particular pattern of nested
+ XML elements is recognized. A rich set of predefined rules is
+ available for your use, or you can also create your own.
+ </description>
+ <used-by>BetwixtTransformer</used-by>
+ <lib>scratchpad/lib/commons-digester-1.3.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/digester/</homepage>
+ </file>
+
+ <!-- OJB interface (6-Aug-2003) -->
+ <file>
+ <title>Antlr - ANother Tool for Language Recognition</title>
+ <description>
+ language tool that provides a framework for constructing recognizers, compilers, and
+ translators from grammatical descriptions containing Java, C#, or C++ actions
+ </description>
+ <used-by>OJB</used-by>
+ <lib>ojb/lib/antlr-2.7.2.jar</lib>
+ <homepage>http://www.antlr.org/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons DBCP</title>
+ <description>
+ Database Connection Pool API
+ </description>
+ <used-by>OJB</used-by>
+ <lib>ojb/lib/commons-dbcp-1.1.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/dbcp/</homepage>
+ </file>
+
+ <file>
+ <title>Jakarta Commons Pool</title>
+ <description>
+ defines a handful of pooling interfaces and some base classes that
+ may be useful when creating new pool implementations.
+ </description>
+ <used-by>OJB</used-by>
+ <lib>ojb/lib/commons-pool-1.1.jar</lib>
+ <homepage>http://jakarta.apache.org/commons/pool/</homepage>
+ </file>
+
+ <file>
+ <title>Apache ObJectRelationalBridge</title>
+ <description>
+ OJB is an Object/Relational mapping tool that allows transparent persistence
+ for Java Objects against relational databases.
+ </description>
+ <used-by>OJB</used-by>
+ <lib>ojb/lib/db-ojb-1.0.rc5-20040222.jar</lib>
+ <homepage>http://db.apache.org/ojb/</homepage>
+ </file>
+ <!-- OJB block end (6-Aug-2003) -->
+ <!-- JMS block begin -->
+ <file>
+ <title>JMS Spec</title>
+ <description>
+ J2EE Java Message Service Specification. This implentation
+ developed by the (currently incubating) Apache Geronimo project is an
+ open source implementation from the original spec. As such it is licensed
+ under the Apache license and therefore freely distributable.
+ </description>
+ <used-by>JMS</used-by>
+ <lib>jms/lib/geronimo-spec-jms-DEV-20031120.jar</lib>
+ <homepage>http://incubator.apache.org/projects/geronimo/index.html</homepage>
+ </file>
+ <!--
+ <file>
+ <title>OpenJMS</title>
+ <description>OpenJMS core libraries. OpenJMS is a OpenSource JMS, Java Messaging
+ Service, implementation.</description>
+ <used-by>JMS</used-by>
+ <lib>jms/lib/exolabcore-0.3.6.jar</lib>
+ <homepage>http://openjms.sf.net</homepage>
+ </file>
+ <file>
+ <title>OpenJMS</title>
+ <description>OpenJMS client libraries. OpenJMS is a OpenSource JMS, Java Messaging
+ Service, implementation.</description>
+ <used-by>JMS</used-by>
+ <lib>jms/lib/openjms-client-0.7.6-rc2.jar</lib>
+ <homepage>http://openjms.sf.net</homepage>
+ </file>
+ <file>
+ <title>Sun JMS API</title>
+ <description>Sun's Java Messaging Service APIs. From the website:
+ Enterprise messaging provides a reliable,
+ flexible service for the asynchronous
+ exchange of critical business data and events
+ throughout an enterprise. The JMS API adds to
+ this a common API and provider framework that
+ enables the development of portable, message
+ based applications in the Java programming
+ language.
+ </description>
+ <used-by>JMS</used-by>
+ <lib>jms/lib/jms-1.0.2a.jar</lib>
+ <homepage>http://java.sun.com/jms</homepage>
+ </file>
+ <file>
+ <title>Sun JNDI</title>
+ <description>Sun's Java Naming and Directory Interface. From the website:
+ The Java Naming and Directory Interface (JNDI) is a standard extension to
+ the Java platform, providing Java technology-enabled applications with a
+ unified interface to multiple naming and directory services in the
+ enterprise. As part of the Java Enterprise API set, JNDI enables seamless
+ connectivity to heterogeneous enterprise naming and directory services.
+ Developers can now build powerful and portable directory-enabled
+ applications using this industry standard.</description>
+ <used-by>JMS</used-by>
+ <lib>jms/lib/jndi-1.2.1.jar</lib>
+ <homepage>http://java.sun.com/jndi</homepage>
+ </file>
+ JMS block end -->
+ <file>
+ <title>JSR-168 Portlet Spec</title>
+ <description>
+ JSR-168 Portlet Specification. This implentation developed by the
+ Jakarta Pluto project is an open source implementation from the
+ original spec.
+ </description>
+ <used-by>Portal</used-by>
+ <lib>portal/lib/portlet-api-20040121.jar</lib>
+ <homepage>http://jakarta.apache.org/pluto/</homepage>
+ </file>
+ <file>
+ <title>JSR-168 Container Implementation</title>
+ <description>
+ JSR-168 Portlet Specification. This implentation developed by the
+ Jakarta Pluto project is an open source implementation from the
+ original spec.
+ </description>
+ <used-by>Portal</used-by>
+ <lib>portal/lib/pluto-20040121.jar</lib>
+ <homepage>http://jakarta.apache.org/pluto/</homepage>
+ </file>
+</jars>
diff --git a/ASF_20_SRC_AUTO/lib/local/.cvsignore b/ASF_20_SRC_AUTO/lib/local/.cvsignore
new file mode 100644
index 0000000..952d7a6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/local/.cvsignore
@@ -0,0 +1,2 @@
+*.jar
+*.zip
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/lib/local/local-libs.txt b/ASF_20_SRC_AUTO/lib/local/local-libs.txt
new file mode 100644
index 0000000..6641388
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/local/local-libs.txt
@@ -0,0 +1,5 @@
+Put here local libraries required for optional components, such as JFor or JavaMail.
+
+Local libraries aren't checked by the jar-checking system, so you must ensure they do
+not conflict with libraries that are part of the Cocoon distribution (directories core/
+and optional/).
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/lib/optional/altrmi-common-0.9.2.jar b/ASF_20_SRC_AUTO/lib/optional/altrmi-common-0.9.2.jar
new file mode 100755
index 0000000..bc18d22
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/altrmi-common-0.9.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/altrmi-registry-0.9.2.jar b/ASF_20_SRC_AUTO/lib/optional/altrmi-registry-0.9.2.jar
new file mode 100755
index 0000000..f492fde
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/altrmi-registry-0.9.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/altrmi-server-impl-0.9.2.jar b/ASF_20_SRC_AUTO/lib/optional/altrmi-server-impl-0.9.2.jar
new file mode 100755
index 0000000..6ae1cda
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/altrmi-server-impl-0.9.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/altrmi-server-interfaces-0.9.2.jar b/ASF_20_SRC_AUTO/lib/optional/altrmi-server-interfaces-0.9.2.jar
new file mode 100755
index 0000000..51ff599
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/altrmi-server-interfaces-0.9.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/castor-0.9.5-xml.jar b/ASF_20_SRC_AUTO/lib/optional/castor-0.9.5-xml.jar
new file mode 100644
index 0000000..2257862
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/castor-0.9.5-xml.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/commons-logging-1.0.3.jar b/ASF_20_SRC_AUTO/lib/optional/commons-logging-1.0.3.jar
new file mode 100644
index 0000000..b99c937
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/commons-logging-1.0.3.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/jdtcore-2.1.2.jar b/ASF_20_SRC_AUTO/lib/optional/jdtcore-2.1.2.jar
new file mode 100644
index 0000000..e4216ea
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/jdtcore-2.1.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/jstyle.jar b/ASF_20_SRC_AUTO/lib/optional/jstyle.jar
new file mode 100644
index 0000000..2731362
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/jstyle.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/log4j-1.2.8.jar b/ASF_20_SRC_AUTO/lib/optional/log4j-1.2.8.jar
new file mode 100644
index 0000000..493a3cc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/log4j-1.2.8.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/pizza-1.1.jar b/ASF_20_SRC_AUTO/lib/optional/pizza-1.1.jar
new file mode 100644
index 0000000..d0afd13
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/pizza-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/lib/optional/servlet_2_2.jar b/ASF_20_SRC_AUTO/lib/optional/servlet_2_2.jar
new file mode 100644
index 0000000..872854a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/lib/optional/servlet_2_2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/misc/awards/xmlj-award-2001.jpg b/ASF_20_SRC_AUTO/misc/awards/xmlj-award-2001.jpg
new file mode 100644
index 0000000..7ebb107
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/awards/xmlj-award-2001.jpg
Binary files differ
diff --git a/ASF_20_SRC_AUTO/misc/graphics/cocoon-buttons.psd b/ASF_20_SRC_AUTO/misc/graphics/cocoon-buttons.psd
new file mode 100644
index 0000000..6f59f29
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/cocoon-buttons.psd
Binary files differ
diff --git a/ASF_20_SRC_AUTO/misc/graphics/cocoon.ai b/ASF_20_SRC_AUTO/misc/graphics/cocoon.ai
new file mode 100644
index 0000000..0aaa8a3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/cocoon.ai
@@ -0,0 +1,7249 @@
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 8
+%%Title: (cocoon2.ai)
+%%CreationDate: (12/11/99) (1:33 AM)
+%%BoundingBox: 12 42 583 822
+%%HiResBoundingBox: 12.771 42.3027 582.9004 821.7056
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: AvantGarde-Book
+%%DocumentNeededFonts: AvantGarde-Book
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 ()
+%AI3_TemplateBox: 296.5 419.5 296.5 419.5
+%AI3_TileBox: 8 38 584 800
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 592 840
+%AI5_RulerUnits: 1
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: -143 667 1 1016 673 18 0 1 14 65 1 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:8 38
+%%AI3_PaperRect:-8 802 587 -40
+%%AI3_Margin:8 -39 -9 40
+%AI7_GridSettings: 14.1732 2 14.1732 2 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI7_Thumbnail: 96 128 8
+%%BeginData: 26112 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%05060C0606060C0606060C0606060C0606060C0606060C0606060C060606
+%0C0606060C0606060C0606060C0606060C0606060C0606060C0606060C06
+%06060C0606060C0606060C0606060C0606060C0606060C0606060C060606
+%0C060605FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D0D140D140D140D140D140D140D140D140D140D0D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0614131414133613361414133614360D3614361336131414
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF050D140D0D148484A8AF366036A95A368484
+%84FF5A140D0D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF06141314140D0D0D140D1413
+%1413140D36143613363636140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D05FFFF060D140D0D14
+%0D0D060D0D0D0D140D14353635363536130D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D14140D1413140D140D130D1413140D1413140D141413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D0D140D140D130D130D0D0D140D140D140D140D0D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%050D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF050D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D05FFFF050D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF061413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D05FFFF050D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D05FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF050D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF061413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D05FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%050D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF050D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D05FFFF050D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF061413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D05FFFF050D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D05FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF050D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF061413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D05FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%050D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%0C140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D141305FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF050D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF061413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D05FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D1427FFFF0C140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D141305FFFF060D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D05FFFF050D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D1427FFFF061413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D05FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF0C140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D141305FFFF060D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D848459843536848459A8145A7D8459842F5A7D8459841484
+%5984845A358459847D2F140D140D1427FFFF061413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D60840D2F0D35A8590D605384FF2E0D2F0D3CA8
+%2F0D847D85A8840D5AA984522F0D60A80D1413140D05FFFF050D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D1436A8845A845959A8845AA805A8
+%84845A842FA8598459A80DA853845AA85959140D14A8140D140D1427FFFF
+%061413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1460355A595914
+%5A59590C2F1460355A5959145A59590D0D1459355A1335130D14130D0D14
+%13140D05FFFF060D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D147D140D0D360D2F3659142F2F350D0D140D350D140D140D
+%140D142F140D140D1427FFFF0C140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413357E593C35845A840C84847D5959A96059
+%845A847D7E597D5A848435140D141305FFFF060D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D0D35140D140D140D140D140D140D140D1427FFFF0C140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D141305FFFF
+%060D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D140D140D140D140D140D140D140D140D140D140D140D140D140D140D
+%140D1427FFFF061413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D1413140D1413140D1413140D1413140D1413140D14
+%13140D1413140D1413140D1413140D1413140D1413140D1413140D141314
+%0D1413140D1413140D05FFFFF80606050506060505060605050606050506
+%060505060605050606050506060505060605050606050506060505060605
+%050606050506060505060605050606050506060505060605050606050506
+%06050506060505060605050606050527FFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+ Adobe_typography_AI5 begin
+ Adobe_typography_AI5
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ end
+ end
+ Adobe_typography_AI5 begin
+} def
+/terminate
+{
+ currentdict Adobe_typography_AI5 eq
+ {
+ end
+ } if
+} def
+/modifyEncoding
+{
+ /_tempEncode exch ddef
+ /_pntr 0 ddef
+ {
+ counttomark -1 roll
+ dup type dup /marktype eq
+ {
+ pop pop exit
+ }
+ {
+ /nametype eq
+ {
+ _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+ put
+ }
+ {
+ /_pntr exch ddef
+ } ifelse
+ } ifelse
+ } loop
+ _tempEncode
+} def
+/havefont
+{
+ systemdict /languagelevel known
+ {
+ /Font resourcestatus dup
+ { exch pop exch pop }
+ if
+ }
+ {
+ systemdict /FontDirectory get 1 index known
+ { pop true }
+ {
+ systemdict /fileposition known
+ {
+ dup length 6 add exch
+ Ss 6 250 getinterval
+ cvs pop
+ Ss exch 0 exch getinterval
+ status
+ { pop pop pop pop true }
+ { false }
+ ifelse
+ }
+ {
+ pop false
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+} def
+/TE
+{
+ StandardEncoding 256 array copy modifyEncoding
+ /_nativeEncoding exch def
+} def
+/subststring {
+ exch 2 index exch search
+ {
+ exch pop
+ exch dup () eq
+ {
+ pop exch concatstring
+ }
+ {
+ 3 -1 roll
+ exch concatstring
+ concatstring
+ } ifelse
+ exch pop true
+ }
+ {
+ pop pop false
+ } ifelse
+} def
+/concatstring {
+ 1 index length 1 index length
+ 1 index add
+ string
+ dup 0 5 index putinterval
+ dup 2 index 4 index putinterval
+ 4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+ dup type /arraytype eq
+ {
+ /_wv exch def
+ }
+ {
+ /_wv 0 def
+ } ifelse
+ /_useNativeEncoding exch def
+ 2 index havefont
+ {
+ 3 index
+ 255 string
+ cvs
+
+ dup
+ (_Symbol_)
+ eq
+ {
+ pop
+ 2 index
+ findfont
+
+ }
+ {
+ 1 index 0 eq
+ {
+ dup length 1 sub
+ 1 exch
+ getinterval
+
+ cvn
+ findfont
+ }
+ {
+ pop 2 index findfont
+ } ifelse
+ } ifelse
+ }
+ {
+ dup 1 eq
+ {
+ 2 index 64 string cvs
+ dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+ {
+ exch pop dup havefont
+ {
+ findfont false
+ }
+ {
+ pop true
+ } ifelse
+ }
+ {
+ pop dup
+ (-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+ {
+ exch pop dup havefont
+ {
+ findfont false
+ }
+ {
+ pop true
+ } ifelse
+ }
+ {
+ pop pop true
+ } ifelse
+ } ifelse
+ {
+ 1 index 1 eq
+ {
+ /Ryumin-Light-Ext-RKSJ-V havefont
+ {/Ryumin-Light-Ext-RKSJ-V}
+ {/Courier}
+ ifelse
+ }
+ {
+ /Ryumin-Light-83pv-RKSJ-H havefont
+ {/Ryumin-Light-83pv-RKSJ-H}
+ {/Courier}
+ ifelse
+ } ifelse
+ findfont
+ [1 0 0.5 1 0 0] makefont
+ } if
+ }
+ {
+ /Courier findfont
+ } ifelse
+ } ifelse
+ _wv type /arraytype eq
+ {
+ _wv makeblendedfont
+ } if
+ dup length 10 add dict
+ begin
+ mark exch
+ {
+ 1 index /FID ne
+ {
+ def
+ } if
+ cleartomark mark
+ } forall
+ pop
+ /FontScript exch def
+ /FontDirection exch def
+ /FontRequest exch def
+ /FontName exch def
+ counttomark 0 eq
+ {
+ 1 _useNativeEncoding eq
+ {
+ /Encoding _nativeEncoding def
+ } if
+ cleartomark
+ }
+ {
+ /Encoding load 256 array copy
+ modifyEncoding /Encoding exch def
+ } ifelse
+ FontName currentdict
+ end
+ definefont pop
+} def
+/tr
+{
+ _ax _ay 3 2 roll
+} def
+/trj
+{
+ _cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+ /Tx
+ {
+ dup
+ currentpoint 3 2 roll
+ tr _psf
+ newpath moveto
+ tr _ctm _pss
+ } ddef
+ /Tj
+ {
+ dup
+ currentpoint 3 2 roll
+ trj _pjsf
+ newpath moveto
+ trj _ctm _pjss
+ } ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+ /Tx
+ {
+ tr _psf
+ } ddef
+ /Tj
+ {
+ trj _pjsf
+ } ddef
+} def
+/e1
+{
+W F
+} def
+/i0
+{
+ /Tx
+ {
+ tr sp
+ } ddef
+ /Tj
+ {
+ trj jsp
+ } ddef
+} def
+/i1
+{
+ W N
+} def
+/o0
+{
+ /Tx
+ {
+ tr sw rmoveto
+ } ddef
+ /Tj
+ {
+ trj swj rmoveto
+ } ddef
+} def
+/r0
+{
+ /Tx
+ {
+ tr _ctm _pss
+ } ddef
+ /Tj
+ {
+ trj _ctm _pjss
+ } ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+ pop _ctm currentmatrix pop
+} def
+/TO
+{
+ iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+ pop _tm astore pop _ctm setmatrix
+ _tDict begin
+ /W
+ {
+ } def
+ /h
+ {
+ } def
+} def
+/TP
+{
+ end
+ iTm 0 0 moveto
+} def
+/Tr
+{
+ _render 3 le
+ {
+ currentpoint newpath moveto
+ } if
+ dup 8 eq
+ {
+ pop 0
+ }
+ {
+ dup 9 eq
+ {
+ pop 1
+ } if
+ } ifelse
+ dup /_render exch ddef
+ _renderStart exch get load exec
+} def
+/iTm
+{
+ _ctm setmatrix _tm concat
+ _shift aload pop _lineorientation 1 eq { exch } if translate
+ _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+ _tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+ _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+ _render -1 eq
+ {
+ }
+ {
+ _renderEnd _render get dup null ne
+ {
+ load exec
+ }
+ {
+ pop
+ } ifelse
+ } ifelse
+ /_render -1 ddef
+} def
+/Ta
+{
+ pop
+} def
+/Tf
+{
+ 1 index type /nametype eq
+ {
+ dup 0.75 mul 1 index 0.25 mul neg
+ } if
+ /_fontDescent exch ddef
+ /_fontAscent exch ddef
+ /_fontSize exch ddef
+ /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+ /_fontHeight _fontSize ddef
+ findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+ pop neg 0 exch
+ _leading astore pop
+} def
+/Tt
+{
+ pop
+} def
+/TW
+{
+ 3 npop
+} def
+/Tw
+{
+ /_cx exch ddef
+} def
+/TC
+{
+ 3 npop
+} def
+/Tc
+{
+ /_ax exch ddef
+} def
+/Ts
+{
+ 0 exch
+ _shift astore pop
+ currentpoint
+ iTm
+ moveto
+} def
+/Ti
+{
+ 3 npop
+} def
+/Tz
+{
+ count 1 eq { 100 } if
+ 100 div exch 100 div exch
+ _scale astore pop
+ iTm
+} def
+/TA
+{
+ pop
+} def
+/Tq
+{
+ pop
+} def
+/Tg
+{
+ pop
+} def
+/TG
+{
+ pop
+} def
+/Tv
+{
+ /_lineorientation exch ddef
+} def
+/TV
+{
+ /_charorientation exch ddef
+} def
+/Ty
+{
+ dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+ pop
+} def
+/T~
+{
+ Tx
+} def
+/Th
+{
+ pop pop pop pop pop
+} def
+/TX
+{
+ pop
+} def
+/Tk
+{
+ _fontSize mul 1000 div
+ _lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+ rmoveto
+ pop
+} def
+/TK
+{
+ 2 npop
+} def
+/T*
+{
+ _leading aload pop
+ _lineorientation 0 ne { exch } if
+ Td
+} def
+/T*-
+{
+ _leading aload pop
+ _lineorientation 0 ne { exch } if
+ exch neg exch neg
+ Td
+} def
+/T-
+{
+ _ax neg 0 rmoveto
+ _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+ _ctm currentmatrix pop
+ _tm astore pop
+ iTm 0 0 moveto
+} def
+/TS
+{
+ currentfont 3 1 roll
+ /_Symbol_ findfont _fontSize scalefont setfont
+
+ 0 eq
+ {
+ Tx
+ }
+ {
+ Tj
+ } ifelse
+ setfont
+} def
+/Xb
+{
+ pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+ pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+ currentfont 5 1 roll
+ dup havefont
+ {
+ findfont _fontSize scalefont setfont
+ }
+ {
+ pop
+ exch
+ } ifelse
+ 2 index 0 eq
+ {
+ Tx
+ }
+ {
+ Tj
+ } ifelse
+ pop pop
+ setfont
+} def
+/T^ /X^ load def
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%IncludeFont: AvantGarde-Book
+userdict /_useSmoothShade false put
+userdict /_aicmykps false put
+userdict /_forceToCMYK false put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _AvantGarde-Book AvantGarde-Book
+[/_AvantGarde-Book/AvantGarde-Book 0 0 1 TZ%AI3_EndEncoding AdobeType
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d%AI3_Note:0 D
+0 XR
+0 68.4097 m
+72 68.4097 l
+S0 61.209 m
+72 61.209 L
+S0 54.0088 m
+72 54.0088 L
+S0 46.8076 m
+72 46.8076 L
+S0 39.6084 m
+72 39.6084 L
+S0 32.4072 m
+72 32.4072 L
+S0 25.207 m
+72 25.207 L
+S0 18.0059 m
+72 18.0059 L
+S0 10.8057 m
+72 10.8057 L
+S0 3.6064 m
+72 3.6064 L
+S68.4102 68.4097 m
+68.4102 61.2217 l
+S54.0098 68.4097 m
+54.0098 61.2217 L
+S39.6094 68.4097 m
+39.6094 61.2217 L
+S25.21 68.4097 m
+25.21 61.2217 L
+S10.8105 68.4097 m
+10.8105 61.2217 L
+S68.4102 53.9717 m
+68.4102 46.7842 l
+S54.0098 53.9717 m
+54.0098 46.7842 L
+S39.6094 53.9717 m
+39.6094 46.7842 L
+S25.21 53.9717 m
+25.21 46.7842 L
+S10.8105 53.9717 m
+10.8105 46.7842 L
+S68.4102 39.5967 m
+68.4102 32.4092 l
+S54.0098 39.5967 m
+54.0098 32.4092 L
+S39.6094 39.5967 m
+39.6094 32.4092 L
+S25.21 39.5967 m
+25.21 32.4092 L
+S10.8105 39.5967 m
+10.8105 32.4092 L
+S68.4102 25.2217 m
+68.4102 18.0342 l
+S54.0098 25.2217 m
+54.0098 18.0342 L
+S39.6094 25.2217 m
+39.6094 18.0342 L
+S25.21 25.2217 m
+25.21 18.0342 L
+S10.8105 25.2217 m
+10.8105 18.0342 L
+S68.4102 10.7842 m
+68.4102 3.5967 l
+S54.0098 10.7842 m
+54.0098 3.5967 L
+S39.6094 10.7842 m
+39.6094 3.5967 L
+S25.21 10.7842 m
+25.21 3.5967 L
+S10.8105 10.7842 m
+10.8105 3.5967 L
+S61.1973 3.5967 m
+61.1973 0 L
+S46.7969 3.5967 m
+46.7969 0 L
+S32.3965 3.5967 m
+32.3965 0 L
+S17.9971 3.5967 m
+17.9971 0 L
+S3.5967 3.5967 m
+3.5967 0 l
+S61.1973 18.0342 m
+61.1973 10.8467 L
+S46.7969 18.0342 m
+46.7969 10.8467 L
+S32.3965 18.0342 m
+32.3965 10.8467 L
+S17.9971 18.0342 m
+17.9971 10.8467 L
+S3.5967 18.0342 m
+3.5967 10.8467 l
+S61.1973 32.4092 m
+61.1973 25.2217 L
+S46.7969 32.4092 m
+46.7969 25.2217 L
+S17.9971 32.4092 m
+17.9971 25.2217 L
+S3.5967 32.4092 m
+3.5967 25.2217 l
+S61.1973 46.7842 m
+61.1973 39.5967 L
+S46.7969 46.7842 m
+46.7969 39.5967 L
+S32.3965 46.7842 m
+32.3965 39.5967 L
+S17.9971 46.7842 m
+17.9971 39.5967 L
+S3.5967 46.7842 m
+3.5967 39.5967 l
+S61.1973 61.2217 m
+61.1973 54.0347 L
+S46.7969 61.2217 m
+46.7969 54.0347 L
+S32.3965 61.2217 m
+32.3965 54.0347 L
+S17.9971 61.2217 m
+17.9971 54.0347 L
+S3.5967 61.2217 m
+3.5967 54.0347 l
+S61.1973 71.959 m
+61.1973 68.4717 L
+S46.7969 71.959 m
+46.7969 68.4717 L
+S32.3965 71.959 m
+32.3965 68.4717 L
+S17.9971 71.959 m
+17.9971 68.4717 L
+S3.5967 71.959 m
+3.5967 68.4717 l
+S32.3965 32.4092 m
+32.3965 25.2217 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d%AI3_Note:0 D
+0 XR
+10.6 64.867 m
+7.85 62.867 l
+S9.1 8.617 m
+6.85 6.867 l
+S78.1 68.617 m
+74.85 67.867 l
+S76.85 56.867 m
+74.35 55.117 l
+S79.6 51.617 m
+76.6 51.617 l
+S76.35 44.117 m
+73.6 45.867 l
+S78.6 35.867 m
+76.6 34.367 l
+S76.1 23.867 m
+73.35 26.117 l
+S78.1 12.867 m
+73.85 13.617 l
+S68.35 14.617 m
+66.1 12.867 l
+S76.6 30.617 m
+73.6 30.617 l
+S62.85 58.117 m
+60.956 60.941 l
+S32.85 59.617 m
+31.196 62.181 l
+S47.891 64.061 m
+49.744 66.742 l
+S72.814 2.769 m
+73.928 5.729 l
+S67.976 2.633 m
+67.35 5.909 l
+S61.85 27.617 m
+59.956 30.441 l
+S53.504 56.053 m
+51.85 58.617 l
+S52.762 1.779 m
+52.876 4.776 l
+S45.391 5.311 m
+47.244 7.992 l
+S37.062 3.375 m
+35.639 5.43 l
+S55.165 34.828 m
+57.518 37.491 l
+S20.795 3.242 m
+22.12 5.193 l
+S14.097 4.747 m
+15.008 8.965 l
+S9.736 1.91 m
+8.073 4.225 l
+S31.891 5.573 m
+32.005 8.571 l
+S12.1 70.367 m
+15.6 68.867 l
+S9.35 54.867 m
+9.6 58.117 l
+S12.85 31.867 m
+14.35 28.117 l
+S10.1 37.367 m
+12.35 41.117 l
+S34.1 71.117 m
+31.85 68.617 l
+S38.35 71.117 m
+41.6 68.367 l
+S55.1 71.117 m
+58.35 69.117 l
+S57.35 65.117 m
+55.35 61.867 l
+S64.35 66.367 m
+69.35 68.617 l
+S71.85 62.867 m
+69.35 61.117 l
+S23.6 70.867 m
+23.6 67.867 l
+S20.6 65.867 m
+17.35 65.367 l
+S24.85 61.367 m
+25.35 58.117 l
+S25.85 65.867 m
+29.35 66.617 l
+S14.1 54.117 m
+16.85 56.117 l
+S12.35 11.617 m
+12.6 15.617 l
+S12.1 19.867 m
+14.35 22.367 l
+S26.1 9.867 m
+23.6 13.367 l
+S34.6 47.117 m
+32.1 45.367 l
+S62.6 41.867 m
+59.85 43.367 l
+S31.6 35.617 m
+27.85 36.367 l
+S36.35 26.117 m
+34.35 24.617 l
+S33.85 14.117 m
+31.1 16.367 l
+S37.1 9.867 m
+35.1 11.117 l
+S34.35 20.867 m
+31.35 20.867 l
+S44.6 56.617 m
+42.1 54.867 l
+S47.35 51.367 m
+44.35 51.367 l
+S44.1 43.867 m
+41.35 45.617 l
+S43.35 33.117 m
+42.6 30.617 l
+S43.85 23.617 m
+41.1 25.867 l
+S44.35 15.617 m
+42.35 16.867 l
+S67.823 31.1 m
+64.823 31.1 l
+S27.1 32.617 m
+29.6 30.867 l
+S31.85 55.117 m
+34.85 55.117 l
+S19.6 40.867 m
+22.1 39.117 l
+S16.85 35.617 m
+19.85 35.617 l
+S20.1 28.117 m
+22.85 29.867 l
+S52.1 42.617 m
+54.484 44.178 l
+S52.437 50.146 m
+54.821 48.325 l
+S59.572 54.133 m
+59.35 51.117 l
+S50.185 10.055 m
+53.234 9.928 l
+S51.187 15.896 m
+53.571 14.075 l
+S58.322 19.883 m
+59.445 16.823 l
+S53.1 32.117 m
+50.6 30.367 l
+S52.85 24.617 m
+49.6 25.617 l
+S61.85 9.117 m
+59.1 10.867 l
+S69.35 34.617 m
+66.6 36.367 l
+S67.1 23.617 m
+65.1 22.117 l
+S24.435 46.055 m
+27.484 45.928 l
+S25.437 51.896 m
+27.821 50.075 l
+S62.6 47.117 m
+65.321 46.575 l
+S19.85 19.867 m
+20.35 16.617 l
+S21.85 21.867 m
+25.35 22.617 l
+S37.6 62.867 m
+41.6 62.117 l
+S38.323 42.1 m
+38.823 38.6 l
+S69.35 52.617 m
+66.85 53.867 l
+S14.85 62.117 m
+18.1 59.367 l
+S9.6 46.117 m
+7.1 44.367 l
+S20.6 51.617 m
+18.6 50.117 l
+S46.141 70.811 m
+47.994 73.492 l
+S69.391 40.561 m
+71.244 43.242 l
+S38.641 49.311 m
+39.35 52.117 l
+S25.141 16.811 m
+25.85 19.617 l
+S36.6 32.867 m
+34.6 31.367 l
+S6.1 68.617 m
+2.85 67.867 l
+S4.85 56.867 m
+2.35 55.117 l
+S7.6 51.617 m
+4.6 51.617 l
+S6.6 35.867 m
+4.6 34.367 l
+S6.1 12.867 m
+1.85 13.617 l
+S4.6 30.617 m
+1.6 30.617 l
+S72.814 74.769 m
+73.928 77.729 l
+S67.976 74.633 m
+67.35 77.909 l
+S52.762 73.779 m
+52.876 76.776 l
+S37.062 75.375 m
+35.639 77.43 l
+S20.795 75.242 m
+22.12 77.193 l
+S9.736 73.91 m
+8.073 76.225 l
+S10.1 23.617 m
+6.35 24.367 l
+S73.217 18.276 m
+71.323 21.1 l
+S28.823 39.6 m
+29.505 42.389 l
+S49.6 38.617 m
+47.6 37.117 l
+S60.323 73.6 m
+62.323 76.6 l
+S60.323 1.6 m
+62.323 4.6 l
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:1 D
+0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 3.6 w 4 M []0 d%AI3_Note:0 D
+0 XR
+8.2 8.2 m
+80.7 8.2 L
+S8.2 22.6001 m
+80.7 22.6001 L
+S8.2 37.0002 m
+80.7 37.0002 L
+S8.2 51.4 m
+80.7 51.4 L
+S8.2 65.8001 m
+80.7 65.8001 L
+S8.2 15.4 m
+80.7 15.4 L
+S8.2 29.8001 m
+80.7 29.8001 L
+S8.2 44.2 m
+80.7 44.2 L
+S8.2 58.6001 m
+80.7 58.6001 L
+S8.2 73.0002 m
+80.7 73.0002 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7844.75 8611 m
+-7844.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7844.75 8611 L
+nu0 Ap
+0 O
+1 g
+-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+F-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+F-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+F-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+F-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+F-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+F-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+F-7854.7817 8589.125 m
+-7860.9009 8587.6162 -7864.7817 8589.125 V
+-7868.877 8587.6484 -7874.7817 8589.125 V
+-7879.7446 8587.4492 -7884.7817 8589.125 V
+-7890.7969 8587.5742 -7894.7817 8589.125 V
+-7894.7817 8608.8096 L
+-7891.6958 8609.7842 -7888.2969 8609.9912 -7884.3799 8608.9082 C
+-7878.2134 8610.4912 -7874.4634 8608.9082 V
+-7869.4634 8610.4912 -7864.3799 8608.8242 V
+-7860.0474 8610.4082 -7854.3799 8608.9082 V
+-7848.8799 8610.3242 -7844.7817 8609.125 V
+-7844.7817 8589.4404 L
+-7847.5254 8588.4287 -7850.6514 8587.9287 -7854.7817 8589.125 C
+f0 R
+0 G
+1 J 1 j 0.5 w-7874.75 8609 m
+-7882.54 8610.9473 -7888.813 8607.585 -7894.75 8603.0488 C
+S-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+S-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+S-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+S-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+S-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+S-7864.75 8589 m
+-7856.96 8587.0527 -7850.687 8590.415 -7844.75 8594.9512 C
+S-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+S-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+SUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7829.187 8610 L
+-7829.187 8545.9023 L
+-7894 8545.9023 L
+-7894 8610 L
+nu0 O
+0 g
+-7859.6978 8568.4297 m
+-7861.6094 8545.9023 L
+-7863.5215 8568.4297 L
+-7862.9033 8568.3066 -7862.2642 8568.2402 -7861.6094 8568.2402 c
+-7860.9551 8568.2402 -7860.3159 8568.3066 -7859.6978 8568.4297 C
+f-7871.2402 8576.3975 m
+-7894 8578.3301 L
+-7871.1138 8580.2734 L
+-7871.2856 8579.5469 -7871.3848 8578.793 -7871.3848 8578.0156 c
+-7871.3848 8577.4629 -7871.3281 8576.9248 -7871.2402 8576.3975 C
+f-7866.519 8569.5723 m
+-7880.1626 8560.8047 L
+-7870.2153 8573.377 L
+-7869.3574 8571.791 -7868.0718 8570.4766 -7866.519 8569.5723 C
+f-7863.481 8587.6074 m
+-7861.5786 8610 L
+-7859.6768 8587.5967 L
+-7860.3018 8587.7227 -7860.9473 8587.791 -7861.6094 8587.791 c
+-7862.25 8587.791 -7862.873 8587.7246 -7863.481 8587.6074 C
+f-7851.9609 8579.5068 m
+-7829.187 8577.5732 L
+-7852.083 8575.6289 L
+-7852.083 8575.8506 L
+-7851.9258 8576.5488 -7851.834 8577.2695 -7851.834 8578.0156 c
+-7851.834 8578.5234 -7851.8848 8579.0195 -7851.9609 8579.5068 C
+f-7870.1138 8582.8262 m
+-7880.1641 8595.5293 L
+-7866.2778 8586.6055 L
+-7867.8823 8585.7305 -7869.2114 8584.416 -7870.1138 8582.8262 C
+f-7852.9961 8573.3945 m
+-7842.875 8560.6055 L
+-7856.7666 8569.5313 L
+-7855.1768 8570.4414 -7853.8633 8571.7793 -7852.9961 8573.3945 C
+f-7856.6895 8586.4512 m
+-7842.873 8595.3281 L
+-7852.9658 8582.5732 L
+-7853.8198 8584.1895 -7855.1152 8585.5313 -7856.6895 8586.4512 C
+f-7852.8887 8582.6133 m
+-7852.3862 8581.6641 -7852.043 8580.6211 -7851.875 8579.5195 c
+-7851.7993 8579.0293 -7851.748 8578.5273 -7851.748 8578.0156 c
+-7851.748 8577.2637 -7851.8398 8576.5352 -7851.998 8575.8311 c
+-7852.1958 8574.957 -7852.5049 8574.124 -7852.918 8573.3545 c
+-7853.7954 8571.7246 -7855.1191 8570.374 -7856.7241 8569.4561 c
+-7857.6294 8568.9375 -7858.6226 8568.5537 -7859.6802 8568.3457 c
+-7860.3047 8568.2207 -7860.9497 8568.1523 -7861.6094 8568.1523 c
+-7862.2695 8568.1523 -7862.915 8568.2207 -7863.5391 8568.3457 c
+-7864.623 8568.5605 -7865.6382 8568.957 -7866.5625 8569.4961 c
+-7868.1313 8570.4102 -7869.4282 8571.7363 -7870.291 8573.335 c
+-7870.7969 8574.2695 -7871.145 8575.2969 -7871.3262 8576.3828 c
+-7871.415 8576.916 -7871.4727 8577.459 -7871.4727 8578.0156 c
+-7871.4727 8578.8008 -7871.3711 8579.5605 -7871.1978 8580.293 c
+-7870.981 8581.207 -7870.6406 8582.0732 -7870.187 8582.8701 c
+-7869.2793 8584.4727 -7867.939 8585.8008 -7866.3174 8586.6826 c
+-7865.4487 8587.1553 -7864.5 8587.498 -7863.4961 8587.6934 c
+-7862.8848 8587.8115 -7862.2554 8587.8779 -7861.6094 8587.8779 c
+-7860.9414 8587.8779 -7860.29 8587.8086 -7859.6602 8587.6826 c
+-7858.5786 8587.4668 -7857.5664 8587.0654 -7856.6455 8586.5273 c
+-7855.0566 8585.5977 -7853.751 8584.2441 -7852.8887 8582.6133 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7884.75 8611 m
+-7884.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7884.75 8611 L
+nuu0 Ap
+0 O
+1 g
+-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 c
+-7887.897 8590.9736 -7891.0898 8589 -7894.75 8589 C
+-7894.75 8609 L
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 c
+-7891.9121 8608.7754 -7890.1807 8608.0645 -7888.7441 8606.9824 c
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 c
+f0 R
+0 G
+1 J 1 j 0.5 w-7894.75 8589.3174 m
+-7891.7207 8590.2744 -7888.8926 8591.9326 -7886.1543 8593.9072 C
+S-7894.75 8594.9512 m
+-7891.5991 8597.3564 -7888.543 8600.0869 -7885.4058 8602.5361 C
+S-7888.7441 8606.9824 m
+-7890.8105 8605.8916 -7892.7993 8604.5342 -7894.75 8603.043 C
+S-7893.8018 8608.9521 m
+-7894.1191 8608.8682 -7894.4375 8608.7852 -7894.75 8608.6865 C
+S-7888.7441 8606.9824 m
+-7890.1807 8608.0645 -7891.9121 8608.7744 -7893.8018 8608.9521 C
+S-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 C
+S-7894.75 8609 m
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 C
+S-7888.7441 8606.9824 m
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 C
+S-7886.1543 8593.9072 m
+-7887.8975 8590.9736 -7891.0898 8589 -7894.75 8589 C
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7736.3994 8611 m
+-7736.3994 8597.4199 L
+-7895 8597.4199 L
+-7895 8611 L
+-7736.3994 8611 L
+nuu0 O
+0.285 0.228 0.171 0 k
+-7751.0786 8609.4844 m
+-7751.043 8610.6895 L
+-7737.5103 8611.5176 -7736.8418 8610.2822 v
+-7736.7441 8610.1016 -7736.647 8609.7148 -7736.561 8609.1934 C
+-7738.584 8609.8242 -7748.291 8609.5713 -7751.0786 8609.4844 C
+f0.44 0.352 0.264 0 k
+-7751.4063 8598.0234 m
+-7751.3711 8599.2676 L
+-7748.4912 8599.0488 -7738.1914 8598.3164 -7736.543 8598.8652 C
+-7736.7031 8598.2188 -7736.9199 8597.7646 -7737.2046 8597.6152 c
+-7738.8306 8596.7656 -7751.4063 8598.0234 Y
+f0.145 0.116 0.087 0 k
+-7751.3711 8599.2676 m
+-7751.0786 8609.4844 L
+-7748.291 8609.5713 -7738.584 8609.8242 -7736.561 8609.1934 C
+-7736.1519 8606.7773 -7735.9258 8601.3604 -7736.543 8598.8652 C
+-7738.1914 8598.3164 -7748.4912 8599.0488 -7751.3711 8599.2676 C
+fUu0.155 0.124 0.093 0 k
+-7776.9375 8603.2734 m
+-7775.897 8603.6563 L
+-7757.0728 8599.1465 L
+-7757.481 8598.3145 L
+-7776.3633 8600.7246 L
+-7777.252 8601.0059 L
+-7777.6504 8600.8936 -7778.1934 8600.8242 V
+-7777.6094 8601.2373 -7777.1426 8602.1406 -7776.9375 8603.2734 C
+fu0.085 0.068 0.051 0 k
+-7781.7993 8607.666 m
+-7782.5977 8607.7217 -7779.749 8607.6641 Y
+-7780.3481 8607.0176 -7780.771 8605.8203 -7780.8105 8604.4375 c
+-7780.8169 8604.2246 -7780.8105 8604.0176 -7780.7993 8603.8135 C
+-7781.041 8603.707 -7781.0918 8603.7734 -7781.6289 8603.5645 C
+-7781 8607.6113 -7781.7993 8607.666 v
+f0.305 0.244 0.183 0 k
+-7780.3442 8600.8672 m
+-7780.5527 8600.8105 -7780.4937 8602.9307 Y
+-7779.4785 8603.7588 L
+-7777.8359 8602.9434 L
+-7776.9375 8603.2734 L
+-7777.1426 8602.1406 -7777.6094 8601.2373 -7778.1934 8600.8242 C
+-7778.6094 8600.7715 -7779.874 8600.7998 -7780.3442 8600.8672 C
+fU0.115 0.092 0.069 0 k
+-7776.9375 8603.2734 m
+-7777.8359 8602.9434 L
+-7779.4785 8603.7588 L
+-7780.4937 8602.9307 L
+-7780.793 8603.708 -7780.7993 8603.8135 V
+-7779.5137 8604.3789 -7778.1831 8604.7402 -7776.8398 8604.9258 C
+-7776.79 8604.7275 -7776.7842 8604.543 -7776.79 8604.3369 c
+-7776.7998 8603.9717 -7776.8218 8603.6182 -7776.9375 8603.2734 C
+f0.41 0.328 0.246 0 k
+-7757.4512 8599.3965 m
+-7759.377 8600.6426 -7768.3862 8606.0986 -7776.8398 8604.9258 C
+-7776.9038 8606.0928 -7777.248 8607.0908 -7777.75 8607.6631 C
+-7777.1895 8607.6621 L
+-7756.7402 8610.7559 L
+-7757.0366 8600.4258 L
+-7757.0728 8599.1465 L
+-7757.2046 8599.2373 -7757.4512 8599.3965 v
+f0.395 0.316 0.237 0 k
+-7780.8105 8604.4375 m
+-7780.771 8605.8203 -7780.3481 8607.0176 -7779.749 8607.6641 C
+-7777.6807 8607.6631 L
+-7777.1782 8607.0908 -7776.8218 8606.0713 -7776.8398 8604.9258 C
+-7778.1831 8604.7402 -7779.5137 8604.3789 -7780.7993 8603.8135 C
+-7780.8105 8604.0176 -7780.8169 8604.2246 -7780.8105 8604.4375 c
+fUu0 0 0 0.11 k
+-7751.2642 8598.2012 m
+-7750.2407 8598.0352 L
+-7751.2642 8598.2012 L
+-7751.2642 8598.2012 L
+f0 0 0 0.34 k
+-7757.481 8598.3145 m
+-7757.0728 8599.1465 L
+-7755.6714 8598.918 L
+-7754.5234 8598.7314 L
+-7752.6758 8598.4307 L
+-7751.2642 8598.2012 L
+-7750.2407 8598.0352 L
+-7750.2954 8597.7168 -7750.3672 8597.498 -7750.4648 8597.4199 C
+-7757.481 8598.3145 L
+f0 0 0 0.32 k
+-7755.8042 8603.207 m
+-7756.041 8610.8613 L
+-7750.7144 8611 L
+-7749.7266 8607.5146 -7750.1816 8603.1543 V
+-7755.8042 8603.207 L
+fU0.025 0.02 0.015 0 k
+-7749.3223 8600.3848 m
+-7746.373 8600.9199 -7743.2402 8601.1602 -7740.3159 8600.3613 c
+-7740.2856 8600.3496 -7740.2754 8600.3184 -7740.2871 8600.2969 c
+-7740.2881 8600.2656 -7740.3198 8600.2559 -7740.3418 8600.2559 c
+-7743.2422 8601.0645 -7746.375 8600.8242 -7749.3042 8600.2783 c
+-7749.3262 8600.2793 -7749.3574 8600.291 -7749.3672 8600.3223 c
+-7749.3662 8600.3438 -7749.355 8600.375 -7749.3223 8600.3848 c
+-7749.3223 8600.3848 l
+f-7747.8374 8599.3076 m
+-7747.7295 8599.3789 -7747.6313 8599.4941 -7747.5234 8599.502 c
+-7743.7886 8599.832 -7740.1631 8599.7813 -7736.4746 8599.6641 c
+-7736.4526 8599.6641 -7736.4209 8599.6426 -7736.4214 8599.6211 c
+-7736.4214 8599.5879 -7736.4551 8599.5684 -7736.4766 8599.5684 c
+-7739.3223 8599.6816 -7742.1401 8599.6992 -7745.0039 8599.5352 c
+-7745.9336 8599.4766 -7746.9082 8599.7402 -7747.7778 8599.2207 c
+-7747.7993 8599.2109 -7747.8306 8599.2109 -7747.8506 8599.2334 c
+-7747.8618 8599.2559 -7747.8594 8599.2871 -7747.8374 8599.3076 c
+-7747.8374 8599.3076 l
+f-7743.373 8601.3672 m
+-7741.5098 8602.6797 -7739.3022 8603.374 -7737.1001 8603.8867 c
+-7737.0679 8603.8965 -7737.0474 8603.8848 -7737.0366 8603.8535 c
+-7737.0273 8603.8203 -7737.0488 8603.8008 -7737.0703 8603.79 c
+-7739.2617 8603.2656 -7741.459 8602.6035 -7743.3105 8601.2803 c
+-7743.3433 8601.2598 -7743.375 8601.2715 -7743.3848 8601.293 c
+-7743.4058 8601.3145 -7743.3945 8601.3457 -7743.373 8601.3672 c
+-7743.373 8601.3672 l
+f-7748.9321 8608.0566 m
+-7746.7295 8608.5703 -7744.5298 8609.0303 -7742.2798 8609.2754 c
+-7742.2598 8609.2852 -7742.229 8609.2637 -7742.229 8609.2422 c
+-7742.2183 8609.209 -7742.2407 8609.1777 -7742.2729 8609.1787 c
+-7744.5122 8608.8809 -7746.7305 8608.5176 -7748.9126 8607.9502 c
+-7748.9351 8607.9512 -7748.9673 8607.9629 -7748.9766 8607.9941 c
+-7748.9751 8608.0156 -7748.9648 8608.0479 -7748.9321 8608.0566 c
+-7748.9321 8608.0566 l
+f-7748.439 8607.3604 m
+-7746.3457 8608.1973 -7744.1016 8607.9297 -7741.9023 8607.9629 c
+-7741.8706 8607.9609 -7741.8496 8607.9395 -7741.8506 8607.9082 c
+-7741.8521 8607.875 -7741.873 8607.8555 -7741.8945 8607.8555 c
+-7744.0928 8607.8438 -7746.3374 8608.0996 -7748.4209 8607.2529 c
+-7748.4434 8607.2539 -7748.4746 8607.2656 -7748.4834 8607.2969 c
+-7748.4834 8607.3184 -7748.4722 8607.3506 -7748.439 8607.3604 c
+-7748.439 8607.3604 l
+f-7747.707 8608.7051 m
+-7746.3833 8608.752 -7745.1504 8608.5469 -7743.8271 8608.209 c
+-7743.3594 8608.0996 -7742.9199 8608.2266 -7742.4609 8608.2129 c
+-7741.897 8608.1973 l
+-7741.874 8608.1963 -7741.8633 8608.1855 -7741.8535 8608.1738 c
+-7741.834 8608.1523 -7741.8442 8608.1211 -7741.8662 8608.0996 c
+-7742.0625 8607.9453 l
+-7742.0742 8607.9453 -7742.085 8607.9355 -7742.0962 8607.9355 c
+-7742.5 8607.9473 l
+-7743.9551 8608.1914 -7745.457 8608.6719 -7746.8926 8608.0742 c
+-7746.9258 8608.0645 -7746.957 8608.0859 -7746.9673 8608.1074 c
+-7746.9673 8608.1396 -7746.9551 8608.1602 -7746.9336 8608.1709 c
+-7745.647 8608.6992 -7744.1714 8608.4756 -7742.8818 8608.0547 c
+-7742.0918 8608.043 L
+-7742.124 8608.0332 L
+-7741.9282 8608.1875 L
+-7741.8984 8608.0898 L
+-7742.4639 8608.1064 l
+-7742.9321 8608.1406 -7743.3848 8607.9834 -7743.8398 8608.1035 c
+-7745.1543 8608.4609 -7746.3975 8608.625 -7747.71 8608.5986 c
+-7747.7422 8608.5996 -7747.7642 8608.6211 -7747.7617 8608.6533 c
+-7747.7617 8608.6855 -7747.7402 8608.7061 -7747.707 8608.7051 c
+-7747.707 8608.7051 l
+f-7748.5718 8609.0605 m
+-7745.8711 8610.2207 -7742.9023 8609.5703 -7740.1279 8609.1816 c
+-7739.7832 8609.2891 l
+-7739.7617 8609.2988 -7739.7417 8609.2871 -7739.7207 8609.2656 c
+-7739.71 8609.2441 -7739.7217 8609.2129 -7739.7422 8609.2021 c
+-7740.0801 8609.0098 l
+-7742.7754 8608.3926 -7745.5391 8608.7813 -7748.271 8608.7852 c
+-7748.3022 8608.7871 -7748.3232 8608.8086 -7748.3223 8608.8398 c
+-7748.3198 8608.8721 -7748.2983 8608.8926 -7748.2681 8608.8926 c
+-7745.6738 8608.9355 -7743.0303 8608.4434 -7740.4727 8609.0742 c
+-7739.7954 8609.2891 L
+-7739.7534 8609.1914 L
+-7740.1406 8609.0859 l
+-7742.9058 8609.4424 -7745.8418 8610.1348 -7748.5313 8608.9746 c
+-7748.5537 8608.9648 -7748.585 8608.9648 -7748.5962 8608.998 c
+-7748.6055 8609.0195 -7748.605 8609.0508 -7748.5718 8609.0605 c
+-7748.5718 8609.0605 l
+f-7745.6895 8602.3945 m
+-7744.3945 8602.9004 -7742.9834 8602.6465 -7741.6802 8602.3438 c
+-7741.647 8602.3418 -7741.6367 8602.3203 -7741.6382 8602.2891 c
+-7741.6504 8602.2568 -7741.6714 8602.2461 -7741.7031 8602.248 c
+-7742.998 8602.5303 -7744.377 8602.8154 -7745.6504 8602.2969 c
+-7745.6826 8602.2871 -7745.7144 8602.2988 -7745.7246 8602.3311 c
+-7745.7222 8602.3525 -7745.7114 8602.3848 -7745.6895 8602.3945 c
+-7745.6895 8602.3945 l
+f-7746.1401 8604.2207 m
+-7744.2266 8604.6895 -7742.3145 8605.1035 -7740.355 8605.3242 c
+-7740.3242 8605.334 -7740.3022 8605.3125 -7740.293 8605.2803 c
+-7740.2954 8605.2598 -7740.3159 8605.2285 -7740.3374 8605.2285 c
+-7742.2959 8605.0078 -7744.209 8604.582 -7746.1206 8604.1133 c
+-7746.1426 8604.1152 -7746.1738 8604.126 -7746.1831 8604.1582 c
+-7746.1831 8604.1797 -7746.1719 8604.2109 -7746.1401 8604.2207 c
+-7746.1401 8604.2207 l
+f-7746.9336 8606.6348 m
+-7744.499 8607.4609 -7741.8647 8607.0547 -7739.3457 8607.0879 c
+-7739.313 8607.0879 -7739.293 8607.0664 -7739.293 8607.0332 c
+-7739.2954 8607.0117 -7739.3159 8606.9922 -7739.3481 8606.9922 c
+-7741.8574 8606.916 -7744.481 8607.3848 -7746.8945 8606.5264 c
+-7746.9282 8606.5273 -7746.959 8606.5391 -7746.9688 8606.5605 c
+-7746.9678 8606.5918 -7746.9561 8606.624 -7746.9336 8606.6348 c
+-7746.9336 8606.6348 l
+f-7742.0542 8607.8496 m
+-7740.6582 8608.5449 -7739.0503 8608.4033 -7737.5342 8608.4668 c
+-7737.502 8608.4648 -7737.4824 8608.4434 -7737.4824 8608.4121 c
+-7737.4834 8608.3906 -7737.5054 8608.3594 -7737.5366 8608.3594 c
+-7739.0137 8608.2207 -7740.6489 8608.5234 -7742.0039 8607.7617 c
+-7742.0366 8607.7529 -7742.0679 8607.7637 -7742.0786 8607.7861 c
+-7742.0879 8607.8076 -7742.0767 8607.8398 -7742.0542 8607.8496 c
+-7742.0542 8607.8496 l
+f-7741.3418 8604.4248 m
+-7740.3926 8604.3975 -7739.4336 8604.3701 -7738.4839 8604.3428 c
+-7738.4526 8604.3418 -7738.4312 8604.3203 -7738.4336 8604.2881 c
+-7738.4336 8604.2559 -7738.4551 8604.2354 -7738.4878 8604.2363 c
+-7739.437 8604.2637 -7740.397 8604.291 -7741.3457 8604.3184 c
+-7741.377 8604.3184 -7741.3975 8604.3418 -7741.3975 8604.373 c
+-7741.397 8604.4043 -7741.374 8604.4258 -7741.3418 8604.4248 c
+-7741.3418 8604.4248 l
+f-7739.1592 8602.0361 m
+-7738.6895 8602.0645 -7738.209 8602.0723 -7737.7383 8602.0918 c
+-7737.7168 8602.0908 -7737.6855 8602.0684 -7737.6865 8602.0371 c
+-7737.687 8602.0039 -7737.71 8601.9844 -7737.7417 8601.9844 c
+-7738.2114 8601.9873 -7738.6816 8601.9375 -7739.1514 8601.9395 c
+-7739.1831 8601.9297 -7739.2031 8601.9512 -7739.2134 8601.9844 c
+-7739.2129 8602.0156 -7739.1914 8602.0371 -7739.1592 8602.0361 c
+-7739.1592 8602.0361 l
+f-7746.9702 8604.2344 m
+-7746.5688 8604.5107 -7746.125 8604.6797 -7745.645 8604.751 c
+-7745.6113 8604.7607 -7745.5918 8604.7383 -7745.5806 8604.7168 c
+-7745.5703 8604.6855 -7745.5928 8604.6543 -7745.6152 8604.6543 c
+-7746.0854 8604.5723 -7746.5176 8604.4023 -7746.9209 8604.1475 c
+-7746.9521 8604.1377 -7746.9849 8604.1387 -7746.9946 8604.1709 c
+-7747.0039 8604.1934 -7746.9922 8604.2246 -7746.9702 8604.2344 c
+-7746.9702 8604.2344 l
+f-7748.1904 8610.085 m
+-7745.7344 8610.5273 -7743.2983 8611.001 -7740.7993 8610.7266 c
+-7740.7778 8610.7266 -7740.7568 8610.7041 -7740.7578 8610.6719 c
+-7740.7578 8610.6406 -7740.7798 8610.6191 -7740.8022 8610.6191 c
+-7743.291 8610.873 -7745.7344 8610.4844 -7748.1719 8609.9775 c
+-7748.1934 8609.9785 -7748.2256 8609.9902 -7748.2344 8610.0215 c
+-7748.2344 8610.043 -7748.2222 8610.0752 -7748.1904 8610.085 c
+-7748.1904 8610.085 l
+f0.195 0.156 0.117 0 k
+-7748.166 8598.6445 m
+-7745.7969 8598.2676 -7743.4058 8598.3477 -7741.0298 8598.5898 c
+-7740.998 8598.5879 -7740.9766 8598.5664 -7740.9766 8598.5352 c
+-7740.9785 8598.5137 -7741 8598.4824 -7741.0215 8598.4824 c
+-7743.4082 8598.2422 -7745.791 8598.1602 -7748.1694 8598.5391 c
+-7748.2026 8598.5391 -7748.2222 8598.5605 -7748.2217 8598.5938 c
+-7748.2207 8598.625 -7748.1992 8598.6465 -7748.166 8598.6445 c
+-7748.166 8598.6445 l
+f0.335 0.268 0.201 0 k
+-7747.4351 8598.1113 m
+-7744.9282 8598.1152 -7742.4146 8598.2773 -7739.918 8597.8965 c
+-7739.8862 8597.8945 -7739.8647 8597.873 -7739.8662 8597.8418 c
+-7739.8672 8597.8086 -7739.8896 8597.7891 -7739.9209 8597.7891 c
+-7742.418 8598.1699 -7744.9297 8598.0293 -7747.4375 8598.0059 c
+-7747.46 8598.0059 -7747.481 8598.0273 -7747.4785 8598.0596 c
+-7747.4785 8598.0918 -7747.457 8598.1123 -7747.4351 8598.1113 c
+-7747.4351 8598.1113 l
+f0.205 0.164 0.123 0 k
+-7748.9766 8598.3262 m
+-7747.5039 8598.668 -7746.0078 8598.4023 -7744.5391 8598.2207 c
+-7744.5078 8598.2207 -7744.4873 8598.1973 -7744.499 8598.166 c
+-7744.5 8598.1348 -7744.5215 8598.1133 -7744.5537 8598.125 c
+-7746.0103 8598.2842 -7747.4961 8598.583 -7748.9473 8598.2188 c
+-7748.9785 8598.2207 -7749.0103 8598.2324 -7749.0098 8598.2637 c
+-7749.019 8598.2852 -7748.998 8598.3164 -7748.9766 8598.3262 c
+-7748.9766 8598.3262 l
+f-7742.3535 8597.7949 m
+-7741.1978 8597.9219 -7740.0273 8597.8145 -7738.8926 8597.5898 c
+-7738.8711 8597.5781 -7738.8506 8597.5566 -7738.8618 8597.5244 c
+-7738.8623 8597.5029 -7738.8945 8597.4824 -7738.916 8597.4941 c
+-7740.0503 8597.7402 -7741.1914 8597.7939 -7742.3462 8597.6885 c
+-7742.3794 8597.6895 -7742.3984 8597.7109 -7742.4087 8597.7324 c
+-7742.4082 8597.7646 -7742.3862 8597.7852 -7742.3535 8597.7949 c
+-7742.3535 8597.7949 l
+f0.335 0.268 0.201 0 k
+-7749.2681 8600.4473 m
+-7747.9214 8601.1885 -7746.3066 8600.5977 -7744.855 8600.6416 c
+-7744.8223 8600.6406 -7744.8022 8600.6191 -7744.8022 8600.5859 c
+-7744.8042 8600.5654 -7744.8262 8600.5449 -7744.8574 8600.5449 c
+-7746.2886 8600.4902 -7747.8823 8601.0801 -7749.2168 8600.3506 c
+-7749.2383 8600.3398 -7749.2695 8600.3516 -7749.291 8600.374 c
+-7749.3008 8600.3955 -7749.2886 8600.4277 -7749.2681 8600.4473 c
+-7749.2681 8600.4473 l
+f-7747.8945 8602.5645 m
+-7745.6719 8603.0449 -7743.3896 8602.6162 -7741.1504 8602.5625 c
+-7741.1177 8602.5615 -7741.0977 8602.5391 -7741.0977 8602.5078 c
+-7741.1001 8602.4863 -7741.1318 8602.4668 -7741.1519 8602.4668 c
+-7743.3833 8602.4775 -7745.6519 8602.9805 -7747.875 8602.457 c
+-7747.8975 8602.457 -7747.9287 8602.4688 -7747.9375 8602.502 c
+-7747.9375 8602.5225 -7747.9258 8602.5547 -7747.8945 8602.5645 c
+-7747.8945 8602.5645 l
+f-7742.0273 8599.1406 m
+-7740.3496 8599.9688 -7738.499 8600.502 -7736.603 8600.3613 c
+-7736.5718 8600.3613 -7736.5513 8600.3389 -7736.5527 8600.3066 c
+-7736.5527 8600.2754 -7736.5742 8600.2539 -7736.6074 8600.2559 c
+-7738.481 8600.416 -7740.3198 8599.8604 -7741.9873 8599.0547 c
+-7742.0078 8599.0449 -7742.041 8599.0449 -7742.0503 8599.0781 c
+-7742.061 8599.0996 -7742.061 8599.1309 -7742.0273 8599.1406 c
+-7742.0273 8599.1406 l
+fu0.5 0.85 1 0.45 k
+-7895 8605.9082 m
+-7895.0254 8606.4883 -7894.5664 8607.1875 -7893.167 8607.9902 C
+-7892.8521 8608.0029 -7891.3945 8608.0234 -7889.0889 8608.0488 C
+-7889.0889 8605.8223 L
+-7891.1382 8605.8457 -7893.1177 8605.8867 -7895 8605.9082 C
+f-7894.5088 8604.9688 m
+-7889.0889 8604.8447 L
+-7889.0889 8603.8145 L
+-7892.644 8603.959 L
+-7893.8145 8604.3301 -7894.5088 8604.9688 V
+f0.5 0.85 1 0.32 k
+-7889.0889 8604.8252 m
+-7894.4746 8604.9434 L
+-7894.7695 8605.2148 -7894.9849 8605.5566 -7895 8605.9277 C
+-7893.1177 8605.9063 -7891.1382 8605.8848 -7889.0889 8605.8613 C
+-7889.0889 8604.8252 L
+f0.5 0.85 1 0.45 k
+-7784.1504 8604.6172 m
+-7862.3584 8605.541 -7889.1079 8605.8418 V
+-7889.1079 8608.0488 L
+-7872.8145 8608.2324 -7813.9902 8608.707 Y
+-7779.749 8607.6641 L
+-7780.457 8604.5684 L
+-7784.1504 8604.6172 L
+f0.5 0.85 1 0.12 k
+-7889.1079 8603.8145 m
+-7889.1079 8604.8447 L
+-7780.4258 8603 L
+-7780.3833 8600.8633 L
+-7813.6553 8600.7129 L
+-7889.1079 8603.8145 L
+fu0.065 0.052 0.039 0 k
+-7757.0728 8599.1465 m
+-7757.0366 8600.4258 L
+-7757.2954 8599.1172 L
+-7775.897 8603.6563 L
+-7776.9375 8603.2734 L
+-7776.8794 8603.6055 -7776.8398 8603.957 -7776.8306 8604.3223 c
+-7776.8242 8604.5283 -7776.8281 8604.7285 -7776.8398 8604.9258 C
+-7768.3862 8606.0986 -7758.9634 8601.6719 -7757.0366 8600.4258 C
+-7756.7402 8610.7559 L
+-7756.041 8610.8613 L
+-7755.8042 8603.207 L
+-7750.1816 8603.1543 L
+-7750.0898 8601.0137 -7750.0718 8599.0215 -7750.2407 8598.0352 C
+-7757.0728 8599.1465 L
+f0.4 0.7 1 0 k
+-7780.457 8604.5879 m
+-7780.4258 8602.9805 L
+-7889.1079 8604.8252 L
+-7889.1079 8605.8613 L
+-7862.3584 8605.5605 -7780.457 8604.5879 Y
+fUU0.025 0.02 0.015 0 k
+-7744.7344 8607.0293 m
+-7744.7344 8607.0625 -7744.7129 8607.082 -7744.6802 8607.082 c
+-7741.6714 8607.1133 -7739.4214 8606.9453 -7736.415 8606.8594 C
+-7736.4087 8606.7656 L
+-7739.3262 8606.8701 -7741.7607 8607.0078 -7744.6841 8606.9746 C
+-7744.7168 8606.9766 -7744.7358 8606.998 -7744.7344 8607.0293 C
+f-7736.3994 8606.7656 m
+-7736.4082 8606.7441 L
+-7736.4087 8606.7656 L
+-7736.4063 8606.7656 -7736.4033 8606.7656 -7736.3994 8606.7656 C
+f-7740.4487 8605.4238 m
+-7741.4458 8605.292 -7742.3394 8605.7656 -7743.2114 8606.1973 C
+-7743.2441 8606.208 -7743.2534 8606.2402 -7743.2422 8606.2715 C
+-7743.2305 8606.293 -7743.1982 8606.3027 -7743.1777 8606.291 c
+-7742.3262 8605.8301 -7741.4312 8605.4199 -7740.4678 8605.5195 c
+-7739.1079 8605.6621 -7737.9038 8606.375 -7736.5254 8606.4531 C
+-7736.4463 8606.3594 L
+-7738.04 8606.2656 -7738.8647 8605.623 -7740.4487 8605.4238 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894.75 8587 m
+-7894.75 8611 L
+-7884.75 8611 L
+-7884.75 8587 L
+-7894.75 8587 L
+n0 Ap
+0 O
+1 g
+-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 c
+-7887.5879 8589.2256 -7889.3198 8589.9346 -7890.7559 8591.0176 c
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 c
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.2319 8602.5996 -7893.3457 8604.0918 c
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+-7884.75 8589 L
+f0 R
+0 G
+1 J 1 j 0.5 w-7884.75 8608.6816 m
+-7887.7793 8607.7256 -7890.6074 8606.0674 -7893.3457 8604.0918 C
+S-7884.75 8603.0488 m
+-7887.8999 8600.6436 -7890.957 8597.9131 -7894.0942 8595.4639 C
+S-7890.7559 8591.0176 m
+-7888.6904 8592.1084 -7886.7017 8593.4668 -7884.75 8594.957 C
+S-7885.6982 8589.0479 m
+-7885.3809 8589.1309 -7885.063 8589.2148 -7884.75 8589.3145 C
+S-7890.7559 8591.0176 m
+-7889.3193 8589.9355 -7887.5879 8589.2256 -7885.6982 8589.0479 C
+S-7894.0942 8595.4639 m
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.231 8602.5996 -7893.3457 8604.0918 C
+S-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 C
+S-7890.7559 8591.0176 m
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 C
+S-7893.3457 8604.0918 m
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+SU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7893.9521 8608.3125 m
+-7786.7954 8608.3125 L
+-7786.7954 8594.1855 L
+-7893.9521 8594.1855 L
+-7893.9521 8608.3125 L
+nu0 O
+0 0 0 1 k
+-7892.2832 8607.623 m
+-7892.8535 8610 -7892.8184 8606.0039 V
+-7893.0479 8602.8027 L
+-7893.6167 8600.4551 L
+-7893.4502 8598.123 L
+-7891.9502 8597.4551 -7875.2832 8596.123 V
+-7868.6167 8594.7891 -7859.6167 8594.7891 V
+-7794.3936 8595.4766 -7789.4912 8596.8848 v
+-7830.3882 8594.875 -7832.9688 8595.5117 v
+-7793.8569 8597.1602 -7790.8545 8598.4316 v
+-7828.79 8596.5469 -7832.167 8598.1777 v
+-7797.249 8599.9102 -7793.021 8601.5313 v
+-7799.7217 8600.8828 -7801.5127 8601.082 v
+-7798.3896 8601.5703 l
+-7803.4194 8601.502 l
+-7806.3218 8601.1289 l
+-7798.4521 8602.2422 -7797.9033 8602.8086 v
+-7794.3154 8602.1309 -7808.5186 8602.3848 v
+-7842.1177 8598.4551 -7892.2832 8607.623 V
+f/BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w-7893.9502 8597.123 m
+-7873.667 8595.2949 -7853.9727 8594.2207 v
+-7811.1514 8594.502 -7806.5737 8594.9004 v
+-7794.1631 8595.0313 -7786.7959 8596.0273 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7831.8369 8594.4082 m
+-7835.2959 8594.0273 -7861.2607 8594.2793 Y
+-7871.627 8594.1602 -7893.9502 8597.123 Y
+S/BBAccumRotation (5.805971) XT
+-7830.9873 8597.6641 m
+-7800.3608 8598.582 -7793.6606 8599.2324 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7839.6201 8602.2051 m
+-7804.3706 8603.6172 -7801.4058 8604.1406 v
+S/BBAccumRotation (5.805971) XT
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7843.8921 8610 L
+-7843.8921 8553.9756 L
+-7894 8553.9756 L
+-7894 8610 L
+nu0 O
+0.1 1 1 0 k
+-7856.9014 8575.5752 m
+-7858.7178 8569.0957 -7868.8247 8572.4658 Y
+-7868.791 8572.5303 L
+-7878.8999 8569.1611 -7880.7144 8575.6396 V
+-7886.6758 8593.0068 -7881.4922 8599.7451 V
+-7874.7529 8609.3369 -7870.6055 8609.3369 V
+-7867.0103 8609.2705 L
+-7862.8638 8609.2705 -7856.125 8599.6816 Y
+-7850.9409 8592.9424 -7856.9014 8575.5752 Y
+fu0 0 0 1 k
+-7861.3926 8553.9756 m
+-7862.1167 8555.4199 -7862.9238 8556.4756 V
+-7862.4058 8556.0635 -7861.5151 8555.1924 -7861.3926 8553.9756 C
+f-7875.064 8556.4854 m
+-7875.8711 8555.4307 -7876.5942 8553.9863 Y
+-7876.4727 8555.2021 -7875.582 8556.0732 -7875.064 8556.4854 C
+fU0 0.61 0.74 0 k
+-7860.5977 8578.4609 m
+-7861.9038 8573.7959 -7869.1816 8576.2217 Y
+-7869.1567 8576.2686 L
+-7876.436 8573.8428 -7877.7417 8578.5078 V
+-7882.0337 8591.0117 -7878.3018 8595.8633 V
+-7873.4487 8602.7686 -7870.4634 8602.7686 V
+-7867.875 8602.7227 L
+-7864.8887 8602.7227 -7860.0366 8595.8174 Y
+-7856.3042 8590.9639 -7860.5977 8578.4609 Y
+fu1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7864.6226 8581.2754 m
+-7863.813 8581.2754 -7863.1558 8580.6182 -7863.1558 8579.8096 c
+-7863.1558 8579 -7863.813 8578.3428 -7864.6226 8578.3428 c
+-7865.4321 8578.3428 -7866.0889 8579 -7866.0889 8579.8096 c
+-7866.0889 8580.6182 -7865.4321 8581.2754 -7864.6226 8581.2754 c
+b-7864.3638 8592.9971 m
+-7863.0806 8592.9971 -7862.0415 8592.1201 -7862.0415 8591.042 c
+-7862.0415 8589.9619 -7863.0806 8589.0869 -7864.3638 8589.0869 c
+-7865.645 8589.0869 -7866.6846 8589.9619 -7866.6846 8591.042 c
+-7866.6846 8592.1201 -7865.645 8592.9971 -7864.3638 8592.9971 c
+b-7863.834 8604.7861 m
+-7862.2817 8604.7861 -7861.0239 8604.1299 -7861.0239 8603.3213 c
+-7861.0239 8602.5117 -7862.2817 8601.8545 -7863.834 8601.8545 c
+-7865.3862 8601.8545 -7866.645 8602.5117 -7866.645 8603.3213 c
+-7866.645 8604.1299 -7865.3862 8604.7861 -7863.834 8604.7861 c
+b-7859.6104 8576.5264 m
+-7858.8687 8576.5264 -7858.2671 8575.8154 -7858.2671 8574.9365 c
+-7858.2671 8574.0596 -7858.8687 8573.3477 -7859.6104 8573.3477 c
+-7860.353 8573.3477 -7860.9546 8574.0596 -7860.9546 8574.9365 c
+-7860.9546 8575.8154 -7860.353 8576.5264 -7859.6104 8576.5264 c
+b-7858.0034 8598.083 m
+-7858.8818 8597.7354 -7859.1494 8596.335 -7858.603 8594.9541 c
+-7858.0566 8593.5752 -7856.9014 8592.7363 -7856.0234 8593.085 c
+-7855.145 8593.4326 -7854.877 8594.833 -7855.4233 8596.2139 c
+-7855.9702 8597.5947 -7857.125 8598.4316 -7858.0034 8598.083 c
+bu-7873.0566 8581.1592 m
+-7873.8662 8581.1592 -7874.5239 8580.502 -7874.5239 8579.6934 c
+-7874.5239 8578.8828 -7873.8662 8578.2266 -7873.0566 8578.2266 c
+-7872.248 8578.2266 -7871.5913 8578.8828 -7871.5913 8579.6934 c
+-7871.5913 8580.502 -7872.248 8581.1592 -7873.0566 8581.1592 c
+b-7873.3159 8592.8799 m
+-7874.5991 8592.8799 -7875.6382 8592.0049 -7875.6382 8590.9248 c
+-7875.6382 8589.8447 -7874.5991 8588.9697 -7873.3159 8588.9697 c
+-7872.0342 8588.9697 -7870.9951 8589.8447 -7870.9951 8590.9248 c
+-7870.9951 8592.0049 -7872.0342 8592.8799 -7873.3159 8592.8799 c
+b-7873.8457 8604.6709 m
+-7875.3975 8604.6709 -7876.6558 8604.0146 -7876.6558 8603.2041 c
+-7876.6558 8602.3936 -7875.3975 8601.7383 -7873.8457 8601.7383 c
+-7872.293 8601.7383 -7871.0352 8602.3936 -7871.0352 8603.2041 c
+-7871.0352 8604.0146 -7872.293 8604.6709 -7873.8457 8604.6709 c
+b-7878.0679 8576.4092 m
+-7878.811 8576.4092 -7879.4121 8575.6982 -7879.4121 8574.8213 c
+-7879.4121 8573.9443 -7878.811 8573.2334 -7878.0679 8573.2334 c
+-7877.3262 8573.2334 -7876.7241 8573.9443 -7876.7241 8574.8213 c
+-7876.7241 8575.6982 -7877.3262 8576.4092 -7878.0679 8576.4092 c
+b-7879.6758 8597.9678 m
+-7878.7983 8597.6201 -7878.5298 8596.2188 -7879.0762 8594.8379 c
+-7879.6226 8593.457 -7880.7778 8592.6201 -7881.6558 8592.9678 c
+-7882.5342 8593.3164 -7882.8032 8594.7178 -7882.2568 8596.0967 c
+-7881.7104 8597.4775 -7880.5552 8598.3154 -7879.6758 8597.9678 c
+bUU0 Ap
+0 0 0 1 k
+-7869.1318 8576.6553 m
+-7869.1318 8609.3145 l
+Fu-7853.3906 8562.5303 m
+-7854.0815 8561.8369 -7857.019 8562.7021 Y
+-7858.229 8562.874 -7858.0562 8565.2939 Y
+-7857.019 8567.3682 -7857.7104 8567.1943 Y
+-7858.2998 8567.1943 -7859.855 8567.1143 -7860.7822 8567.0635 C
+-7861.1226 8565.6689 -7862.6128 8564.4756 -7864.7217 8563.7695 C
+-7862.7578 8560.4775 -7864.5176 8559.7949 -7866.2935 8559.79 C
+-7866.3096 8559.7021 -7866.332 8559.6162 -7866.3599 8559.5332 C
+-7864.1089 8559.5791 -7863.6392 8557.2588 Y
+-7863.4048 8557.0635 -7863.1606 8556.7861 -7862.9238 8556.4756 C
+-7863.1416 8556.6475 -7863.2944 8556.7393 Y
+-7864.2583 8556.7393 -7865.8774 8558.4941 -7866.4966 8559.207 C
+-7866.9194 8558.4434 -7867.853 8557.9111 -7868.9434 8557.9111 c
+-7870.0698 8557.9111 -7871.0322 8558.4795 -7871.4312 8559.2852 C
+-7871.9985 8558.624 -7873.6968 8556.751 -7874.6943 8556.751 C
+-7874.8462 8556.6572 -7875.064 8556.4854 V
+-7874.8281 8556.7939 -7874.583 8557.0732 -7874.3481 8557.2686 C
+-7873.8638 8559.6563 -7871.5254 8559.5342 V
+-7871.5449 8559.5889 -7871.5674 8559.6436 -7871.5806 8559.7021 C
+-7874.9238 8559.6924 -7873.937 8562.3174 -7873.2104 8563.6602 C
+-7875.5918 8564.376 -7877.2646 8565.7012 -7877.5239 8567.25 C
+-7878.4473 8567.2998 -7879.6729 8567.3584 -7880.1802 8567.3584 C
+-7880.8726 8567.5313 -7879.835 8565.458 V
+-7879.6626 8563.0391 -7880.8726 8562.8662 V
+-7883.8096 8562.002 -7884.501 8562.6934 V
+-7885.1919 8563.5566 -7886.0562 8562.3467 V
+-7885.1919 8564.0752 -7883.291 8563.5566 V
+-7880.6982 8562.8662 -7881.3906 8564.5938 V
+-7881.9087 8568.0498 -7880.1802 8568.7402 V
+-7878.0342 8569.8545 -7876.2822 8570.0889 V
+-7875.9087 8570.4141 -7875.4639 8570.7109 -7874.958 8570.9766 C
+-7877.5562 8571.0469 -7880.2246 8571.9209 -7881.0752 8574.9561 C
+-7881.5151 8576.2432 -7882.0518 8578.2432 V
+-7883.1025 8578.8252 -7884.3022 8580.0078 -7885.541 8582.2627 C
+-7886.394 8585.4502 -7887.167 8580.7129 V
+-7888.3975 8577.6494 -7889.6504 8577.5381 V
+-7888.4702 8579.2871 -7888.9038 8580.416 V
+-7887.2998 8584.917 -7885.6138 8583.8994 V
+-7884.0986 8583.2197 -7882.688 8580.8154 V
+-7883.0698 8582.4971 -7883.4326 8584.417 -7883.6743 8586.3906 C
+-7884.4888 8586.3975 L
+-7886.3506 8585.4795 -7886.3262 8588.959 V
+-7887.1226 8592.9453 -7886.3594 8595.6826 V
+-7885.647 8598.1504 -7888.1274 8596.9307 V
+-7889.2842 8597.3242 -7889.9839 8596.7881 V
+-7892.3882 8595.4131 -7894 8597.124 V
+-7892.147 8596.8799 -7891.4482 8597.417 V
+-7889.9785 8597.5615 -7889.897 8598.1787 V
+-7886.9561 8598.8555 -7886.188 8598.0771 V
+-7884.417 8597.2139 -7885.1304 8594.3604 V
+-7885.8799 8586.4814 -7884.3198 8588.4053 V
+-7884.1182 8588.4219 -7883.8784 8588.5176 V
+-7884.1519 8592.4326 -7883.8018 8596.3252 -7881.9961 8598.8516 C
+-7885.4536 8591.333 -7880.2974 8576.3037 Y
+-7878.9609 8571.5303 -7873.127 8572.1016 -7870.145 8572.7344 C
+-7870.0718 8574.1299 -7869.8374 8575.9492 -7869.1318 8576.6553 C
+-7868.2134 8574.6963 -7868.2358 8573.0732 V
+-7867.0762 8572.7217 -7860.2817 8570.8447 -7857.4487 8574.3369 C
+-7858.4312 8571.8135 -7860.8262 8571.0186 -7863.2007 8570.9189 C
+-7862.667 8570.6318 -7862.2041 8570.3047 -7861.8257 8569.9502 C
+-7860.041 8569.7861 -7857.7104 8568.5771 Y
+-7855.9814 8567.8857 -7856.5015 8564.4307 Y
+-7857.1919 8562.7021 -7854.5991 8563.3936 Y
+-7852.7002 8563.9111 -7851.835 8562.1836 Y
+-7852.7002 8563.3936 -7853.3906 8562.5303 Y
+f-7847.9082 8596.9521 m
+-7848.6074 8597.4893 -7849.7632 8597.0938 Y
+-7852.2446 8598.3135 -7851.5327 8595.8467 Y
+-7850.769 8593.1104 -7851.564 8589.1221 Y
+-7851.541 8585.6445 -7853.4014 8586.5596 Y
+-7854.0342 8586.5557 L
+-7854.3198 8584.6123 -7854.7046 8582.7549 -7855.0898 8581.1699 C
+-7853.7129 8583.4199 -7852.2778 8584.0635 Y
+-7850.5913 8585.082 -7848.9878 8580.5791 Y
+-7849.4214 8579.4502 -7848.2417 8577.7021 Y
+-7849.4937 8577.8125 -7850.7246 8580.876 Y
+-7851.4976 8585.6152 -7852.3511 8582.4268 Y
+-7853.5776 8580.1904 -7854.769 8579.0098 -7855.814 8578.4229 C
+-7856.2026 8577.0635 -7856.4858 8576.2393 Y
+-7856.7002 8575.4727 -7857.0337 8574.8486 -7857.4487 8574.3369 C
+-7857.3799 8574.5127 -7857.3174 8574.6982 -7857.2632 8574.8916 C
+-7851.3022 8592.2588 -7856.4858 8598.9971 V
+-7863.2246 8608.5869 -7867.3721 8608.5869 V
+-7870.9663 8608.6514 L
+-7875.1138 8608.6514 -7881.853 8599.0615 Y
+-7881.9038 8598.9961 -7881.9463 8598.9219 -7881.9961 8598.8516 C
+-7881.7378 8599.4141 -7881.437 8599.9404 -7881.0752 8600.4092 C
+-7874.3359 8610 -7870.189 8610 V
+-7866.5942 8609.9346 L
+-7862.4482 8609.9346 -7855.709 8600.3447 Y
+-7853.5801 8597.5771 -7853.3306 8593.0176 -7853.7769 8588.6055 C
+-7853.6553 8588.5752 -7853.5698 8588.5684 Y
+-7852.0112 8586.6475 -7852.7598 8594.5244 Y
+-7853.4746 8597.3789 -7851.7026 8598.2402 Y
+-7850.9351 8599.0186 -7847.9946 8598.3428 Y
+-7847.9136 8597.7256 -7846.4434 8597.5811 Y
+-7845.7446 8597.0449 -7843.8921 8597.2881 Y
+-7845.5024 8595.5771 -7847.9082 8596.9521 Y
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894.0254 8610.0264 m
+-7838.0542 8610.0264 L
+-7838.0542 8548.5342 L
+-7894.0254 8548.5342 L
+-7894.0254 8610.0264 L
+nuu0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w-7867.5991 8586.7217 m
+-7867.3594 8597.5215 -7872.8794 8607.8398 v
+-7872.4009 8610 -7870.959 8610 v
+-7871.2002 8606.6406 -7870.2393 8606.1611 v
+-7865.9199 8594.1602 -7866.6382 8586.2402 v
+-7867.5991 8586.7217 l
+b-7867.5991 8586.7217 m
+-7869.2793 8592 -7881.0391 8593.2012 v
+-7885.3594 8593.6807 -7885.5991 8595.1211 v
+-7879.1206 8585.5195 -7878.1602 8585.7607 v
+-7891.3594 8580.001 -7894 8574.7197 v
+-7888.959 8577.6006 -7885.5991 8575.4404 v
+-7877.6802 8575.2012 -7872.6406 8577.3613 v
+-7868.8008 8579.2813 -7876.7202 8563.2012 v
+-7872.8794 8574.9609 -7869.2793 8548.5605 v
+-7868.3198 8553.8408 -7866.8799 8555.2813 v
+-7860.8799 8562.9609 -7861.8398 8565.1211 v
+-7862.3198 8568.9609 -7857.7598 8562.7207 v
+-7858 8572.3213 -7860.4009 8575.6807 v
+-7862.5591 8579.2813 -7856.5591 8577.1211 v
+-7850.5591 8575.2012 -7845.2793 8576.8809 v
+-7839.7598 8578.3203 -7838.0801 8575.4404 v
+-7849.8398 8587.9209 -7855.5991 8587.6807 v
+-7853.9194 8591.2813 l
+-7851.519 8596.0811 -7852 8597.2813 v
+-7867.2681 8587.8828 -7867.5991 8586.7217 v
+b-7867.5991 8586.7217 m
+-7864.959 8568.2402 -7867.5991 8560.5605 v
+-7869.998 8550.001 -7869.2793 8548.5605 v
+S-7866.1602 8575.4404 m
+-7860.1602 8570.6406 -7858.959 8565.3604 v
+S-7866.1602 8574.7197 m
+-7875.0391 8567.041 -7876.7202 8563.2012 v
+S-7838.0801 8575.4404 m
+-7839.2793 8577.6006 -7867.3594 8585.7607 y
+-7872.4009 8580.2422 -7883.9199 8577.8408 v
+-7891.5986 8576.8809 -7894 8574.7197 v
+S-7884.6382 8593.6807 m
+-7873.1191 8584.5615 -7867.3594 8585.7607 y
+-7853.1992 8592 -7852 8597.2813 v
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7893.8496 8609.9961 m
+-7843.96 8609.9961 L
+-7843.96 8558.9258 L
+-7893.8496 8558.9258 L
+-7893.8496 8609.9961 L
+nu0 O
+0.025 0.1 0.475 0 k
+-7872.1504 8577.9043 m
+-7874.4766 8576.8125 -7876.6914 8576.4434 -7878.373 8576.9238 c
+-7879.0518 8577.1172 -7879.645 8577.4473 -7880.123 8577.9238 c
+-7880.6006 8578.4023 -7880.9297 8578.9951 -7881.123 8579.6729 c
+-7882.0088 8582.7715 -7880.0103 8587.6777 -7875.9233 8591.7666 c
+-7871.834 8595.8535 -7866.9297 8597.8516 -7863.8286 8596.9668 c
+-7863.1519 8596.7715 -7862.5586 8596.4424 -7862.0806 8595.9658 c
+-7861.603 8595.4883 -7861.2754 8594.8955 -7861.082 8594.2168 c
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.582 8585.21 -7864.791 8583.6133 -7866.2793 8582.123 c
+-7868.1504 8580.2539 -7870.1914 8578.8242 -7872.1504 8577.9043 c
+fu0.0035 0.014 0.0665 0 k
+-7871.2183 8576.9727 m
+-7873.8306 8576.0215 -7876.3975 8575.9688 -7878.373 8576.9238 C
+-7876.6914 8576.4434 -7874.4766 8576.8125 -7872.1504 8577.9043 c
+-7871.6191 8578.1543 -7871.0806 8578.4434 -7870.543 8578.7676 C
+-7868.8984 8578.0537 L
+-7869.667 8577.6172 -7870.4434 8577.2539 -7871.2183 8576.9727 c
+f0.015 0.06 0.285 0 k
+-7868.8984 8578.0537 m
+-7870.543 8578.7676 L
+-7869.0962 8579.6348 -7867.6426 8580.7607 -7866.2793 8582.123 c
+-7866.1538 8582.25 -7866.0327 8582.3779 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7866.3706 8579.7236 -7867.6191 8578.7813 -7868.8984 8578.0537 C
+fUu0.039 0.156 0.741 0 k
+-7859.687 8565.4043 m
+-7859.9746 8565.6914 -7871.2183 8576.9727 Y
+-7870.4434 8577.2539 -7869.667 8577.6172 -7868.8984 8578.0537 C
+-7855.4146 8564.5703 L
+-7857.061 8564.0996 -7858.6406 8564.3555 -7859.687 8565.4043 c
+f0.025 0.1 0.475 0 k
+-7855.4146 8564.5703 m
+-7868.8984 8578.0537 L
+-7867.584 8578.8027 -7866.2969 8579.7754 -7865.1143 8580.957 c
+-7865.084 8580.9863 -7865.0586 8581.0156 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7851.5264 8567.1328 -7851.7202 8566.9141 -7851.9302 8566.7012 c
+-7853.0103 8565.623 -7854.2305 8564.9082 -7855.4146 8564.5703 C
+fUu0.0115 0.046 0.2185 0 k
+-7845.9346 8574.3926 m
+-7843.5337 8571.9893 -7843.335 8568.0898 -7845.1382 8564.6973 C
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f0.015 0.06 0.285 0 k
+-7853.5337 8559.5957 m
+-7852.582 8558.9258 L
+-7855.2046 8558.3516 -7857.8306 8558.9141 -7859.6206 8560.7061 c
+-7858.1719 8559.2578 -7855.9082 8558.9307 -7853.5337 8559.5957 C
+f0.0295 0.118 0.5605 0 k
+-7853.5337 8559.5957 m
+-7855.9082 8558.9307 -7858.1719 8559.2578 -7859.6206 8560.7061 c
+-7861.019 8562.1055 -7861.3706 8564.2637 -7860.7954 8566.5469 C
+-7858.8672 8563.5449 -7855.4082 8564.5537 V
+-7853.585 8559.6309 L
+-7853.5337 8559.5957 L
+f*u
+0.048 0.192 0.912 0 k
+1 D
+-7845.9346 8574.3926 m
+-7847.2817 8575.7383 -7849.332 8576.1133 -7851.5234 8575.627 C
+-7861.6714 8585.7734 L
+-7861.7695 8585.5684 -7861.7695 8585.5684 -7861.6714 8585.7734 c
+-7860.2246 8588.8145 -7859.9702 8591.916 -7861.082 8594.2168 C
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.5054 8585.3438 -7864.5918 8583.8848 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7865.1816 8580.8945 -7865.1465 8580.9238 -7865.1143 8580.957 c
+-7865.084 8580.9883 -7865.0566 8581.0176 -7865.0273 8581.0469 c
+-7865.0278 8581.0469 -7865.0278 8581.0469 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f*U
+0.0215 0.086 0.4085 0 k
+0 D
+-7852.582 8558.9258 m
+-7853.5337 8559.5957 L
+-7851.6846 8560.1113 -7849.7656 8561.2285 -7848.1138 8562.8828 c
+-7847.4063 8563.5889 -7846.7998 8564.3418 -7846.2954 8565.1182 C
+-7845.1382 8564.6973 L
+-7845.6553 8563.7246 -7846.3374 8562.793 -7847.1802 8561.9512 c
+-7848.7695 8560.3594 -7850.6758 8559.3428 -7852.582 8558.9258 C
+f0.0205 0.082 0.3895 0 k
+-7846.2954 8565.1182 m
+-7846.7998 8564.3418 -7847.4063 8563.5889 -7848.1138 8562.8828 c
+-7849.7656 8561.2285 -7851.6846 8560.1113 -7853.5337 8559.5957 C
+-7853.585 8559.6309 L
+-7855.4082 8564.5537 L
+-7854.2114 8564.9219 -7852.9878 8565.6436 -7851.9302 8566.7012 c
+-7851.7202 8566.9141 -7851.5264 8567.1328 -7851.3408 8567.3574 C
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+fUu0.445 0.356 0.267 0 k
+-7893.8496 8609.9961 m
+-7871.957 8586.9688 L
+-7872.2007 8586.6494 -7872.5752 8586.6133 -7872.8887 8586.6592 C
+-7877.1802 8591.2891 -7888.3145 8603.4561 -7892.7266 8608.2793 C
+-7893.5649 8609.3516 -7894 8609.9932 -7893.8496 8609.9961 C
+f0.15 0.12 0.09 0 k
+-7893.834 8609.9961 m
+-7892.6606 8609.7031 -7871.6934 8588.0029 Y
+-7871.6934 8587.502 -7871.7993 8587.1758 -7871.957 8586.9688 C
+-7893.8496 8609.9961 L
+-7893.8442 8609.9961 -7893.8418 8610 -7893.834 8609.9961 c
+f0.2 0.16 0.12 0 k
+-7892.7266 8608.2793 m
+-7888.3145 8603.4561 -7877.1802 8591.2891 -7872.8887 8586.6592 C
+-7873.2002 8586.7041 -7873.4526 8586.8301 Y
+-7874.603 8587.1328 -7888.5742 8602.9619 -7892.7266 8608.2793 C
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7892.9502 8609.2324 m
+-7843.0391 8609.2324 L
+-7843.0391 8545.1152 L
+-7892.9502 8545.1152 L
+-7892.9502 8609.2324 L
+nu0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w-7843.2358 8545.1152 m
+-7843.6064 8545.248 -7843.9858 8545.2832 -7844.3833 8545.2031 c
+-7844.4863 8545.168 l
+-7844.5254 8545.1602 -7844.5703 8545.1787 -7844.6025 8545.1992 c
+-7844.9434 8545.3926 l
+-7848.7129 8547.2959 -7852.0962 8549.8965 -7854.5 8553.4473 c
+-7855.9634 8555.5918 -7857.123 8557.8789 -7858.7993 8559.8564 c
+-7859.1729 8560.209 -7859.1758 8560.7725 -7858.834 8561.1309 c
+-7858.4951 8561.501 -7857.918 8561.5078 -7857.561 8561.165 c
+-7857.4038 8561.21 l
+-7857.2642 8561.1289 -7857.0742 8561.0703 -7857.0234 8560.957 c
+-7855.853 8558.2031 -7855.1895 8555.5137 -7853.4336 8553.1387 c
+-7851.1719 8550.0947 -7848.1777 8547.9941 -7845.0298 8546.0234 c
+-7844.3672 8545.6055 L
+-7844.4966 8545.6348 L
+-7843.7695 8545.6426 l
+-7843.791 8545.6113 -7843.8008 8545.5957 -7843.8223 8545.5645 C
+-7843.6064 8545.5234 -7843.377 8545.4746 -7843.1626 8545.4336 c
+-7843.0762 8545.4238 -7843.0186 8545.3389 -7843.0391 8545.2383 c
+-7843.0503 8545.1523 -7843.1382 8545.1084 -7843.2358 8545.1152 c
+-7843.2358 8545.1152 l
+b-7859.2222 8558.9951 m
+-7859.5742 8558.8066 -7859.9658 8558.6719 -7860.248 8558.3887 c
+-7866.4521 8552.1719 -7876.6802 8551.2734 -7884.0488 8557.6855 C
+-7884.1582 8557.7813 -7884.1582 8557.957 -7884.063 8558.0645 C
+-7881.0527 8556.9434 -7872.8838 8558.375 -7869.3223 8561.4121 C
+-7869.2534 8561.4668 -7869.1465 8561.4531 -7869.1055 8561.3711 C
+-7869.0503 8561.3047 -7869.0664 8561.1953 -7869.1328 8561.1563 C
+-7872.5625 8558.0859 -7877.0674 8556.29 -7881.6729 8556.748 C
+-7878.8535 8555.1855 -7875.6313 8554.4941 -7872.3984 8554.6885 c
+-7867.7144 8554.9717 -7863.4634 8557.1191 -7859.3711 8559.2793 c
+-7859.291 8559.3193 -7859.1978 8559.293 -7859.1553 8559.2109 C
+-7859.1016 8559.1309 -7859.1426 8559.0352 -7859.2222 8558.9951 c
+b-7868.647 8560.3359 m
+-7870.2266 8564.3613 -7872.3911 8568.3203 -7875.8018 8571.0762 c
+-7875.9648 8571.2119 -7875.9946 8571.4492 -7875.8711 8571.6055 c
+-7875.7344 8571.7676 -7875.5049 8571.7793 -7875.3481 8571.6563 c
+-7871.123 8569.5967 -7868.1904 8565.1309 -7868.1626 8560.4014 c
+-7868.1626 8560.4014 l
+-7868.1328 8560.2676 -7868.2354 8560.1348 -7868.3633 8560.1221 c
+-7868.5039 8560.1055 -7868.6318 8560.1973 -7868.647 8560.3359 c
+-7868.647 8560.3359 l
+b-7862.9414 8565.0176 m
+-7863.042 8565.1816 -7863.1152 8565.3838 -7863.2617 8565.4824 c
+-7866.0806 8567.3906 -7868.9785 8568.6309 -7871.8848 8570.1328 c
+-7872.0503 8570.209 -7872.1118 8570.418 -7872.0313 8570.5703 c
+-7871.9512 8570.7227 -7871.7559 8570.7793 -7871.5898 8570.7041 c
+-7868.439 8569.3232 -7864.313 8568.5 -7862.6729 8565.1797 c
+-7862.6289 8565.1113 -7862.6455 8565.0146 -7862.7266 8564.9648 c
+-7862.7959 8564.9199 -7862.897 8564.9492 -7862.9414 8565.0176 c
+-7862.9414 8565.0176 l
+b-7862.6602 8565.918 m
+-7862.4438 8566.4297 -7862.1431 8566.8896 -7862.0503 8567.4355 c
+-7861.2183 8572.2773 -7861.1152 8577.042 -7862.248 8581.6875 c
+-7862.248 8581.6875 l
+-7862.3418 8581.9531 -7862.2114 8582.2441 -7861.9438 8582.3389 c
+-7861.6777 8582.4336 -7861.3882 8582.3125 -7861.2935 8582.0479 c
+-7859.293 8576.8115 -7859.897 8570.7373 -7862.3711 8565.7832 c
+-7862.4063 8565.7002 -7862.498 8565.6689 -7862.582 8565.6914 c
+-7862.6641 8565.7275 -7862.6978 8565.835 -7862.6602 8565.918 c
+-7862.6602 8565.918 l
+b-7861.5352 8581.5938 m
+-7858.8984 8579.2275 -7856.6816 8576.252 -7855.853 8572.7363 c
+-7855.853 8572.7363 l
+-7855.7246 8572.1816 -7856.0742 8571.623 -7856.6416 8571.4902 c
+-7857.1992 8571.375 -7857.7578 8571.7246 -7857.8862 8572.2793 c
+-7858.5649 8575.5313 -7859.8711 8578.6729 -7861.7954 8581.3867 c
+-7861.7954 8581.3867 l
+-7861.8462 8581.4551 -7861.834 8581.5576 -7861.7695 8581.6201 c
+-7861.6992 8581.6699 -7861.5977 8581.6582 -7861.5352 8581.5938 c
+-7861.5352 8581.5938 l
+b-7846.3711 8574.1826 m
+-7847.7114 8569.8301 -7850.2598 8566.0693 -7853.689 8563.1533 C
+-7853.729 8563.0723 -7853.8242 8563.0322 -7853.9038 8563.0859 C
+-7853.9863 8563.127 -7854.0122 8563.2207 -7853.9722 8563.3018 C
+-7853.957 8563.7891 -7853.7144 8564.2334 -7853.4458 8564.5313 c
+-7848.4063 8570.1621 -7844.9902 8578.7197 -7847.3433 8585.9551 C
+-7847.0762 8580.4512 -7848.7241 8574.3008 -7852.1362 8569.6738 c
+-7853.1606 8568.2695 -7854.7422 8568.1211 -7856.3081 8568.2031 C
+-7856.4023 8568.1895 -7856.4834 8568.2432 -7856.4961 8568.3369 c
+-7856.5098 8568.4189 -7856.4551 8568.5137 -7856.3623 8568.5254 C
+-7853.1479 8569.7695 -7851.4878 8573.2246 -7850.084 8576.1943 c
+-7848.415 8579.7441 -7847.7017 8583.6387 -7848.0054 8587.5 C
+-7848.0454 8587.6777 -7848.1138 8589.3975 -7847.9775 8589.4102 C
+-7847.8306 8589.4395 -7847.709 8589.3438 -7847.6802 8589.1943 C
+-7847.645 8589.0449 -7844.6426 8579.7988 -7846.3711 8574.1826 c
+b-7854.4863 8561.4912 m
+-7853.3945 8557.6211 -7851.1094 8554.251 -7848.4824 8551.2383 c
+-7848.3306 8551.1045 -7848.3145 8550.8867 -7848.4502 8550.7354 c
+-7848.5752 8550.6006 -7848.8047 8550.582 -7848.957 8550.7178 c
+-7852.3306 8553.332 -7853.4487 8557.541 -7854.7954 8561.375 c
+-7854.7954 8561.375 l
+-7854.8262 8561.4648 -7854.7754 8561.5586 -7854.6982 8561.5869 c
+-7854.6094 8561.6191 -7854.5166 8561.5684 -7854.4863 8561.4912 c
+-7854.4863 8561.4912 l
+b-7848.5313 8586.1094 m
+-7848.5991 8586.0566 -7848.707 8586.083 -7848.748 8586.1504 C
+-7848.9634 8586.4746 -7850.6914 8588.5195 -7851.3926 8589.1406 c
+-7856.1719 8593.3945 -7859.5137 8597.9609 -7867.5391 8601.7227 c
+-7874.4512 8604.9639 -7877.1113 8607.5957 -7884.3862 8605.8262 c
+-7887.687 8605.0293 -7889.0313 8604.5313 -7890.4351 8599.4551 C
+-7891.9473 8593.2988 -7890.8672 8595.7832 -7891.084 8588.4385 c
+-7891.2222 8583.6973 -7894 8572.4551 -7881.5254 8558.2598 C
+-7881.4199 8558.1484 -7881.4336 8557.9961 -7881.5337 8557.9072 C
+-7881.6328 8557.8027 -7881.7959 8557.8164 -7881.8862 8557.916 C
+-7887.5786 8562.7168 -7891.0234 8569.6582 -7892.3145 8576.9424 c
+-7893.2871 8582.4668 -7892.9199 8587.25 -7892.666 8593.6367 c
+-7892.5688 8596.0938 -7893.6855 8603.0723 -7888.9102 8607.0625 c
+-7885.3926 8610 -7880.3911 8609.5469 -7876.3545 8608.1563 c
+-7870.6992 8606.2119 -7865.9727 8603.1465 -7860.8711 8599.6094 c
+-7857.2656 8597.125 -7849.2881 8587.2852 -7848.4785 8586.3262 C
+-7848.4351 8586.2588 -7848.4502 8586.1504 -7848.5313 8586.1094 C
+b-7883.0503 8573.3057 m
+-7882.168 8572.5029 -7881.7017 8573.8457 -7881.4297 8574.6016 c
+-7881.1626 8575.3574 -7880.189 8575.25 -7880.5127 8575.5732 c
+-7880.8369 8575.8975 -7880.8369 8575.9521 -7881.3232 8575.5195 c
+-7881.8086 8575.0879 -7881.8086 8575.7363 -7882.5649 8575.25 c
+-7883.3198 8574.7627 -7883.645 8573.8457 -7883.0503 8573.3057 c
+b-7875.6519 8577.9492 m
+-7875.3657 8577.5918 -7874.6802 8577.5723 -7874.4648 8577.8945 c
+-7874.25 8578.2197 -7873.3306 8578.2734 -7873.4937 8578.5967 c
+-7873.6543 8578.9219 -7873.6016 8579.1387 -7874.0874 8578.9219 c
+-7874.5737 8578.7051 -7874.4121 8579.2998 -7874.897 8579.084 c
+-7875.3833 8578.8672 -7875.8687 8578.2197 -7875.6519 8577.9492 c
+b-7867.6074 8583.0791 m
+-7867.1206 8582.7559 -7865.8794 8583.5117 -7866.4727 8583.5117 c
+-7867.0674 8583.5117 -7866.311 8584.2676 -7866.8521 8584.4834 c
+-7867.3906 8584.6992 -7867.2832 8584.4297 -7867.6074 8584.6445 c
+-7867.9297 8584.8613 -7868.3633 8585.2393 -7868.5239 8584.4297 c
+-7868.6855 8583.6191 -7868.3633 8583.6191 -7867.9849 8583.3496 c
+-7867.6074 8583.0791 -7867.6074 8583.0791 y
+b-7882.2402 8583.3496 m
+-7881.1074 8583.2422 -7881.8633 8583.998 -7881.269 8584.4834 c
+-7880.6738 8584.9697 -7879.918 8585.6172 -7880.729 8585.4004 c
+-7881.5391 8585.1855 -7882.9961 8585.6719 -7882.9434 8584.5381 c
+-7882.8887 8583.4033 -7882.6328 8583.3867 -7882.2402 8583.3496 c
+b-7876.5703 8591.6113 m
+-7876.1016 8591.3438 -7876.6802 8591.7197 -7876.0303 8591.6113 c
+-7875.3833 8591.5039 -7874.7886 8591.6113 -7875.2207 8591.8281 c
+-7875.6519 8592.0439 -7876.3008 8592.1523 -7876.4634 8591.9893 c
+-7876.625 8591.8281 -7876.9473 8591.8281 -7876.5703 8591.6113 c
+b-7867.0674 8591.1797 m
+-7867.4785 8590.1797 -7866.0962 8590.4238 -7865.4473 8590.7461 c
+-7864.7998 8591.0723 -7863.8262 8590.4775 -7864.4209 8590.9102 c
+-7865.0137 8591.3418 -7864.7998 8590.9102 -7865.3926 8591.2334 c
+-7865.9873 8591.5566 -7866.6895 8592.0977 -7867.0674 8591.1797 c
+b-7882.6738 8597.0664 m
+-7882.7222 8596.0752 -7881.8086 8596.957 -7881.269 8597.0117 c
+-7880.729 8597.0664 -7880.0801 8597.0664 -7880.2432 8597.2813 c
+-7880.4038 8597.498 -7880.459 8597.498 -7881.1626 8597.7129 c
+-7881.8633 8597.9297 -7882.6191 8598.1445 -7882.6738 8597.0664 c
+b-7883.1582 8591.6113 m
+-7884.0664 8591.9746 -7884.293 8591.8809 -7884.5625 8592.2051 c
+-7884.834 8592.5293 -7885.1558 8593.2314 -7885.5352 8592.0977 c
+-7885.9121 8590.9629 -7885.4282 8589.7764 -7885.0479 8589.9375 c
+-7884.6714 8590.0996 -7884.293 8590.7461 -7883.8618 8590.9629 c
+-7883.4297 8591.1797 -7882.6191 8591.3945 -7883.1582 8591.6113 c
+bUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7813 8610 L
+-7813 8505 L
+-7894 8505 L
+-7894 8610 L
+nuuu0 O
+0 0 0 1 k
+-7875.8057 8522.4258 m
+-7876.0742 8520.6621 -7877.1602 8519.291 -7878.5239 8519.3965 c
+-7879.8862 8519.502 -7880.707 8521.0234 -7880.7432 8522.8066 c
+-7880.748 8523.0693 -7880.6743 8524.2441 -7880.6304 8524.4775 C
+-7880.6382 8524.582 -7880.6191 8524.6738 -7880.6104 8524.7803 c
+-7880.5142 8526.0254 -7879.3574 8527.3604 -7877.9414 8527.25 c
+-7876.5249 8527.1406 -7875.4897 8525.8613 -7875.6367 8524.4727 c
+-7875.644 8524.4072 -7875.6958 8523.626 -7875.707 8523.5625 C
+-7875.6816 8523.2852 -7875.7598 8522.7256 -7875.8057 8522.4258 c
+f-7886.2646 8531.7334 m
+-7886.9946 8539.916 -7881.5015 8539.1191 v
+-7878.3682 8538.0186 -7879.4414 8535.1211 v
+-7879.6426 8533.752 -7881.7847 8532.498 v
+-7882.146 8532.25 -7882.7632 8531.1016 v
+-7883.1294 8529.5977 -7884.5186 8529.2979 v
+-7886.0762 8529.251 -7886.2646 8531.7334 v
+f-7860.7646 8540.4971 m
+F-7860.0762 8538.3408 m
+-7860.7847 8537.1934 -7863.8848 8537.6279 Y
+-7864.811 8537.6885 -7865.3799 8537.1113 Y
+-7867.8394 8533.0918 -7871.0386 8533.8857 -7871.4082 8533.9932 C
+-7871.4097 8533.9863 L
+-7874.999 8534.6045 -7875.2666 8539.6035 V
+-7875.4912 8540.3828 -7876.335 8540.7695 V
+-7879.2695 8541.8613 -7879.3481 8543.208 V
+-7879.8999 8545.1152 -7877.6006 8545.7422 V
+-7875.6792 8546.2568 -7873.7886 8543.8945 V
+-7872.6113 8542.6797 -7869.5762 8541.9395 V
+-7869.5728 8541.9531 L
+-7866.3594 8541.0459 -7864.6392 8541.5889 Y
+-7861.8521 8542.7676 -7860.4063 8541.4014 Y
+-7858.6826 8539.7559 -7860.0762 8538.3408 Y
+f-7873.9834 8521.8789 m
+-7874.5854 8520.2002 -7874.2822 8518.4775 -7873.0327 8517.9229 c
+-7871.7842 8517.3672 -7870.3384 8518.3164 -7869.4585 8519.8672 c
+-7869.3286 8520.0957 -7868.8359 8521.165 -7868.7632 8521.3906 C
+-7868.7065 8521.4785 -7868.6792 8521.5684 -7868.6362 8521.667 c
+-7868.1289 8522.8086 -7868.5122 8524.5303 -7869.8105 8525.1074 c
+-7871.1089 8525.6855 -7872.6279 8525.0527 -7873.1582 8523.7617 c
+-7873.1831 8523.7002 -7873.5078 8522.9883 -7873.5298 8522.9268 C
+-7873.6831 8522.6963 -7873.8809 8522.166 -7873.9834 8521.8789 c
+f-7859.7129 8524.9316 m
+-7855.1802 8531.7822 -7860.3911 8533.6943 v
+-7863.6714 8534.2168 -7864.103 8531.1572 v
+-7864.5786 8529.8564 -7863.29 8527.7354 v
+-7863.0903 8527.3447 -7863.0938 8526.04 v
+-7863.4858 8524.5449 -7862.4082 8523.6182 v
+-7861.0591 8522.8359 -7859.7129 8524.9316 v
+fUu-7834.7358 8574.1074 m
+-7834.3687 8572.3623 -7834.9048 8570.6963 -7836.2183 8570.3164 c
+-7837.5322 8569.9375 -7838.8345 8571.0752 -7839.4937 8572.7324 c
+-7839.5903 8572.9775 -7839.9326 8574.1025 -7839.9746 8574.3369 C
+-7840.0176 8574.4326 -7840.0322 8574.5244 -7840.0625 8574.6279 c
+-7840.4087 8575.8271 -7839.7935 8577.4805 -7838.4282 8577.875 c
+-7837.063 8578.2695 -7835.645 8577.4365 -7835.2969 8576.085 c
+-7835.2793 8576.0205 -7835.0552 8575.2705 -7835.0425 8575.207 C
+-7834.9214 8574.9551 -7834.7983 8574.4053 -7834.7358 8574.1074 c
+f-7848.2705 8578.6172 m
+-7851.8242 8586.0244 -7846.3999 8587.2061 v
+-7843.0801 8587.2754 -7843.0688 8584.1846 v
+-7842.7778 8582.8311 -7844.3433 8580.9072 v
+-7844.5942 8580.5459 -7844.7695 8579.2539 v
+-7844.5854 8577.7188 -7845.7793 8576.9492 v
+-7847.2222 8576.3594 -7848.2705 8578.6172 v
+f-7827.4648 8595.7695 m
+F-7826.063 8593.9912 m
+-7826.3247 8592.6689 -7829.3799 8591.9883 Y
+-7830.27 8591.7197 -7830.5986 8590.9795 Y
+-7831.4922 8586.3535 -7834.7666 8585.9746 -7835.1494 8585.9453 C
+-7835.1494 8585.9395 L
+-7838.7271 8585.2588 -7840.731 8589.8467 V
+-7841.2153 8590.4961 -7842.1416 8590.5625 V
+-7845.272 8590.5557 -7845.8169 8591.7891 V
+-7847.0039 8593.3809 -7845.0713 8594.7764 V
+-7843.4526 8595.9316 -7840.853 8594.3818 V
+-7839.3242 8593.6582 -7836.2222 8594.0293 V
+-7836.2231 8594.042 L
+-7832.896 8594.3213 -7831.4766 8595.4326 Y
+-7829.2793 8597.5146 -7827.4463 8596.7432 Y
+-7825.2554 8595.8057 -7826.063 8593.9912 Y
+f-7832.8374 8574.2354 m
+-7832.813 8572.4512 -7831.9258 8570.9453 -7830.5601 8570.8633 c
+-7829.1943 8570.7803 -7828.1743 8572.1768 -7827.895 8573.9385 c
+-7827.854 8574.1973 -7827.7666 8575.3711 -7827.7778 8575.6094 C
+-7827.7559 8575.7109 -7827.7617 8575.8037 -7827.7559 8575.9121 c
+-7827.6807 8577.1592 -7828.644 8578.6367 -7830.0625 8578.7217 c
+-7831.4814 8578.8066 -7832.6826 8577.6826 -7832.7246 8576.2871 c
+-7832.7271 8576.2217 -7832.7822 8575.4404 -7832.7798 8575.375 C
+-7832.8433 8575.1045 -7832.8423 8574.54 -7832.8374 8574.2354 c
+f-7821.0186 8581.5625 m
+-7819.1777 8589.5684 -7824.7271 8589.5303 v
+-7827.9834 8588.8691 -7827.3154 8585.8516 v
+-7827.3032 8584.4668 -7825.353 8582.9326 v
+-7825.0278 8582.6377 -7824.5742 8581.415 v
+-7824.417 8579.876 -7823.083 8579.3877 v
+-7821.5454 8579.1279 -7821.0186 8581.5625 v
+fUU1 Ap
+-7894 8610 m
+-7894 8505 L
+-7813 8505 L
+-7813 8610 L
+-7894 8610 L
+nUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8567.918 m
+-7895 8611 L
+-7808.2217 8611 L
+-7808.2217 8567.918 L
+-7895 8567.918 L
+nuu0 O
+0 0 0 1 k
+-7835.2217 8597.2363 m
+-7835.2217 8605.0742 L
+-7823.2217 8598.1445 L
+-7811.2217 8591.2168 L
+-7823.2217 8584.2891 L
+-7835.2217 8577.3613 L
+-7835.2217 8585.4824 L
+-7893.9351 8571.7168 L
+-7880.9878 8590.8027 L
+-7895 8611 L
+-7835.2217 8597.2363 L
+f0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7833.2217 8594.2363 m
+-7833.2217 8602.0742 L
+-7821.2217 8595.1445 L
+-7809.2217 8588.2168 L
+-7821.2217 8581.2891 L
+-7833.2217 8574.3613 L
+-7833.2217 8582.4824 L
+-7891.9351 8568.7168 L
+-7877.2754 8588.3594 L
+-7891.9351 8608 L
+-7833.2217 8594.2363 L
+bUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7766.877 8610 L
+-7766.877 8562.415 L
+-7894 8562.415 L
+-7894 8610 L
+nu*u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7867.793 8594.417 m
+-7867.8232 8594.2676 L
+-7869.9849 8588.3643 -7870.9438 8585.6377 -7871.2754 8584.2891 c
+-7871.3657 8584.2891 L
+-7871.6953 8585.6074 -7872.7754 8588.335 -7874.9673 8594.2676 c
+-7874.9966 8594.417 L
+-7867.793 8594.417 l
+f1 D
+-7878.1182 8602.9678 m
+-7879.6191 8606.5371 -7880.3994 8608.709 -7878.1182 8608.917 c
+-7878.1182 8609.9678 L
+-7880.6992 8609.9375 -7883.5806 8609.917 -7886.3418 8609.917 c
+-7890.0649 8609.917 -7892.5273 8609.9375 -7894 8609.9678 c
+-7894 8608.917 L
+-7892.1064 8608.709 -7891.0542 8606.5674 -7883.5513 8589.5029 c
+-7871.6953 8562.415 L
+-7869.8638 8562.415 L
+-7858.1582 8589.5029 L
+-7850.8047 8606.5078 -7849.7246 8608.709 -7847.8887 8608.917 c
+-7847.8887 8609.9678 L
+-7849.5142 8609.9375 -7851.916 8609.917 -7855.5767 8609.917 c
+-7858.5488 8609.917 -7861.6694 8609.9375 -7864.7026 8609.9678 c
+-7864.7026 8608.917 L
+-7862.481 8608.709 -7863.3218 8606.5078 -7864.7617 8602.9678 C
+-7878.1182 8602.9678 l
+f*U
+*u
+0 D
+-7823.0762 8578.0811 m
+-7823.0762 8574.4717 -7825.3535 8572.0947 -7829.1294 8572.0947 c
+-7830.2383 8572.0947 -7831.0767 8572.2158 -7831.5273 8572.2451 c
+-7831.5273 8584.5479 L
+-7830.8672 8584.6084 -7830.208 8584.6084 -7829.729 8584.6084 c
+-7828.2002 8584.6084 -7826.7026 8584.127 -7825.6841 8583.4053 c
+-7824.3945 8582.5332 -7823.0762 8580.7881 -7823.0762 8578.1416 C
+-7823.0762 8578.0811 l
+f1 D
+-7842.0806 8582.3926 m
+-7842.0806 8566.6445 -7842.0806 8564.4287 -7844.542 8564.2783 c
+-7844.542 8563.3184 L
+-7843.042 8563.2588 -7840.3174 8563.1992 -7837.5664 8563.1689 c
+-7835.6538 8563.1084 -7832.3945 8563.0186 -7830.1479 8562.9775 c
+-7826.582 8562.9775 -7823.585 8563.4258 -7821.0049 8564.2627 c
+-7816.353 8565.8477 -7811.9702 8569.8525 -7811.9702 8577.6602 c
+-7811.9702 8582.7432 -7814.4014 8586.3193 -7816.5034 8588.0605 c
+-7817.583 8589.0215 -7818.8135 8589.832 -7819.7744 8590.3125 c
+-7819.7744 8590.4629 L
+-7817.5234 8593.4912 -7815.6025 8596.0625 -7809.3906 8604.6426 c
+-7807.5 8607.0645 -7805.9102 8608.7383 -7804.7402 8608.9775 c
+-7804.7402 8610 L
+-7806.6602 8610 -7809 8609.8848 -7811.1294 8609.8848 c
+-7813.3511 8609.8848 -7814.8521 8610 -7816.4424 8610 c
+-7817.6729 8610 -7818.7241 8609.9404 -7819.5039 8609.2725 c
+-7823.0151 8603.8477 -7826.9121 8597.7559 -7830.1182 8592.7139 c
+-7830.5078 8592.7139 -7830.957 8592.7139 -7831.5273 8592.7139 c
+-7831.5273 8595.2852 L
+-7831.5273 8606.5264 -7831.437 8608.7686 -7829.1895 8608.9775 c
+-7829.1895 8609.9697 L
+-7830.6279 8609.9404 -7833.9194 8609.915 -7836.6992 8609.915 c
+-7839.9287 8609.915 -7842.8921 8609.9404 -7844.5122 8609.9697 c
+-7844.5122 8608.9775 L
+-7842.0518 8608.7686 -7842.0806 8606.5264 -7842.0806 8589.5918 C
+-7842.0806 8582.3926 l
+f*U
+*u
+0 D
+-7791.4561 8589.5928 m
+-7791.4561 8606.4941 -7791.4561 8608.6484 -7794.2832 8608.9775 C
+-7794.2832 8609.9697 l
+-7792.3887 8609.9404 -7789.0542 8609.915 -7785.7822 8609.915 c
+-7782.6294 8609.915 -7779.5688 8609.9404 -7777.2881 8609.9697 C
+-7777.2881 8608.9775 l
+-7780.2578 8608.9775 -7780.2881 8606.5244 -7780.2881 8589.5928 C
+-7780.2881 8572.1514 L
+-7772.8193 8572.1514 l
+-7769.999 8572.1514 -7768.5298 8572.96 -7767.8994 8575.2627 C
+-7766.9072 8575.2627 l
+-7766.9072 8570.4697 -7766.877 8566.415 -7766.877 8563.1709 c
+-7771.3486 8563.2012 -7776.748 8563.2314 -7782.0601 8563.2314 C
+-7789.7446 8563.2314 l
+-7794.5537 8563.2314 -7799.9966 8563.2012 -7804.9614 8563.1709 c
+-7804.9614 8566.3848 -7804.9326 8570.4697 -7804.9326 8575.2627 C
+-7803.9072 8575.2627 l
+-7803.3657 8573.1094 -7801.771 8572.1514 -7798.9438 8572.1514 C
+-7791.4561 8572.1514 l
+-7791.4561 8589.5928 L
+f*U
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8593.9043 m
+-7856.7305 8585.3408 L
+-7895 8585.3408 L
+-7895 8593.9043 L
+-7856.7305 8593.9043 L
+f-7856.7305 8597.0967 m
+-7856.7305 8596.4229 L
+-7895 8596.4229 L
+-7895 8597.0967 L
+-7856.7305 8597.0967 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8589.8262 m
+-7856.7305 8598.3896 L
+-7869.3408 8598.3896 L
+-7869.3408 8611 L
+-7877.9038 8611 L
+-7877.9063 8589.8262 L
+-7877.9038 8589.8262 L
+-7877.9038 8589.8252 L
+-7856.7305 8589.8262 L
+f-7856.7305 8587.3076 m
+-7880.4233 8587.3076 L
+-7880.4233 8611 L
+-7881.0967 8611 L
+-7881.0977 8586.6328 L
+-7856.7305 8586.6328 L
+-7856.7305 8587.3076 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8610.999 m
+-7895 8572.7285 L
+-7856.7305 8572.7285 L
+-7856.7305 8610.999 L
+-7895 8610.999 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8585.3389 m
+-7882.3896 8585.3389 L
+-7882.3896 8610.999 L
+-7873.8262 8611 L
+-7873.8262 8593.9033 L
+-7856.7305 8593.9033 L
+-7856.7305 8585.3389 L
+f-7856.7305 8596.4219 m
+-7871.3081 8596.4219 L
+-7871.3081 8611 L
+-7870.6338 8611 L
+-7870.6338 8597.0957 L
+-7856.7305 8597.0957 L
+-7856.7305 8596.4219 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.0625 8583.4609 m
+-7894.6025 8583.4609 L
+-7894.6025 8611 L
+-7867.0625 8611 L
+-7867.0625 8583.4609 L
+n0 O
+0 0.55 1 0.12 k
+-7866.8418 8596.7002 m
+-7895 8596.7002 L
+-7895 8597.8252 L
+-7866.8418 8597.8252 L
+-7866.8418 8596.7002 L
+fu0 0.55 1 0.3 k
+-7893.9814 8584.5215 m
+-7894.4102 8586.5254 -7893.1865 8590.1514 -7890.0874 8593.251 c
+-7886.9878 8596.3496 -7883.3457 8597.6602 -7881.3594 8597.1455 C
+-7881.3594 8597.1455 L
+-7880.875 8595.1895 -7882.1519 8591.5117 -7885.25 8588.4141 c
+-7888.3457 8585.3184 -7892.0122 8584.1064 -7893.9814 8584.5215 C
+f0 0.39 0.7 0.12 k
+-7893.9814 8609.9912 m
+-7894.4102 8607.9883 -7893.1865 8604.3613 -7890.0874 8601.2617 c
+-7886.9878 8598.1641 -7883.3457 8596.8535 -7881.3594 8597.3672 C
+-7881.3594 8597.3672 L
+-7880.875 8599.3242 -7882.1519 8603.001 -7885.25 8606.0996 c
+-7888.3457 8609.1953 -7892.0122 8610.4063 -7893.9814 8609.9912 C
+fUu0 0.55 1 0.3 k
+-7880.1782 8609.9912 m
+-7880.6074 8607.9883 -7879.3838 8604.3613 -7876.2842 8601.2617 c
+-7873.1855 8598.1641 -7869.543 8596.8535 -7867.5576 8597.3672 C
+-7867.5566 8597.3672 L
+-7867.0718 8599.3242 -7868.3496 8603.001 -7871.4473 8606.0996 c
+-7874.543 8609.1953 -7878.209 8610.4063 -7880.1782 8609.9912 C
+f0 0.39 0.7 0.12 k
+-7880.1782 8584.5215 m
+-7880.6074 8586.5254 -7879.3838 8590.1514 -7876.2842 8593.251 c
+-7873.1855 8596.3496 -7869.543 8597.6602 -7867.5576 8597.1455 C
+-7867.5566 8597.1455 L
+-7867.0718 8595.1895 -7868.3496 8591.5117 -7871.4473 8588.4141 c
+-7874.543 8585.3184 -7878.209 8584.1064 -7880.1782 8584.5215 C
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.4609 m
+-7895 8583.4609 L
+-7895 8611 L
+-7867.4609 8611 L
+-7867.4609 8583.4609 L
+n0 O
+0 0.55 1 0.3 k
+-7885.4233 8597.252 m
+-7884.3096 8595.5313 -7880.8809 8593.833 -7876.4966 8593.833 c
+-7872.1152 8593.833 -7868.6138 8595.4824 -7867.5718 8597.25 C
+-7867.5718 8597.25 L
+-7868.6138 8598.9766 -7872.1152 8600.6738 -7876.4966 8600.6738 c
+-7880.875 8600.6738 -7884.3242 8598.9375 -7885.4233 8597.252 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8609.9355 m
+-7680.4009 8609.9355 L
+-7680.4009 8602.1348 L
+-7894 8602.1348 L
+-7894 8609.9355 L
+n0 O
+0 0 0 1 k
+-7894 8606.0352 m
+-7883.9858 8608.5273 -7877.187 8609.875 -7865.2007 8609.9355 c
+-7852.2183 8610 -7787.2002 8609.9355 y
+-7722.1816 8610 -7709.2002 8609.9355 v
+-7697.2129 8609.875 -7690.415 8608.5273 -7680.4009 8606.0352 C
+-7690.415 8603.543 -7697.2129 8602.1953 -7709.2002 8602.1348 c
+-7722.1816 8602.0693 -7787.2002 8602.1348 y
+-7852.2183 8602.0693 -7865.2007 8602.1348 v
+-7877.187 8602.1953 -7883.9858 8603.543 -7894 8606.0352 C
+fU%AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050606060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101111111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262627272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313232323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+4344444445454646474747484849494A4A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
+2928282827272726262626252525242424232323232222222121212020201F1F1F1F1E1E1E1D1D1D
+1C1C1C1C1B1B1B1A1A1A191919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 0 k
+(C=0 M=0 Y=0 K=0) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+0 0.1 1 0 k
+(C=0 M=10 Y=100 K=0) Pc
+0 0.5 0 0 k
+(C=0 M=50 Y=0 K=0) Pc
+0 0.5 1 0 k
+(C=0 M=50 Y=100 K=0) Pc
+1 0.55 1 0 k
+(C=100 M=55 Y=100 K=0) Pc
+1 0.9 0.1 0 k
+(C=100 M=90 Y=10 K=0) Pc
+0.15 1 1 0 k
+(C=15 M=100 Y=100 K=0) Pc
+0.45 0.9 0 0 k
+(C=45 M=90 Y=0 K=0) Pc
+0.5 0.4 0.3 0 k
+(C=50 M=40 Y=30 K=0) Pc
+0.5 0.85 1 0 k
+(C=50 M=85 Y=100 K=0) Pc
+0.75 0.05 1 0 k
+(C=75 M=5 Y=100 K=0) Pc
+0.75 0.9 0 0 k
+(C=75 M=90 Y=0 K=0) Pc
+0.8 0.05 0 0 k
+(C=80 M=5 Y=0 K=0) Pc
+Bb
+2 (Black, White) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 / 1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 / 1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (Calligraphic Brush Tool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool.aip)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(Layer 1) Ln
+0 A
+1 Ap
+0 O
+0.9137 0.1922 0.0549 0.0039 0 0.5255 0.702 Xa
+0 R
+0 0 0 1 K
+800 Ar
+0 J 0 j 2.8346 w 4 M []0 d%AI3_Note:0 D
+0 XR
+581.4834 43.7197 m
+14.1885 43.7197 L
+14.1885 820.2881 L
+581.4834 820.2881 L
+581.4834 43.7197 L
+buu0 Ap
+0 0 0 0.75 K
+1 J 1 j370.2041 104.5977 m
+347.5264 104.5977 l
+344.4092 104.5977 341.8574 102.0469 341.8574 98.9287 c
+341.8574 96.0938 l
+341.8574 92.9756 344.4092 90.4248 347.5264 90.4248 c
+370.2041 90.4248 L
+S0 0 0 0 K
+368.5029 106.2988 m
+345.8262 106.2988 l
+342.708 106.2988 340.1572 103.748 340.1572 100.6299 c
+340.1572 97.7949 l
+340.1572 94.6768 342.708 92.126 345.8262 92.126 c
+368.5029 92.126 L
+SUu0 0 0 0.75 K
+382.96 104.5977 m
+379.8418 104.5977 377.29 102.0469 377.29 98.9287 c
+377.29 96.0938 l
+377.29 92.9756 379.8418 90.4248 382.96 90.4248 c
+399.9678 90.4248 l
+403.0859 90.4248 405.6377 92.9756 405.6377 96.0938 c
+405.6377 98.9287 l
+405.6377 102.0469 403.0859 104.5977 399.9678 104.5977 c
+382.96 104.5977 l
+s0 0 0 0 K
+381.2588 106.2988 m
+378.1416 106.2988 375.5898 103.748 375.5898 100.6299 c
+375.5898 97.7949 l
+375.5898 94.6768 378.1416 92.126 381.2588 92.126 c
+398.2666 92.126 l
+401.3857 92.126 403.9365 94.6768 403.9365 97.7949 c
+403.9365 100.6299 l
+403.9365 103.748 401.3857 106.2988 398.2666 106.2988 c
+381.2588 106.2988 l
+sUu0 0 0 0.75 K
+453.8262 104.5977 m
+450.708 104.5977 448.1563 102.0469 448.1563 98.9287 c
+448.1563 96.0938 l
+448.1563 92.9756 450.708 90.4248 453.8262 90.4248 c
+470.834 90.4248 l
+473.9512 90.4248 476.5029 92.9756 476.5029 96.0938 c
+476.5029 98.9287 l
+476.5029 102.0469 473.9512 104.5977 470.834 104.5977 c
+453.8262 104.5977 l
+s0 0 0 0 K
+452.125 106.2988 m
+449.0068 106.2988 446.4551 103.748 446.4551 100.6299 c
+446.4551 97.7949 l
+446.4551 94.6768 449.0068 92.126 452.125 92.126 c
+469.1328 92.126 l
+472.25 92.126 474.8018 94.6768 474.8018 97.7949 c
+474.8018 100.6299 l
+474.8018 103.748 472.25 106.2988 469.1328 106.2988 c
+452.125 106.2988 l
+sUu0 0 0 0.75 K
+489.2598 104.5977 m
+486.1406 104.5977 483.5898 102.0469 483.5898 98.9287 c
+483.5898 96.0938 l
+483.5898 92.9756 486.1406 90.4248 489.2598 90.4248 c
+506.2676 90.4248 l
+509.3848 90.4248 511.9355 92.9756 511.9355 96.0938 c
+511.9355 98.9287 l
+511.9355 102.0469 509.3848 104.5977 506.2676 104.5977 c
+489.2598 104.5977 l
+s0 0 0 0 K
+487.5586 106.2988 m
+484.4395 106.2988 481.8887 103.748 481.8887 100.6299 c
+481.8887 97.7949 l
+481.8887 94.6768 484.4395 92.126 487.5586 92.126 c
+504.5664 92.126 l
+507.6836 92.126 510.2344 94.6768 510.2344 97.7949 c
+510.2344 100.6299 l
+510.2344 103.748 507.6836 106.2988 504.5664 106.2988 c
+487.5586 106.2988 l
+sUu0 0 0 0.75 K
+441.0693 104.5977 m
+418.3936 104.5977 l
+415.2754 104.5977 412.7236 102.0469 412.7236 98.9287 c
+412.7236 96.0938 l
+412.7236 92.9756 415.2754 90.4248 418.3936 90.4248 c
+441.0693 90.4248 L
+S0 0 0 0 K
+439.3691 106.2988 m
+416.6924 106.2988 l
+413.5752 106.2988 411.0234 103.748 411.0234 100.6299 c
+411.0234 97.7949 l
+411.0234 94.6768 413.5752 92.126 416.6924 92.126 c
+439.3691 92.126 L
+SUu0 0 0 0.75 K
+545.9521 90.4248 m
+545.9521 98.9287 l
+545.9521 102.0469 543.4014 104.5977 540.2822 104.5977 c
+519.0234 104.5977 L
+519.0225 90.4248 l
+S0 0 0 0 K
+544.251 92.126 m
+544.251 100.6299 l
+544.251 103.748 541.7002 106.2988 538.5811 106.2988 c
+517.3223 106.2988 L
+517.3213 92.126 l
+SUu1 Ap
+0 0 0 0.75 K
+469.416 97.5117 m
+469.416 97.5117 l
+469.416 97.5117 l
+469.416 97.5117 l
+469.416 97.5117 l
+s0 0 0 0 K
+467.7148 99.2129 m
+467.7148 99.2129 l
+467.7148 99.2129 l
+467.7148 99.2129 l
+467.7148 99.2129 l
+sUu0 0 0 0.75 K
+490.6758 97.5117 m
+490.6758 97.5117 l
+490.6758 97.5117 l
+490.6758 97.5117 l
+490.6758 97.5117 l
+s0 0 0 0 K
+488.9746 99.2129 m
+488.9746 99.2129 l
+488.9746 99.2129 l
+488.9746 99.2129 l
+488.9746 99.2129 l
+sUu0 0 0 0.75 K
+398.5498 97.5117 m
+398.5498 97.5117 l
+398.5498 97.5117 l
+398.5498 97.5117 l
+398.5498 97.5117 l
+s0 0 0 0 K
+396.8496 99.2129 m
+396.8496 99.2129 l
+396.8496 99.2129 l
+396.8496 99.2129 l
+396.8496 99.2129 l
+sUU0 Ap
+0 O
+0 g
+0 0 0 1 K
+%AI5_File:
+%AI5_BeginRaster
+() 1 XG
+[ 1.0006 0 0 1.0006 34.752 789.2021 ] 114 38 0 Xh
+[ 1.0006 0 0 1.0006 34.752 789.2021 ] 0 0 114 38 114 38 8 3 0 0 0 0
+%%BeginData: 27298
+XI
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B275BED599CFE099CFE075BED50086B2
+%0086B275BED50086B20086B275BED50086B20086B2BADEEA75BED575BED5
+%65B6D00086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%44A6C744A6C70086B20086B20086B275BED50086B20086B275BED50086B2
+%0086B275BED50086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B244A6C744A6C70086B20086B20086B2BADEEA
+%75BED575BED5BADEEA0086B20086B2BADEEA75BED575BED544A6C70086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B244A6C744A6C7
+%0086B20086B20086B275BED50086B20086B275BED50086B20086B275BED5
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B244A6C744A6C70086B20086B20086B275BED50086B20086B2
+%75BED50086B20086B2BADEEA75BED575BED565B6D00086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B22095BC75BED575BED5
+%75BED544A6C70086B20086B20086B20086B275BED575BED575BED575BED5
+%75BED565B6D00086B20086B20086B20086B22095BC75BED575BED575BED5
+%44A6C70086B20086B20086B20086B20086B2108EB775BED5BADEEABADEEA
+%99CFE044A6C70086B20086B20086B275BED575BED565B6D00086B20086B2
+%65B6D075BED575BED50086B20086B20086B275BED575BED575BED575BED5
+%75BED575BED575BED50086B20086B20086B20086B20086B20086B254AECB
+%75BED575BED5108EB70086B20086B275BED575BED575BED50086B20086B2
+%0086B275BED575BED575BED554AECB0086B2309DC075BED575BED575BED5
+%2095BC0086B20086B275BED575BED565B6D00086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B289C7DBFFFFFFFFFFFFFFFFFFCEE8F00086B20086B20086B20086B2
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBADEEA0086B20086B20086B2
+%89C7DBFFFFFFFFFFFFFFFFFFCEE8F00086B20086B20086B20086B2108EB7
+%CEE8F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65B6D00086B20086B2FFFFFF
+%FFFFFFBADEEA0086B20086B2BADEEAFFFFFFFFFFFF0086B20086B20086B2
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0086B20086B20086B2
+%0086B20086B20086B22095BCEEF7FAFFFFFFAAD7E50086B265B6D0FFFFFF
+%FFFFFF54AECB0086B20086B20086B2FFFFFFFFFFFFFFFFFFBADEEA0086B2
+%75BED5FFFFFFFFFFFFFFFFFF44A6C70086B20086B2FFFFFFFFFFFFBADEEA
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B2DEEFF5FFFFFFDEEFF5FFFFFFFFFFFF
+%2095BC0086B20086B20086B2FFFFFFFFFFFFDEEFF575BED5EEF7FAFFFFFF
+%FFFFFF309DC00086B20086B2DEEFF5FFFFFFDEEFF5FFFFFFFFFFFF2095BC
+%0086B20086B20086B299CFE0FFFFFFFFFFFF89C7DB54AECBEEF7FAFFFFFF
+%FFFFFF108EB70086B2FFFFFFFFFFFFBADEEA0086B20086B2BADEEAFFFFFF
+%FFFFFF0086B20086B20086B2FFFFFFFFFFFFDEEFF575BED575BED575BED5
+%75BED50086B20086B20086B20086B20086B20086B20086B275BED5FFFFFF
+%FFFFFF54AECBEEF7FAFFFFFFBADEEA0086B20086B20086B20086B2FFFFFF
+%FFFFFFFFFFFFFFFFFF0086B2BADEEAFFFFFFFFFFFFFFFFFF44A6C70086B2
+%0086B2FFFFFFFFFFFFBADEEA0086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B2309DC0FFFFFF
+%FFFFFF75BED5FFFFFFFFFFFF75BED50086B20086B20086B2FFFFFFFFFFFF
+%BADEEA0086B289C7DBFFFFFFFFFFFF44A6C70086B2309DC0FFFFFFFFFFFF
+%75BED5FFFFFFFFFFFF75BED50086B20086B20086B2DEEFF5FFFFFFDEEFF5
+%0086B20086B244A6C754AECB2095BC0086B20086B2FFFFFFFFFFFFDEEFF5
+%75BED575BED5DEEFF5FFFFFFFFFFFF0086B20086B20086B2FFFFFFFFFFFF
+%DEEFF575BED575BED575BED565B6D00086B20086B20086B20086B20086B2
+%0086B20086B20086B2BADEEAFFFFFFFFFFFFFFFFFFEEF7FA2095BC0086B2
+%0086B20086B20086B2FFFFFFFFFFFFBADEEAFFFFFF309DC0EEF7FABADEEA
+%FFFFFFFFFFFF44A6C70086B20086B2FFFFFFFFFFFFBADEEA0086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B289C7DBFFFFFFFFFFFF2095BCCEE8F0FFFFFFCEE8F00086B2
+%0086B20086B2FFFFFFFFFFFFEEF7FABADEEAFFFFFFFFFFFFFFFFFF108EB7
+%0086B289C7DBFFFFFFFFFFFF2095BCCEE8F0FFFFFFCEE8F00086B20086B2
+%0086B2FFFFFFFFFFFFBADEEA0086B20086B20086B20086B20086B20086B2
+%0086B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0086B2
+%0086B20086B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBADEEA0086B2
+%0086B20086B20086B20086B20086B20086B20086B2309DC0FFFFFFFFFFFF
+%FFFFFF75BED50086B20086B20086B20086B20086B2FFFFFFFFFFFF75BED5
+%FFFFFF75BED5FFFFFF75BED5FFFFFFFFFFFF44A6C70086B20086B2FFFFFF
+%FFFFFFBADEEA0086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20081AE0086B2
+%0086B20086B20086B20086B20086B20086B2DEEFF5FFFFFFFFFFFF75BED5
+%CEE8F0FFFFFFFFFFFF2095BC0086B20086B2FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF65B6D00086B20086B2DEEFF5FFFFFFFFFFFF75BED5CEE8F0
+%FFFFFFFFFFFF2095BC0086B20086B2FFFFFFFFFFFFBADEEA0086B20086B2
+%44A6C744A6C70086B20086B20086B2FFFFFFFFFFFFDEEFF575BED575BED5
+%DEEFF5FFFFFFFFFFFF0086B20086B20086B2FFFFFFFFFFFFDEEFF575BED5
+%75BED575BED565B6D00086B20086B20086B20086B20086B20086B20086B2
+%0086B2AAD7E5FFFFFFFFFFFFFFFFFFDEEFF5108EB70086B20086B20086B2
+%0086B2FFFFFFFFFFFF54AECBFFFFFFDEEFF5FFFFFF54AECBFFFFFFFFFFFF
+%44A6C70086B20086B2FFFFFFFFFFFFBADEEA0086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B2006D9D006395007EAB0086B20086B20086B20086B2309DC0
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75B8D00080AD0082AF
+%FFFFFFFFFFFFCEE8F044A6C744A6C7108EB70086B20086B2309DC0FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75BED50086B20086B2AAD7E5
+%FFFFFFFFFFFF108EB70086B2CEE8F0FFFFFFEEF7FA2095BC0086B2FFFFFF
+%FFFFFFBADEEA0086B20086B2BADEEAFFFFFFFFFFFF0086B20086B20086B2
+%FFFFFFFFFFFFBADEEA0086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B254AECBFFFFFFFFFFFFAAD7E5FFFFFFFFFFFF
+%89C7DB0086B20086B20086B20086B2FFFFFFFFFFFF44A6C7CEE8F0FFFFFF
+%FFFFFF108EB7FFFFFFFFFFFF44A6C70086B20086B2FFFFFFFFFFFFBADEEA
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20083B0006596004D82006092
+%007DAA0086B20086B289C7DBFFFFFFFFFFFF99CDDF75B7CF74BDD5FFFFFF
+%FFFFFFCEE4EE0074A30072A1FFFFFFFFFFFFB8DDEA0082AF0085B10086B2
+%0086B20086B289C7DBFFFFFFFFFFFF99CFE075BED575BED5FFFFFFFFFFFF
+%CEE8F00086B20086B244A6C7FFFFFFFFFFFFDEEFF5CEE8F0FFFFFFFFFFFF
+%BADEEA0086B20086B2FFFFFFFFFFFFBADEEA0086B20086B2BADEEAFFFFFF
+%FFFFFF0086B20086B20086B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF44A6C70086B20086B20086B20086B20086B2108EB7EEF7FAFFFFFF
+%BADEEA0086B275BED5FFFFFFFFFFFF44A6C70086B20086B20086B2FFFFFF
+%FFFFFF44A6C789C7DBFFFFFFDEEFF50086B2FFFFFFFFFFFF44A6C70086B2
+%0086B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75BED50086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20076A500528600497F005F910078A6DEEFF5FFFFFFFFFFFF
+%1591B9007FAC0076A5CEE4EEFFFFFFFFFFFF2088B10078A6FFFFFFFFFFFF
+%B8DDEA00709F0074A30071A00073A2007BA8DEEFF5FFFFFFFFFFFF108EB7
+%0086B20086B2CEE8F0FFFFFFFFFFFF2095BC0086B20086B265B6D0EEF7FA
+%FFFFFFFFFFFFFFFFFFBADEEA108EB70086B20086B2FFFFFFFFFFFFBADEEA
+%0086B20086B2BADEEAFFFFFFFFFFFF0086B20086B20086B2FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44A6C70086B20086B20086B20086B2
+%0086B2AAD7E5FFFFFFEEF7FA2095BC0086B20086B2CEE8F0FFFFFFDEEFF5
+%108EB70086B20086B2FFFFFFFFFFFF44A6C765B6D0FFFFFF99CFE00086B2
+%FFFFFFFFFFFF44A6C70086B20086B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF75BED50086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20085B1006B9B00497F
+%00467C0056890072A10077A60082AF0077A60071A000699A006B9B0071A0
+%006F9E0076A50073A20073A20073A2007EAB007BA8007DAA007CA90074A3
+%0072A100709F007CA90083B00086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B244A6C744A6C72095BC0086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B2007DAA00609200497F00467C005286005B8E006899
+%0071A000699A00699A006899006D9D00709F006D9D006D9D0077A60074A3
+%0074A30078A60075A4007EAB007CA9007DAA0081AE0076A500709F0077A6
+%007EAB0086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B2007EAB
+%006899004D8200467C00497F005689005F9100699A00699A006D9D006798
+%006798006E9D0071A0006D9D0074A3006F9E0075A40072A10078A60078A6
+%0077A6007CA9007DAA0087B3007FAC00709F0075A4007EAB0085B10086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B2007FAC0072A10074A300699A005B8E00568900497F00467C
+%004D82005689006092006798006B9B006D9D006899006B9B00699A00699A
+%006F9E00709F0077A60072A10074A30078A6007BA80077A60078A6007EAB
+%0089B5007FAC0071A00073A20074A30078A6007CA90080AD0085B10086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B2BADEEA75BED5
+%75BED575BED50086B2BADEEA75BED575BED589C7DB0086B20086B2309DC0
+%89C7DB75BED589C7DB309DC00086B20086B20086B275BED50086B2BADEEA
+%75BED575BED565B6D00086B2309DC099CFE075BED589C7DB7CC1D799CFE0
+%99CFE075BED50086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20080AD0078A6007FAC008DB6008FB9
+%0075A40072A100699A00609200568900497F00467C004D82005689006092
+%006798006F9E00699A006B9B0067980071A0006D9D006D9D0071A00078A6
+%0071A00072A1007BA80073A20077A6007BA8007EAB0089B50081AE007BA8
+%007CA9007BA80076A50078A6007EAB0075A4007FAC0085B10086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B275BED50086B20086B275BED50086B275BED50086B20086B2
+%89C7DB0086B20086B289C7DB0086B20086B20086B289C7DB0086B20086B2
+%0086B275BED50086B275BED50086B20086B20086B20086B299CFE00086B2
+%0086B2108EB744A6C744A6C744A6C70086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20085B20078A6
+%0073A20089B5008DB6008DB6007CA900709F0078A60072A10071A000699A
+%00609200568900497F00467C00497F005286005B8E006596006798006D9D
+%006B9B0067980072A1006D9D006B9B0074A30071A00071A00073A2007BA8
+%0072A10077A60078A60078A6007DAA007BA8007EAB007FAC0083B0007CA9
+%0075A4007DAA0078A60076A5007BA80083B00086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B2BADEEA75BED575BED575BED5
+%0086B2BADEEA75BED5BADEEA54AECB0086B20086B275BED50086B20086B2
+%0086B275BED50086B20086B20086B275BED50086B2BADEEA75BED575BED5
+%44A6C70086B275BED50086B20086B20086B20086B244A6C744A6C70086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20081AE0081AE007CA9007BA80080AD0078A5
+%007CA90076A50075A40076A50072A10073A200699A00609200568900497F
+%00467C00467C004D82005689005F9100639500699A006899006B9B0073A2
+%00699A006D9D0074A30076A50072A10071A00072A10078A60075A40078A6
+%0072A10072A10075A40076A5007BA80080AD0092BA008DB6007EAB006D9D
+%0074A30076A5007CA90083B00086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%75BED50086B20086B20086B20086B275BED50086B275BED5309DC00086B2
+%0086B289C7DB0086B20086B20086B289C7DB0086B244A6C70086B275BED5
+%0086B275BED50086B20086B20086B20086B289C7DB0086B20086B22095BC
+%54AECB44A6C744A6C70086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20083B0007FAC
+%0083B0007BA80085B10071A0007EAB007BA80078A60078A60077A6007BA8
+%006D9D006D9D006D9D006D9D006596005B8E00528600467C00467C00467C
+%00497F005286005B8E00639500699A0068990074A3006D9D006D9D006D9D
+%0073A2006F9E0071A0006B9B006D9D006F9E0071A00076A50077A6007EAB
+%00709F00699A00699A007EAB008FB90083B00078A60074A30076A50083B0
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B275BED50086B20086B20086B20086B275BED5
+%0086B20086B289C7DB0086B20086B2309DC089C7DB75BED589C7DB309DC0
+%0086B289C7DB75BED565B6D00086B2BADEEA75BED575BED565B6D00086B2
+%309DC089C7DB75BED599CFE0108EB744A6C744A6C70086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B2007FAC0074A30089B5
+%0080AD0078A6007BA80083B000709F006B9B006D9D006D9D00709F006E9D
+%006D9D00699A006092005B8E00528600497F00467C00467C00497F004D82
+%005689005B8E00609200689900679800699A006899006D9D00699A006E9D
+%0071A00074A3007BA8006D9D006D9D006B9B0073A20077A6006F9E0071A0
+%0077A60089B5008DB6007EAB0071A00074A30074A30078A60078A60082AF
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20083B00075A40085B1008FB90089B50086B2007CA90076A5
+%0078A60072A10076A50071A00071A00072A10072A10072A1006D9D00699A
+%006395005F9100568900528600497F00467C00467C00497F00497F004D82
+%005689005689005B8E0060920067980072A1006B9B00699A006D9D0072A1
+%0078A600699A00699A0075A40080AD007DAA007BA8007EAB007DAA0089B5
+%0092BA0096BD0092BA0083B0007CA90076A50083B00086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B2007EAB0077A6
+%007CA90092BA008DB6007DAA007DAA0077A60077A60078A6007CA90074A3
+%0075A4007BA80071A00072A100709F0074A30074A30073A2006B9B006798
+%006798005F91005B8E005689005286004D8200497F00497F00497F00497F
+%00497F005286005286005B8E005689005F910063950076A50073A2006D9D
+%0071A00076A5007EAB0087B3008FB90092BA0096BD0099BF0096BD0092BA
+%0085B10077A60086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B2007CA90074A30085B1008FB90092BA
+%007FAC007BA80081AE0077A60078A6007CA90078A60078A60076A50075A4
+%0076A50075A40074A30075A40076A50073A20072A10071A00071A0006B9B
+%00699A00699A006899006092006092005B8E005B8E005286005689005286
+%005286004D82004D82005286005286005B8E0060920072A1007CA90086B2
+%008DB6008FB9008FB90096BD009AC00092BA007CA9007CA90086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20082AF007BA8007DAA0087B30076A50096BD0099BF0081AE0086B2
+%0096BD0086B2007BA80078A60078A60075A40078A60078A60077A60077A6
+%0074A3007CA90076A50074A30072A10073A20075A40072A1006B9B006B9B
+%0075A40078A600699A0067980071A0006798006899006798006B9B005F91
+%005B8E0072A10076A50077A6006D9D0074A30075A4007CA90078A6007EAB
+%0089B50080AD0086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20081AE007CA9
+%0076A5007CA90077A60071A00086B2008FB9007EAB007DAA007EAB007DAA
+%007BA8007CA9007FAC0081AE007BA80076A5007EAB0078A60077A60078A6
+%0078A6007BA80074A3006F9E0071A0007CA9007BA8006D9D0073A20078A6
+%0072A10073A20076A5007CA90075A40076A5008FB90092BA0099BF0092BA
+%0092BA0092BA008FB9008FB90089B5007BA80086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20085B10083B0007DAA
+%0078A60074A30074A30074A3006F9E006F9E0075A40089B50086B2007BA8
+%0078A6008DB6008DB60081AE007BA8007BA80082AF0087B3007CA90078A6
+%0089B5008DB60080AD007CA90081AE007FAC007FAC0078A6007DAA0087B3
+%007DAA0083B0008FB90092BA0092BA008FB90089B50078A60075A4007FAC
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0083B0007EAB007EAB0078A60075A40074A30077A60075A40072A10076A5
+%0078A6007FAC0087B3007DAA0073A2007CA9007BA8006F9E0077A60085B1
+%007DAA0075A4007BA80078A60077A60073A20071A00076A50077A6007BA8
+%0081AE0086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B20086B20086B20086B20086B20086B20086B20086B20086B2
+%0086B20086B2
+%%EndData
+XH
+%AI5_EndRaster
+Bu0 To
+1 0 0 1 383.8105 69.7324 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 0.8 k
+0 J 0 j 1 w%_ 0 50 XQ
+/_AvantGarde-Book 11.3386 11.2138 -2.5284 Tf
+0 Ts
+100.7621 100 Tz
+0 Tt
+%_0 0 100 100 Xu
+%AI55J_GlyphSubst: GlyphSubstNone
+0 TA
+%_ 0 XL
+0 TY
+0 TV
+36 0 Xb
+XB
+0 0 5 TC
+100 100 200 TW
+25 TG
+0 0 0 Ti
+0 Ta
+0 1 2 2 3 Th
+0 Tq
+240 Tg
+12.7559 0 Tl
+0 Tc
+0 Tw
+(The XML Publishing Framework) Tx
+(\r) Tx
+TO
+0 To
+1 0 0 1 382.6768 70.8662 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 0 k
+(The XML Publishing Framework) Tx
+(\r) Tx
+TO
+ULB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/ASF_20_SRC_AUTO/misc/graphics/cocoon.jpg b/ASF_20_SRC_AUTO/misc/graphics/cocoon.jpg
new file mode 100644
index 0000000..af9d18c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/cocoon.jpg
Binary files differ
diff --git a/ASF_20_SRC_AUTO/misc/graphics/cocoon2.ai b/ASF_20_SRC_AUTO/misc/graphics/cocoon2.ai
new file mode 100644
index 0000000..98294c3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/cocoon2.ai
@@ -0,0 +1,9617 @@
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Stefano Mazzocchi) ( )
+%%Title: (cocoon2.ai)
+%%CreationDate: 2/23/2002 7:54 PM
+%%BoundingBox: -23 422 545 842
+%%HiResBoundingBox: -22.0845 422.583 544.75 841.4175
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 ()
+%AI3_TemplateBox: 296.5 419.5 296.5 419.5
+%AI3_TileBox: 8 40 584 832
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 592 840
+%AI5_RulerUnits: 1
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: -39 897.6665 1.5 1012 671 18 0 1 8 90 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:8 40
+%%AI3_PaperRect:-8 834 587 -8
+%%AI3_Margin:8 -40 -9 8
+%AI7_GridSettings: 14.1732 2 14.1732 2 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI7_Thumbnail: 128 96 8
+%%BeginData: 8842 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD7FA87D7DFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFFA87DFD7E
+%FFA8A8FD7EFF7D7DFD7EFFA8A8FD7EFFA87DFD21FF7E59597D597D597D59
+%7D597D597D597D597D597D597D597D597D597D597D597D597D597D597D59
+%7D597D597D597D597D597D597D597D597D597D597DFD21FFA8A8FD20FF2E
+%3613360D3613360D3613360D3613360D3613360D3613360D3613360D3613
+%360D3613360D3613360D3613360D3613360D3613360D3613360D3613362F
+%5984FD1FFFA87DFD1FFF2E360D360D360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D360D360D360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D360D537DFD1EFFA8A8FD1EFF59360D3613360D
+%3613360D3613360D3613360D3613360D3613360D3613360D3613360D3613
+%360D3613360D3613360D3613360D3613360D3613360D3613360D361359FD
+%1EFFA87DFD1EFF590D360D360D360D36355A595A59592F36355A595A597D
+%0D36355A595A59592F36355A595A597D0D362F5A595A597D0D365959595A
+%59590D360D360D360D360D362FA8FD1DFFA8A8FD1EFF2F3613360D361336
+%0D842F360D3613360D842F360D36357D0D842F360D3613360D842F360D36
+%357D0D842F360D36357D0D5A13360D3659590D3613360D3613360D367DFD
+%1DFF7D7DFD1EFF2F0D360D360D360D3659360D360D360D3659360D360D36
+%593659360D360D360D3659360D360D36593659360D360D3659362F360D36
+%0D3659360D360D360D360D360D84FD1DFFA8A8FD1EFF2F3613360D361336
+%0D36595A595A595A0D36595A595A59590D36595A595A595A0D36595A595A
+%59590D36595A595A59590D5A13360D36135A0D3613360D3613360D367DFD
+%1DFFA87DFD1EFF590D360D360D360D360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D360D360D360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D362EFD1EFFA8A8FD1EFFA8350D3613360D3613
+%360D3613360D3613360D3613360D3613360D3613360D3613360D3613360D
+%3613360D3613360D3613360D3613360D3613360D3613360D36357DFD1EFF
+%A87DFD1FFF592F0D360D360D360D360D360D360D360D360D360D360D360D
+%360D360D360D360D360D360D360D360D360D360D360D360D360D360D360D
+%360D360D360D360D53FD1FFFA8A8FD20FFA8FD3B5953A8FD20FFA87DFD7E
+%FFA8A8FD7EFF7D7DFD7EFFA8A8FD7EFFA87DFD20FF8453592F5953592F59
+%53592F5953592F5953592F5953592F5953592F5953592F5953592F595359
+%2F5953592F5953592F5953592F5953592F59535952A8FD21FFA8A8FD1FFF
+%592F36135A36605A5A366013360D605A5A366035360D36135A36605A5A36
+%36133635605A5A366013360D36365A36605A5A0D36355A36605A5A363613
+%362F59FD20FFA87DFD1EFF7D0D360D602F2F2E352F2F2E350D842E352F2F
+%2E7E35360D842E2F2E352F2F2E36355A2E352F2F2F7E0D3635592F2F2E35
+%2F7D0D5A2E2F2E352F3559360D360D84FD1FFFA8A8FD1EFF59360D605336
+%0D3613360D36135A533613360D3635842F842E360D3613360D3613842F36
+%13360D3635590D842F360D3613365A595A590D3613360D3659360D3659FD
+%1FFFA87DFD1EFF7D0D360D7E35360D360D360D360D7E2F360D360D605335
+%0D7E2F360D360D360D36357D0D360D360D842E36595A0D360D36355A2E5A
+%2F360D360D360D5A0D360D7DFD1FFFA8A8FD1EFFA85913360D5A595A595A
+%595A2F361359595A595A2F3613360D5A595A595A59590D363559595A595A
+%2F3613362F5A595A595A2F36353613360D3613362F361353A8FD1FFF7D7D
+%FD1FFFA8592E2F0D360D360D360D360D360D360D360D360D360D360D360D
+%360D360D360D360D360D360D360D360D360D360D360D360D360D360D360D
+%360D2F2E59A8FD20FFA8A8FD22FFA8A87D847DA87D847DA87D847DA87D84
+%7DA87D847DA87D847DA87D847DA87D847DA87D847DA87D847DA87D847DA8
+%7D847DA87D847DA87D84A8FD23FFA87DFD7EFFA8A8FD7EFFA87DFD7EFFA8
+%A8FD7EFFA87DFD7EFFA8A8FD7EFF7D7DFD7EFFA8A8FD26FFFD3159FD27FF
+%A87DFD25FF7D350D360D360D360D360D360D360D360D360D360D360D360D
+%360D360D360D360D350D350D2F2E350D350D360D350D360D357DFD26FFA8
+%A8FD25FF7E13362F592F352F5213592F362F352F362F350D362F532F3513
+%360D532F360D592F362F3613350D362F352F592F360D36137EFD26FFA87D
+%FD25FF59360D352E352F2F0D360D2F2E350D350D362F2F2E352F360D360D
+%360D2F2F2F0D360D350D360D360D350D360D350D360D3659FD26FFA8A8FD
+%25FF7E133636605A5A365A133636605A5A3536133636605A5A365A133636
+%605A5A3536133636605A5A3536135A36605A5A3536137EFD26FFA87DFD25
+%FF59365A532E352F2F2E365A532E352F592F365A532E352F2F2E365A532E
+%352F592F365A532E352F592F36532F2E352F7D2F3659FD26FFA8A8FD25FF
+%7E0D7E13360D3613360D7E13360D36357D0D7E13360D3613360D7E13360D
+%36357D0D7E35360D36137D0D5A13360D3613590D7EFD26FF7D7DFD25FF59
+%36595A355A355A3536595A355A35842E36595A355A355A3536595A355A35
+%842E36595A355A35842E362F360D360D36593659FD26FFA8A8FD25FF7D2F
+%362F592F592F590D362F592F592F360D362F592F592F590D362F592F592F
+%360D362F592F592F360D3613360D3613362F7EFD26FFA87DFD26FF532E35
+%2F2F2E352F2F2E352F2F2E352F2F2E352F2F2E352F2F2E352F2F2E352F2F
+%2E352F2F2E352F2F2E352F2F2E352F53FD27FFA8A8FD7EFFA87DFD7EFFA8
+%A8FD7EFFA87DFD7EFFA8A8FD21FFA87D847D847D847D847D847D847D847D
+%847D847D847D847D847D847D847D847D847D847D847D847D847D847D847D
+%847D847D847D847D847D847D847D847D847D847D847D847D847D847D847D
+%847D8484FD0DFF7D7DFD1FFF7D592F360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D360D360D360D360D360D360D360D360D360D36
+%0D360D360D360D360D360D360D360D360D360D360D360D360D360D360D36
+%0D360D352E59FD0BFFA8A8FD1EFF5959133635605A5A36605A360D605A5A
+%36603636353613360D3613360D605A5A36605A3635605A5A36605A360D60
+%5A5A36605A3636605A5A366036360D3613360D36135A36605A5A36361336
+%0D3613360D5A13362F53A9FD09FFA87DFD1DFF7D350D360D352E352F5959
+%7E2F5A2F352F2F2E84355A0D3635360D36596059592F2F2E350D352E352F
+%2F597E2F6059592F2F2E352F592E352F2F2E8435360D360D360D362F2F2E
+%352F7D5A36595A3560365A2F360D360D59FD09FFA8A8FD1DFF5913360D36
+%13360D6059592E36357E36605A6059353584368459605935357D59605A5A
+%363613360D36137E5936357D59605A5A3636595A36605A60595913360D36
+%13360D605A5A36607E520D362F3553592F350D3613362F84FD08FFA87DFD
+%1CFF7D0D360D360D360D360D350D360D362F2F2E352F2F0D362F2F2E2F2F
+%2F0D362F2F2E352F2F0D360D360D362F2F2F362F2F2E352F2F0D352F2F2E
+%352F2F0D360D360D360D362F352F2F2E2F0D360D360D2F0D360D360D360D
+%362EFD08FFA8A8FD1CFF593613360D3613360D3613360D3613360D361336
+%0D3613360D3613360D3613360D3613360D3613360D3613360D3613360D36
+%13360D3613360D3613360D3613360D3613360D3613360D3613360D361336
+%0D3613360D3613360D59FD08FFA87DFD1CFF590D360D360D5A84FD09FF59
+%360D84A8FD07FF845A0D3635A9FD09FF840D365AFD08FFA835360D3684FD
+%07FFA8842F365AFD09FF7E360D360D362EFD08FFA8A8FD1CFF53360D3613
+%36A9A8FD0A272F84A952FD07277DA85913FF7D2EFD0927355AFF52FD0627
+%527DFF2F36AFA8FD072753A87D138452FD072752FF7D360D361335FD08FF
+%7D7DFD1CFF590D360D360DFFF8360D360D360D360D360D365A7D2E360D36
+%0D3635360DAF2836FF270D360D360D360D360D360D84592F0D360D360D36
+%3536A8520DFFF83635360D360D360D5A7D2F5A7D0D360D360D360D3659A8
+%2F360D362EFD08FFA8A8FD1CFF84360D361336FF5913360D3613360D3613
+%360D857D360D3613360D5A5236A95313FF2E3613360D3613360D36133684
+%7D13360D36133636592FFF2736FF5335592F360D3613365AAF2E85523613
+%360D3613360D60A8590D361359FD08FFA87DFD1DFF2E360D360DA97D6036
+%5A355A365A355A353635FF7D5A355A365A356084FF2736A8A8595A365A35
+%5A365A35360D5AA884365A355A365A35A9A9270DA9A85A355A365A355A5A
+%FF52535A7D0D360D360D360D3635A82F360D59A8FD08FFA8A8FD1EFF2E36
+%0D36357DFD09A87D2F3659FD09A827350D367DFD09A87D36137E7DFD07A8
+%7D272F363584FD08A852270D6027360D3613360D3613367D59133559FD09
+%FFA87DFD1EFFA82E350D360D2F2E352F2F2E352F2F2E350D360D352F2F2E
+%352F2F2E350D360D362F2F2E352F2F2E352F2F0D360D352E352F2F2E352F
+%2F0D360D360D352F2F2E352F2F2E350D360D350D360D360D360D360D350D
+%3559FD0AFFA8A8FD20FF59592F592F592F592F592F592F592F592F592F59
+%2F592F592F592F592F592F592F592F592F592F592F592F592F592F592F59
+%2F592F592F592F592F592F592F592F592F592F592F592F592F592F592F59
+%537DA8FD0BFFA87DFD7EFFA8A8FD7EFF7D7DFD7EFFA8A8FD7EFFA87DFD7E
+%FFA8A8FD7EFFA87DFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFF7D7DFD7E
+%FFA8A8FD7EFFA87DFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFFA87DFD7E
+%FFA8A8FD7EFF7D7DFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFFA87DFD7E
+%FFA8A8FD7EFFA87DFD7EFFFD04A87DA8A8A87DA8A8A87DA8A8A87DA8A8A8
+%7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8
+%A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A8
+%7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8
+%A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DFD7FFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient_Sep 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient_Sep 5 dict dup begin put
+/AGM_Gradient_Sep_private 100 dict def
+/initialize{
+ AGM_Gradient_Sep begin
+ AGM_Gradient_Sep_private begin
+ _compositeJob{
+ initializeSinglePassSeps
+ }{
+ initializeMultiPassSeps
+ }ifelse
+ initializeSeps
+ AGM_Gradient_private begin
+ /_fillSD newSpotDict def
+ /_rampSD newSpotDict def
+ /_nCustomColorSD nd
+ end
+ AGM_Gradient_Sep_private
+ {
+ dup xcheck 1 index type /arraytype eq and
+ {
+ bind
+ }if
+ pop pop
+ }forall
+ AGM_Gradient_Sep
+ {
+ dup xcheck 1 index type /arraytype eq and
+ {
+ bind
+ }if
+ pop pop
+ }forall
+ end
+
+ currentdict readonly pop
+ end
+}def
+/terminate{
+ currentdict AGM_Gradient_Sep eq{
+ end
+ }if
+}def
+AGM_Gradient_Sep_private begin
+/initializeSeps{
+ /currentoverprint { _of } def
+ _noImage not _level2PS not and{
+ /linealFill{
+ currentoverprint{
+ 0 0 1 1 rectfill
+ }{
+ mySave
+ 8 setImageParms
+ _color{
+ _nCustomColorSD begin
+ cyan magenta yellow black
+
+ _spotColor{
+ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put
+ spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put
+ }if
+ end
+
+ 4{
+ makeByte8 4 1 roll
+ }repeat
+ true 4 _nCustomColorSD ncolorimage
+ }{
+ _nCustomColorSD/black get 1 exch sub makeByte8
+ _nCustomColorSD bwImage
+ }ifelse
+ myRestore
+ }ifelse
+ }def
+ }if
+ /_whiteBytes 1 makeByte8 pt
+ /knockOut{
+ _noImage _level2PS or currentoverprint or{
+ gsave
+ false setoverprint
+ 1 setgray
+ 0 0 1 1 rectfill
+ grestore
+ }{
+ 8 setImageParms _whiteBytes /_image load 5 execImage
+ }ifelse
+ }def
+ /newSpotDict{
+ 11 dict dup begin
+ /nSpots 2 def
+ /spot1 7 dict def
+ /spot2 7 dict def
+ end
+ }def
+ /initSpotData
+ {
+ begin
+ /name nd
+ /tintImage nd
+ /tintValue nd
+ /spot_C nd
+ /spot_M nd
+ /spot_Y nd
+ /spot_K nd
+ end
+ }def
+ /initSpotDict{
+ begin
+ /cyanInk nd
+ /magentaInk nd
+ /yellowInk nd
+ /blackInk nd
+ /cyan nd
+ /magenta nd
+ /yellow nd
+ /black nd
+ spot1 initSpotData
+ spot2 initSpotData
+ end
+ }def
+ /copySpotDict{
+ /_dst xp
+ begin
+ cyanInk magentaInk yellowInk blackInk
+ cyan magenta yellow black
+ spot1 spot2
+ end
+ _dst begin
+ /spot1 spot1 maxlength dict def
+ /spot2 spot2 maxlength dict def
+ spot2 copy pop
+ spot1 copy pop
+ /black xd
+ /yellow xd
+ /magenta xd
+ /cyan xd
+ /blackInk xd
+ /yellowInk xd
+ /magentaInk xd
+ /cyanInk xd
+ end
+ }def
+ /setCustomColor
+ {
+ 1 index /Black eq{
+ 6 1 roll 5 npop
+ 1 exch sub
+ setgray
+ }{
+ 6 1 roll _ccAry1 astore exch
+ dup null eq{
+ pop 0
+ }if
+ setcustomcolor
+ }ifelse
+ }def
+ /setCStop{
+ /_colorStyle exch pt
+
+ _colorStyle 0 eq{
+ 0 0 0
+ 4 -1 roll
+ 1 exch sub
+ _spotColor{
+ /_colorStyle 3 pt
+ /Black
+ 1 index
+ 1 exch sub
+ }if
+ }if
+ _colorStyle 2 eq{
+ 3 npop
+ }if
+ _rampSD _fillSD copySpotDict
+
+ _colorStyle 4 eq{
+ pop
+ 9 2 roll 3 npop 6 -2 roll
+ } if
+
+ _colorStyle 3 eq _colorStyle 4 eq or{
+
+ _fillSD begin
+ /_spot1 spot1 pt
+ /_spot2 spot2 pt
+ end
+
+ exch dup _spot1/name get eq{
+ _spot1 _spot2
+ }{
+ _spot2 _spot1
+ }ifelse
+ begin
+ begin
+ /name xd
+ 1 exch sub /tintValue xd
+ 4{
+ tintValue mul 4 1 roll
+ }repeat
+ _spotColor not{
+ /tintValue null def
+ }if
+ end
+ /tintValue 0 def
+ end
+ }if
+ _fillSD nsetcustomcolor
+ }def
+ /renderCMYK{
+ spot1/name get null eq
+ spot2/name get null eq and
+ dup not{
+ pop
+ spot1 spotConverted
+ }if
+ dup not{
+ pop
+ spot2 spotConverted
+ }if
+ }def
+ /currentInk{
+ true
+ _inRipSep{
+ currentcolorspace 0 get
+ dup /DeviceGray eq
+ 1 index /DeviceCMYK eq or{
+ pop
+ currentcmykcolor add add add 0 eq{
+ pop false
+ }if
+ }{
+ /Separation eq{
+ currentcolor 0 eq{
+ pop false
+ }if
+ }if
+ }ifelse
+ }{
+ currentgray 1 eq{
+ pop false
+ }if
+ }ifelse
+ }def
+ /currentInkN{
+
+ _nCustomColorSD begin
+ /_spot1 spot1 pt
+ /_spot2 spot2 pt
+ renderCMYK
+ end
+ {
+ currentInk
+ }{
+ gsave
+ _spot1 begin
+ name null ne{
+ spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+ currentInk
+ }{
+ false
+ }ifelse
+ end
+ _spot2 begin
+ name null ne{
+ spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+ currentInk
+ }{
+ false
+ }ifelse
+ end
+ grestore
+
+ or
+ } ifelse
+ }def
+ /fill_ /fill load def
+ /fillOvp{
+ currentoverprint{
+ _inRipSep{
+ currentcolorspace 0 get
+ dup /DeviceGray eq
+ 1 index /DeviceCMYK eq or{
+ pop
+ currentcmykcolor add add add 0 eq{
+ newpath
+ }if
+ }{
+ /Separation eq{
+ currentcolor 0 eq{
+ newpath
+ }if
+ }if
+ }ifelse
+ }{
+ currentgray 1 eq{
+ newpath
+ }if
+ }ifelse
+ }if
+ fill_
+ }def
+ /fill{
+ _nCustomColorSD begin
+ /_spot1 spot1 pt
+ /_spot2 spot2 pt
+ renderCMYK
+ end
+
+ {
+ fillOvp
+ }{
+ _spot1 begin
+ gsave
+ name null ne{
+ spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+ }{
+ 1 setgray
+ }ifelse
+ fillOvp
+ grestore
+ end
+ _spot2 begin
+ name null ne{
+ gsave
+ true setoverprint
+ spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+ fillOvp
+ grestore
+ }if
+ end
+ newpath
+ }ifelse
+ }def
+ /expandSpot{
+ _spotColor{
+ /_len xp
+ _rampSD begin
+ spot1 begin
+ tintImage null ne{
+ tintImage _len expandOne /tintImage xd
+ }if
+ end
+ spot2 begin
+ tintImage null ne{
+ tintImage _len expandOne /tintImage xd
+ }if
+ end
+ end
+ }{
+ pop
+ }ifelse
+ }def
+ /rampImage{
+ currentoverprint{
+ rectImage
+ }{
+ _enabledSmoothShade{
+ fillRamp
+ }{
+ _color{
+ _rampSD begin
+ /cyanInk _cyanData 0 ne def
+ /magentaInk _magentaData 0 ne def
+ /yellowInk _yellowData 0 ne def
+ /blackInk _blackData 0 ne def
+ end
+
+ _nSamples setImageParms
+ _nSamples expandSpot
+ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+ true 4 _rampSD ncolorimage
+ }{
+ _rampSD begin
+ /cyanInk false def
+ /magentaInk false def
+ /yellowInk false def
+ /blackInk true def
+ end
+ _nSamples setImageParms
+ _blackData _rampSD bwImage
+ }ifelse
+ }ifelse
+ }ifelse
+ }def
+ /nsetcustomcolor where{
+ pop
+ }{
+ /nsetcustomcolor
+ {
+ /_nCustomColorSD xp
+ _nCustomColorSD begin
+ 4 copy
+ /black xd
+ /yellow xd
+ /magenta xd
+ /cyan xd
+ 4 copy
+ 0 ne /blackInk xd
+ 0 ne /yellowInk xd
+ 0 ne /magentaInk xd
+ 0 ne /cyanInk xd
+ end
+ setcmykcolor
+ }def
+ }ifelse
+ /nsetcustomcolorend where{
+ pop
+ }{
+ /nsetcustomcolorend
+ {
+ /_nCustomColorSD null pt
+ }def
+ }ifelse
+}def
+/initializeSinglePassSeps{
+ /_decodeNorm [0 1] pt
+ /_decodeInvert [1 0] pt
+ /spotConverted
+ {
+ begin
+ name null eq{
+ false
+ }{
+ tintValue null eq tintImage null eq and{
+ true
+ }{
+ _inDistiller{
+ false
+ }{
+ false
+ currentpagedevice/SeparationColorNames get{name eq or}forall
+ not
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /dictImage
+ {
+ 20 dict dup begin
+ /Dict xd
+ /Decode xd
+ /DataSource xd
+ /ImageMatrix xd
+ /BitsPerComponent xd
+ /Height xd
+ /Width xd
+ /ImageType 1 def
+ Dict
+ end
+ /_image load 1 execImage
+ }def
+ /bwImage{
+ begin
+ gsave
+ currentoverprint{
+ blackInk{
+ [/Separation /Black /DeviceGray{}] setcolorspace
+ _decodeInvert dictImage
+ }{
+ 5 npop
+ }ifelse
+ }{
+ /DeviceGray setcolorspace
+ _decodeNorm dictImage
+ }ifelse
+ grestore
+ end
+ }def
+ /ncolorimage where{
+ pop
+ }{
+ /ncolorimage{
+ begin
+ renderCMYK{
+ cyanInk
+ magentaInk and
+ yellowInk and
+ blackInk and
+ not
+ currentoverprint
+ and{
+ pop pop
+ gsave
+ cyanInk{
+ 8 copy
+ [/Separation /Cyan /DeviceGray{}] setcolorspace
+ 3 npop
+ _decodeNorm dictImage
+ }if
+ magentaInk{
+ 8 copy
+ [/Separation /Magenta /DeviceGray{}] setcolorspace
+ 4 -1 roll
+ 3 npop
+ _decodeNorm dictImage
+ }if
+ yellowInk{
+ 8 copy
+ [/Separation /Yellow /DeviceGray{}] setcolorspace
+ 4 -2 roll
+ 3 npop
+ _decodeNorm dictImage
+ }if
+ blackInk{
+ 4 -3 roll
+ [/Separation /Black /DeviceGray{}] setcolorspace
+ 3 npop
+ _decodeNorm dictImage
+ }{
+ 8 npop
+ }ifelse
+ grestore
+ }{
+ /_colorimage load 10 execImage
+ }ifelse
+ }{
+ 6 npop
+ gsave
+ spot1 begin
+ name null ne tintImage null ne and{
+ [/Separation name /DeviceGray{}] setcolorspace
+ 4 copy
+ tintImage
+ name /Black eq{
+ _decodeNorm
+ }{
+ _decodeInvert
+ }ifelse
+ dictImage
+ }{
+ 1 setgray fill
+ }ifelse
+ end
+ spot2 begin
+ true setoverprint
+ name null ne tintImage null ne and{
+ [/Separation name /DeviceGray{}] setcolorspace
+ tintImage
+ name /Black eq{
+ _decodeNorm
+ }{
+ _decodeInvert
+ }ifelse
+ dictImage
+ }{
+ 4 npop
+ 1 setgray fill
+ }ifelse
+ end
+ grestore
+ }ifelse
+ end
+ }def
+ }ifelse
+ /getRampColorSpace{
+
+ /_renderCMYK _rampSD begin renderCMYK end pt
+
+ _renderCMYK not{
+ _rampSD begin
+ [/DeviceN
+ [
+ spot1 begin
+ name null ne tintImage null ne and{
+ name
+ }if
+ end
+ spot2 begin
+ name null ne tintImage null ne and{
+ name
+ }if
+ end
+ ]
+ _inDistiller {
+ /DeviceCMYK [
+ spot1 begin
+ name null ne tintImage null ne and{
+ spot_C spot_M spot_Y spot_K 1
+ }{
+ 0 0 0 0 0
+ }ifelse
+ end
+ spot2 begin
+ name null ne tintImage null ne and{
+ spot_C spot_M spot_Y spot_K 2
+ }{
+ 0 0 0 0 0
+ }ifelse
+ end
+ 5 1 roll 6 -2 roll add
+ dup 1 eq {
+ pop
+ 8 /index cvx 1 /exch cvx /sub cvx
+ 9 1 /roll cvx
+ }{
+ 2 eq {
+ 8 /index cvx 1 /exch cvx /sub cvx
+ 10 1 /roll cvx
+ }if
+ }ifelse
+ 4 1 /roll cvx 5 -2 /roll cvx
+ 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx
+ 3 1 /roll cvx 4 -2 /roll cvx
+ 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx
+ 2 1 /roll cvx 3 -2 /roll cvx
+ 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx
+ 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx
+ 6 -2 /roll cvx /pop cvx /pop cvx
+ ] cvx bind
+ }{
+ /DeviceCMYK {}
+ }ifelse
+ ] setcolorspace
+ end
+ /_nColorSpace currentcolorspace pt
+ }if
+
+ _nSamples 1 gt{
+ /_ndx 0 pt
+ [blendColor] cvx exec
+ }if
+ _renderCMYK{
+ /_C0 [currentcolor] pt
+ /_C0_Space currentcolorspace pt
+ }{
+ /_C0 [
+ _nCustomColorSD begin
+ spot1 begin
+ name null ne{
+ tintValue
+ }if
+ end
+ spot2 begin
+ name null ne{
+ tintValue
+ }if
+ end
+ end
+ ] pt
+ /_C0_Space _nColorSpace pt
+ }ifelse
+
+ _nSamples 1 gt{
+ /_ndx _nSamples 1 sub pt
+ [blendColor] cvx exec
+ }if
+ _renderCMYK{
+ /_C1 [currentcolor] pt
+ /_C1_Space currentcolorspace pt
+ }{
+ /_C1 [
+ _nCustomColorSD begin
+ spot1 begin
+ name null ne{
+ tintValue
+ }if
+ end
+ spot2 begin
+ name null ne{
+ tintValue
+ }if
+ end
+ end
+ ] pt
+ /_C1_Space _nColorSpace pt
+ }ifelse
+
+ /_rampColorSpace _C0_Space pt
+ _spotColor{
+ nsetcustomcolorend
+ }if
+ }def
+}def
+/initializeMultiPassSeps{
+ /invertXfer{
+ [
+ {
+ 1 exch sub
+ }/exec load systemdict /currenttransfer get exec /exec load
+ ] cvx systemdict /settransfer get exec
+ }def
+ /ccThrough{
+ gsave
+ 1 setCustomColor
+ currentcmykcolor
+ grestore
+ add add add 0 ne
+ }def
+ /spotConverted
+ {
+ begin
+ _isCMYKSep not{
+ false
+ }{
+ name null eq{
+ false
+ }{
+ tintValue null eq tintImage null eq and{
+ true
+ }{
+ spot_C spot_M spot_Y spot_K name ccThrough
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /spotChannel
+ {
+ _isCMYKSep{
+ pop false
+ }{
+ /_spotDict xp
+ _spotDict/name get null eq{
+ false
+ }{
+ _spotDict/spot_C get
+ _spotDict/spot_M get
+ _spotDict/spot_Y get
+ _spotDict/spot_K get
+ _spotDict/name get
+ ccThrough
+ }ifelse
+ }ifelse
+ }def
+ /getChannelData
+ {
+ _isCMYKSep dup{
+ pop renderCMYK
+ }if
+ {
+ _blackPlate{
+ 4 1 roll 3 npop blackInk
+ }{
+ _yellowPlate{
+ 4 2 roll 3 npop yellowInk
+ }{
+ _magentaPlate{
+ 4 3 roll 3 npop magentaInk
+ }{
+ 3 npop cyanInk
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ true /nonZeroData
+ }{
+ true /zeroData
+ }ifelse
+ }{
+ 4 npop
+ spot1/name get null ne
+ spot1 spotChannel and{
+ spot1/tintImage get dup null ne{
+ false /nonZeroData
+ }{
+ pop false /noData
+ }ifelse
+ }{
+ spot2/name get null ne
+ spot2 spotChannel and{
+ spot2/tintImage get dup null ne{
+ false /nonZeroData
+ }{
+ pop false /noData
+ }ifelse
+ }{
+ false /noData
+ }ifelse
+ }ifelse
+ }ifelse
+ }def
+ /renderChannelData
+ {
+ /_tmp xp
+ _tmp /nonZeroData ne currentoverprint and{
+ pop
+ _tmp /zeroData eq{pop}if
+ 4 npop
+ }{
+ _tmp /nonZeroData eq{
+ {
+ invertXfer
+ }if
+ systemdict/image
+ get 5 execImage
+ }{
+ pop
+ _tmp /zeroData eq{pop}if
+ 4 npop
+ knockOut
+ }ifelse
+ }ifelse
+ }def
+ /bwImage{
+ begin
+ gsave
+ dup dup dup
+ getChannelData
+ exch pop false exch
+ renderChannelData
+ grestore
+ end
+ }def
+ /ncolorimage{
+ begin
+ pop pop
+ gsave
+ spot2/name get null ne spot2 spotChannel and{
+ true setoverprint
+ }if
+ getChannelData
+ renderChannelData
+ grestore
+ end
+ }def
+ /getRampColorSpace{
+
+ /_renderCMYK _rampSD begin renderCMYK end pt
+
+ _nSamples 1 gt{
+ /_ndx 0 pt
+ [blendColor] cvx exec
+ }if
+
+ _renderCMYK{
+ /_C0 [currentcolor] pt
+ /_C0_Space currentcolorspace pt
+ }{
+ /_C0 [
+ _nCustomColorSD begin
+ 0
+ spot1 begin
+ name null ne
+ tintValue null ne and
+ spot1 spotChannel and{
+ pop tintValue
+ }if
+ end
+ spot2 begin
+ name null ne
+ tintValue null ne and
+ spot2 spotChannel and{
+ pop tintValue
+ }if
+ end
+ 1 exch sub
+ end
+ ] pt
+ /_C0_Space /DeviceGray pt
+ }ifelse
+
+ _nSamples 1 gt{
+ /_ndx _nSamples 1 sub pt
+ [blendColor] cvx exec
+ }if
+
+ _renderCMYK{
+ /_C1 [currentcolor] pt
+ /_C1_Space currentcolorspace pt
+ }{
+ /_C1 [
+ _nCustomColorSD begin
+ 0
+ spot1 begin
+ name null ne
+ tintValue null ne and
+ spot1 spotChannel and{
+ pop tintValue
+ }if
+ end
+ spot2 begin
+ name null ne
+ tintValue null ne and
+ spot2 spotChannel and{
+ pop tintValue
+ }if
+ end
+ 1 exch sub
+ end
+ ] pt
+ /_C1_Space /DeviceGray pt
+ }ifelse
+
+ /_rampColorSpace _C0_Space pt
+ _spotColor{
+ nsetcustomcolorend
+ }if
+ }def
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient 20 dict dup begin put
+/AGM_Gradient_private 201 dict def
+/initialize
+{
+ AGM_Gradient begin
+ AGM_Gradient_private begin
+ initializeVars
+
+ /bd systemdict/mark get def
+ /ed
+ _level2PS
+ {
+ (>>)
+ }{
+ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end)
+ } ifelse
+ cvx def
+
+ _level2PS{
+ initializeLev2
+ }{
+ initializeLev1
+ }ifelse
+
+ queryDevice
+
+ initializeRectFill
+ initializeShading
+ initializeOps
+ _producingSeps{
+ AGM_Gradient_Sep/initialize get exec
+ }{
+ initializeComposite
+ }ifelse
+ _illustrator{
+ /f{}def
+ /F{}def
+ /s{}def
+ /S{}def
+ /b{}def
+ /B{}def
+ }if
+ /image where{
+ /image get /_image xd
+ }if
+ /colorimage where{
+ /colorimage get /_colorimage xd
+ }if
+ AGM_Gradient_private
+ {
+ dup xcheck 1 index type /arraytype eq and
+ {
+ bind
+ }if
+ pop pop
+ }forall
+ AGM_Gradient
+ {
+ dup xcheck 1 index type /arraytype eq and
+ {
+ bind
+ }if
+ pop pop
+ }forall
+ end
+
+ currentdict readonly pop
+ end
+}def
+/initializeAI
+{
+ pop pop
+ AGM_Gradient/AGM_Gradient_private get /_illustrator true put
+ AGM_Gradient/initialize get exec
+ AGM_Gradient begin
+}def
+/unload{
+ systemdict/languagelevel known{
+ systemdict/languagelevel get 2 ge{
+ userdict/AGM_Gradient_Sep 2 copy known{
+ undef
+ }{
+ pop pop
+ }ifelse
+ userdict/AGM_Gradient 2 copy known{
+ undef
+ }{
+ pop pop
+ }ifelse
+ }if
+ }if
+}def
+/terminate{
+ currentdict AGM_Gradient eq{
+ end
+ }if
+}def
+
+AGM_Gradient_private begin
+/initializeVars{
+ /_d255 256 array def
+ 0 1 255{
+ _d255 exch dup 255 div put
+ }bind for
+ /_d255- 256 array def
+ 0 1 255{
+ _d255- exch 1 _d255 2 index get sub put
+ }bind for
+ /_sSave nd
+ /_dUserSpace matrix defaultmatrix def
+ /_bUMatrix matrix def
+ /_imageMatrix matrix def
+ /_saveMatrix matrix def
+ /_xm matrix def
+ /_ccAry1 5 array def
+ /_bbox 4 array pt
+ /_level2PS
+ systemdict/languagelevel known dup{
+ pop systemdict/languagelevel get 2 ge
+ }if
+ def
+ /_level3PS
+ _level2PS systemdict/shfill known and
+ def
+ currentdict /_illustrator known not{
+ /_illustrator false def
+ }if
+
+}def
+/initializeOps
+{
+ AGM_Gradient begin
+ currentdict/Bc known not{
+ /Bc{
+
+ _renderFlag 2 eq _enabledSmoothShade or{
+ 6 npop
+ }{
+ pushBSpace
+ _rampIndex 0 eq{
+ pop pop
+ setCStop
+ }if
+ linealFill
+ popBSpace
+ }ifelse
+
+ }def
+ }if
+
+ currentdict/Bg known not{
+ /Bg{
+ 10 npop
+ /_gradName xp
+ /_renderFlag xp
+ /_enabledSmoothShade false pt
+
+ _renderFlag 2 ne{
+
+ _illustrator{
+ _of setoverprint
+ }if
+
+ /_enabledSmoothShade
+ _level3PS{
+ _usingSmoothShade
+ _producingSeps not
+ currentoverprint not or and
+ _noImage not and
+ }{
+ false
+ }ifelse
+ pt
+
+ _illustrator _eo and _renderFlag 3 eq or{
+ eoclip
+ }{
+ clip
+ }ifelse
+
+ _gradNames _gradName 2 copy known{
+ get
+ mark exch aload pop
+ /_gradType xp
+ 1 sub dup /_rampIndex xp
+ /_maxRampIndex xp
+ mark exch aload pop
+ 0 0
+ }if
+ pop pop
+ getRampData
+ }{
+ mark mark
+ }ifelse
+ }def
+ }if
+
+ currentdict/Bm known not{
+ /Bm{
+ _renderFlag 2 ne{
+ _gradType 0 eq{
+ linealRamp
+ }{
+ radialGrad
+ }ifelse
+ }{
+ 6 npop
+ }ifelse
+ }def
+ }if
+
+ currentdict/Bh known not{
+ /Bh{
+ 2 npop
+ /_yHi xp
+ /_xHi xp
+ /_radHilite _xHi 0 ne _yHi 0 ne or pt
+ }def
+ }if
+
+ currentdict/Bn known not{
+ /Bn{
+ AGM_Gradient_private begin
+ dict /_gradNames xp
+ end
+ }def
+ }if
+
+ currentdict/Bd known not{
+ /Bd{
+ AGM_Gradient begin
+ AGM_Gradient_private begin
+ /_nColorsBd xp
+ /_gradType xp
+ /_gradName xp
+ }def
+ }if
+
+ currentdict/BD known not{
+ /BD{
+ currentdict/_gradNames known not{
+ /_gradNames 20 dict def
+ }if
+ ] _nColorsBd _gradType
+ ] _gradName exch /_gradNames xput
+ end
+ end
+ }def
+ }if
+
+ currentdict/Bb known not{
+ /Bb{
+
+ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{
+ AGM_Gradient begin
+ }if
+ AGM_Gradient_private begin
+ _producingSeps{
+ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin
+ }if
+ mySave
+ }def
+ }if
+
+ currentdict/BB known not{
+ /BB{
+
+ /_tmp xp
+ cleartomark cleartomark
+
+ _tmp dup
+ _renderFlag
+
+ myRestore
+
+ _producingSeps{
+ end
+ }if
+
+ _illustrator dup
+ end
+ not {
+ end
+ }if
+
+ {
+ 2 ne exch 0 gt and{
+ 2 eq{
+ s
+ }{
+ S
+ }ifelse
+ }{
+ pop newpath
+ }ifelse
+ }{
+ pop newpath
+ }ifelse
+
+
+ }def
+ }if
+
+ currentdict/Xm known not{
+ /Xm{
+ _xm astore pop
+ }def
+ }if
+
+ end
+}def
+/queryDevice{
+ /_inDistiller
+ systemdict /currentdistillerparams known
+ def
+ /_inRipSep
+ _level2PS{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ _inDistiller or
+ def
+ /_noImage /lv1Fix where{
+ pop lv1Fix
+ }{
+ false
+ }ifelse
+ def
+ /_useShells where{
+ /_useShells get /_usingShells xp
+ }{
+ /_usingShells false def
+ }ifelse
+
+ /_useSmoothShade where{
+ pop
+ }{
+ /_useSmoothShade false def
+ }ifelse
+ /_forceToCMYK where{
+ pop
+ }{
+ /_forceToCMYK false def
+ }ifelse
+ /_cyanPlate 1 0 0 0 testCMYKColorThrough def
+ /_magentaPlate 0 1 0 0 testCMYKColorThrough def
+ /_yellowPlate 0 0 1 0 testCMYKColorThrough def
+ /_blackPlate 0 0 0 1 testCMYKColorThrough def
+ /_compositeJob
+ _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and
+ def
+ /_isCMYKSep
+ _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or
+ def
+ /_compositeSpotDevice where{
+ pop
+ }{
+ /_compositeSpotDevice _compositeJob not _inRipSep or{
+ 1
+ }{
+ 0
+ }ifelse
+ def
+ }ifelse
+ /_producingSeps _compositeSpotDevice 0 ne def
+ /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+ /_dpiThreshold where{
+ pop
+ }{
+ /_dpiThreshold 600 def
+ }ifelse
+ /_screenFreqThreshold where{
+ pop
+ }{
+ /_screenFreqThreshold 150 def
+ }ifelse
+ /_contoneDevice where{
+ pop
+ }{
+ /_contoneDevice false def
+ }ifelse
+ /_subSampleOK
+ _deviceDPI _dpiThreshold le
+ currentScreenFreq _screenFreqThreshold le and
+ _contoneDevice not and
+ def
+}def
+/initializeRectFill{
+ /rectfill where dup{
+ exch pop not _producingSeps or
+ }{
+ not
+ }ifelse
+ {
+ /rectfill{
+ gsave
+ newpath
+ 4 2 roll moveto
+ 1 index 0 rlineto
+ 0 1 index rlineto
+ 1 index neg 0 rlineto
+ pop pop
+ closepath
+ fill
+ grestore
+ }def
+ }if
+}def
+/initializeLev1{
+ /currentScreenFreq{
+ currentscreen pop pop
+ }def
+ /_byte 1 string def
+ /colorimage where{
+ pop
+ }{
+ /colorimage{
+ pop pop
+ /_blackTmp xp
+ /_yellowTmp xp
+ /_magentaTmp xp
+ /_cyanTmp xp
+ /_cnt 0 pt
+ [
+ _byte dup 0
+ _cyanTmp
+ /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx
+ _magentaTmp
+ /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx
+ _yellowTmp
+ /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx
+ _blackTmp
+ /_cnt cvx /get cvx _d255 /exch cvx /get cvx
+ /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx
+ /dup cvx 0 /lt cvx{
+ pop 0
+ }/if cvx
+ /dup cvx 1 /gt cvx{
+ pop 1
+ }/if cvx
+ 255 /mul cvx /cvi cvx
+ 256 /mod cvx
+ /dup cvx 0 /lt cvx{
+ pop 0
+ }/if cvx
+ /put cvx
+ /_cnt dup cvx 1 /add cvx /pt cvx
+ ] cvx
+ bind
+ /_image load 5 execImage
+ }def
+ }ifelse
+}def
+/initializeLev2{
+ /level2ScreenFreq{
+ begin
+ 60
+ HalftoneType 1 eq{
+ pop Frequency
+ }if
+ HalftoneType 2 eq{
+ pop GrayFrequency
+ }if
+ HalftoneType 5 eq{
+ pop Default level2ScreenFreq
+ }if
+ end
+ }def
+ /currentScreenFreq{
+ currenthalftone level2ScreenFreq
+ }def
+}def
+/initializeShading{
+ _useSmoothShade _level3PS and{
+ /_usingSmoothShade true pt
+ initializeLev3_Ops
+ }{
+ /_usingSmoothShade false pt
+ }ifelse
+}def
+/initializeLev3_Ops
+{
+ /initShFill{
+ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt
+ /_rampFuncsArray _maxRampIndex array pt
+ /_boundsArray _maxRampIndex 1 sub array pt
+ /_encodeArray _maxRampIndex 2 mul array pt
+ /_beginCoord _rampPoint pt
+ /_colorSpace null pt
+ /_firstFill _rampIndex _maxRampIndex eq pt
+ /_lastFill false pt
+ }def
+ /linealShFill{
+ popBSpace
+ _xm aload pop pushBSpace
+
+ /_size _index 1 add pt
+ _size _maxRampIndex lt {
+ /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt
+ /_boundsArray _boundsArray 0 _size 1 sub getinterval pt
+ /_encodeArray _encodeArray 0 _size 2 mul getinterval pt
+ }if
+
+ bd
+ /ShadingType 2
+ /ColorSpace _colorSpace
+ _rgbInCMYK{
+ /Function [
+ _cData sampFunc
+ _mData sampFunc
+ _yData sampFunc
+ _kData sampFunc
+ ]
+ }{
+ /Function
+ bd
+ /FunctionType 3
+ /Domain [0 1]
+ /Functions _rampFuncsArray
+ /Bounds _boundsArray
+ /Encode _encodeArray
+ ed
+ }ifelse
+ /Extend [_firstFill _lastFill]
+ /Domain [0 1]
+ /Coords [_beginCoord 0 _endCoord 0]
+ ed
+ shfill
+ }def
+
+ /radialShFill{
+ /_size _maxRampIndex _index sub pt
+ _size _maxRampIndex lt {
+ /_rampFuncsArray _rampFuncsArray _index _size getinterval pt
+ /_boundsArray _boundsArray _index _size 1 sub getinterval pt
+ /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt
+ }if
+
+ /_rampLen _beginCoord _endCoord sub pt
+ bd
+ /ShadingType 3
+ /ColorSpace _colorSpace
+ _rgbInCMYK{
+ /Function [
+ _cData sampFunc
+ _mData sampFunc
+ _yData sampFunc
+ _kData sampFunc
+ ]
+ }{
+ /Function
+ bd
+ /FunctionType 3
+ /Domain [0 1]
+ /Functions _rampFuncsArray
+ /Bounds _boundsArray
+ /Encode _encodeArray
+ ed
+ }ifelse
+ /Extend [_lastFill _firstFill]
+ /Domain [0 1]
+ /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord]
+ ed
+ shfill
+
+ _radHilite{
+ _xHi _rampLen mul _yHi _rampLen mul translate
+ }if
+ }def
+
+ %
+ /sampFunc{
+ /_tmp exch pt
+ bd
+ _tmp length 1 eq {
+ _tmp 0 get
+ /_tmp 2 string pt
+ dup _tmp 0 3 -1 roll put
+ _tmp 1 3 -1 roll put
+ }if
+ /FunctionType 0
+ /Order 1
+ /Size [_tmp length]
+ /Domain [0 1]
+ /BitsPerSample 8
+ /DataSource _tmp
+ /Range [0 1]
+ ed
+ }def
+
+ /fillRamp{
+
+
+ /_invert _midPoint 0.5 lt pt
+ _rampIndex _maxRampIndex eq {
+ initShFill
+ }if
+
+ getRampColorSpace
+
+ _colorSpace null eq{
+ /_colorSpace _rampColorSpace pt
+ }{
+ _colorSpace _rampColorSpace ne _rgbInCMYK or{
+ /_index _index 1
+ _gradType 0 eq{
+ sub pt
+ linealShFill
+ }{
+ add pt
+ radialShFill
+ }ifelse
+ initShFill
+ /_colorSpace _rampColorSpace pt
+ } if
+ }ifelse
+ /_endCoord _endPoint pt
+ /_rgbInCMYK false pt
+ _producingSeps _forceToCMYK or _rgbRamp and {
+ _spotColor{
+ _renderCMYK
+ }{
+ _isCMYKSep
+ }ifelse
+ }{
+ false
+ }ifelse
+ {
+ _compositeJob{
+ /_rgbInCMYK true pt
+ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+ dup length string copy /_kData exch pt
+ dup length string copy /_yData exch pt
+ dup length string copy /_mData exch pt
+ dup length string copy /_cData exch pt
+ }{
+ _rampFuncsArray _index
+ _cyanPlate{_cyanData}if
+ _magentaPlate{_magentaData}if
+ _yellowPlate{_yellowData}if
+ _blackPlate{_blackData}if
+ _nSamples expandOne
+ sampFunc
+ dup begin /Decode [1 0] def end
+ put
+ /_invert false pt
+ }ifelse
+ }{
+ _rampFuncsArray _index
+ bd
+ /FunctionType 2
+ /Domain [0 1]
+ /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div
+ _gradType 0 eq{
+ _invert{/C1}{/C0}ifelse _C0
+ _invert{/C0}{/C1}ifelse _C1
+ }{
+ _invert{/C0}{/C1}ifelse _C1
+ _invert{/C1}{/C0}ifelse _C0
+ }ifelse
+ ed
+ put
+ }ifelse
+
+ _rampIndex 1 ne{
+ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put
+ } if
+
+ 0 1 _invert {exch}if
+ _encodeArray _index 2 mul 1 add 3 -1 roll put
+ _encodeArray _index 2 mul 3 -1 roll put
+ _rampIndex 1 eq {
+ /_lastFill true pt
+ _gradType 0 eq{
+ linealShFill
+ }{
+ radialShFill
+ }ifelse
+ }if
+ /_index _index 1
+ _gradType 0 eq{
+ add pt
+ }{
+ sub pt
+ }ifelse
+ }def
+}def
+/initializeComposite{
+ /bwImage{
+ pop /_image load 5 execImage
+ }def
+ /rampImage{
+ _enabledSmoothShade{
+ fillRamp
+ }{
+ _color{
+ _nSamples setImageParms
+
+
+ _rgbRamp _forceToCMYK not and{
+ _redData _greenData _blueData _nSamples 3 expandColor
+ true 3 null ncolorimage
+ }{
+ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+ true 4 null ncolorimage
+ }ifelse
+ }{
+ _nSamples setImageParms _blackData null bwImage
+ }ifelse
+ }ifelse
+ }def
+ /setCStop{
+ /_colorStyle exch pt
+ _colorStyle 0 eq{
+ 1 exch sub
+ 0 0 0
+ 4 -1 roll
+ }if
+
+ _colorStyle 2 eq{
+ _forceToCMYK{
+ 3 npop setcmykcolor
+ }{
+ setrgbcolor 4 npop
+ }ifelse
+ }if
+
+ _colorStyle 3 eq{
+ 1 exch sub /_tmp xp
+ pop
+ 4{
+ _tmp mul 4 1 roll
+ }repeat
+ }if
+
+ _colorStyle 4 eq{
+ _forceToCMYK{
+ 6 npop setcmykcolor
+ }{
+ 3 -1 roll pop pop
+ 1 exch sub /_tmp xp
+ 3{
+ 1 exch sub _tmp mul 1 exch sub 3 1 roll
+ }repeat
+ setrgbcolor
+ 4 npop
+ }ifelse
+ }if
+ _colorStyle 2 ne _colorStyle 4 ne and{
+ null nsetcustomcolor
+ }if
+ }def
+ /nsetcustomcolor
+ {
+ pop setcmykcolor
+ }def
+ /nsetcustomcolorend
+ {
+ }def
+ /ncolorimage{
+ pop
+ /_colorimage load 10 execImage
+ }def
+ _noImage not _level2PS not and{
+ /linealFill{
+ 8 setImageParms
+ _color{
+ currentcmykcolor
+ 4{
+ makeByte8 4 1 roll
+ }repeat
+ true 4 null ncolorimage
+ }{
+ currentgray makeByte8 null bwImage
+ }ifelse
+ }def
+ }if
+ /getRampColorSpace{
+ _nSamples 1 gt{
+ /_ndx 0 pt
+ [blendColor] cvx exec
+ }if
+ /_C0 [currentcolor] pt
+ /_C0_Space currentcolorspace pt
+
+ _nSamples 1 gt{
+ /_ndx _nSamples 1 sub pt
+ [blendColor] cvx exec
+ }if
+ /_C1 [currentcolor] pt
+ /_C1_Space currentcolorspace pt
+
+ /_rampColorSpace _C0_Space pt
+
+ _spotColor{
+ nsetcustomcolorend
+ }if
+ }def
+}def
+/npop{
+ {pop}repeat
+}def
+/xd{
+ exch def
+}def
+/nd{
+ null def
+}def
+/pt{
+ AGM_Gradient_private 3 1 roll put
+}def
+/xp{
+ exch pt
+}def
+/xput{
+ dup load dup length exch maxlength eq{
+ dup dup load dup
+ length 2 mul dict copy def
+ }if
+ load begin
+ def
+ end
+}def
+/mySave{
+ save /_sSave xp
+}def
+/myRestore{
+ _sSave type /savetype eq{
+ _sSave restore
+ }if
+}def
+/gMark{
+ counttomark 2 add -1 roll
+}def
+/execImage{
+ /_tmp xp
+ {
+ exec
+ }stopped{
+ $error /errorname get /undefinedresult ne{
+ stop
+ }{
+ _tmp npop
+ }ifelse
+ }if
+}def
+/pushBSpace{
+ newpath gsave
+ _bUMatrix astore concat
+}def
+/popBSpace{
+ grestore
+}def
+/makeByte8{
+ /_tmp 0 pt
+ 255 mul cvi
+ 8 string 8{
+ dup _tmp 3 index put
+ /_tmp _tmp 1 add pt
+ }repeat
+ exch pop
+}def
+/setImageParms{
+ 1 8 2 index 0 0 1 0 0 _imageMatrix astore
+}def
+/linealFill{
+ 0 0 1 1 rectfill
+}def
+/testCMYKColorThrough{
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ add add add 0 ne
+}def
+/expandOne {
+ /_tmp xp
+ dup type /stringtype ne{
+ _tmp string
+ exch
+ dup 0 ne{
+ 255 mul cvi
+ 0 1 _tmp 1 sub{
+ 3 copy
+ exch put pop
+ }for
+ }if
+ pop
+ }if
+}def
+/expandColor{
+ /_channels xp
+ /_len xp
+ _channels{
+ _len expandOne _channels 1 roll
+ }repeat
+}def
+/blendColor{
+
+ _color{
+ _rgbRamp _producingSeps not and _forceToCMYK not and{
+ _redData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ _greenData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ _blueData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ /setrgbcolor cvx
+ }{
+ _cyanData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ _magentaData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ _yellowData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+ _blackData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+
+ _spotColor{
+ _rampSD begin
+ /_rampSD cvx /begin cvx
+
+ spot1 begin
+ tintImage dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255- /exch cvx /get cvx
+ }{
+ dup null ne{
+ name type /nametype ne{
+ 1 exch sub
+ }if
+ }if
+ }ifelse
+ end
+ /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx
+
+ spot2 begin
+ tintImage dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255- /exch cvx /get cvx
+ }{
+ dup null ne{
+ name type /nametype ne{
+ 1 exch sub
+ }if
+ }if
+ }ifelse
+ end
+ /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx
+ /end cvx
+ end
+ /_rampSD cvx
+ /nsetcustomcolor cvx
+ }{
+ /setcmykcolor cvx
+ }ifelse
+ }ifelse
+ }{
+ _blackData dup type /stringtype eq{
+ /_ndx cvx /get cvx _d255 /exch cvx /get cvx
+ }if
+
+ _enabledSmoothShade{
+ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx
+ }{
+ /setgray cvx
+ }ifelse
+ }ifelse
+}def
+/useRectImage{
+ _subSampleOK _enabledSmoothShade not and{
+ {
+ mark
+ 0 1 dtransform atan cvi 90 mod 0 eq
+ 1 0 dtransform atan cvi 90 mod 0 eq
+ } stopped
+ {
+ cleartomark
+ false
+ }
+ {
+ and exch pop
+ } ifelse
+ }{
+ false
+ }ifelse
+}def
+/linealImage{
+ _noImage{
+ rectImage
+ }{
+ _producingSeps{
+ AGM_Gradient_Sep/AGM_Gradient_Sep_private get
+ /rampImage get exec
+ }{
+ useRectImage{
+ rectImage
+ }{
+ rampImage
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/linealRamp{
+ pushBSpace
+ _ramp{
+ linealImage
+ }{
+ linealFill
+ }ifelse
+ popBSpace
+ /_rampIndex _rampIndex 1 sub pt
+ _rampIndex 0 gt{
+ getRampData
+ }if
+}def
+/radialGrad{
+ /_usingShells currentoverprint _producingSeps and _usingShells or pt
+ /_firstShell true pt
+ _enabledSmoothShade not{
+ currentoverprint _producingSeps and{
+
+ newpath
+ clippath pathbbox
+ 1 add 4 1 roll
+ 1 add 4 1 roll
+ 1 sub 4 1 roll
+ 1 sub 4 1 roll
+ _bbox astore pop
+
+ newpath
+ _bbox 0 get _bbox 1 get moveto
+ _bbox 2 get _bbox 1 get lineto
+ _bbox 2 get _bbox 3 get lineto
+ _bbox 0 get _bbox 3 get lineto
+ closepath
+ 6 copy
+ gsave _bUMatrix astore concat
+ 1 0 moveto 0 0 1 0 360 arc closepath
+ eoclip fill
+ popBSpace
+ }{
+ fill
+ }ifelse
+ }if
+ pushBSpace
+
+ _radHilite{
+ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp
+ _rampPoint 1 lt{
+ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate
+ }if
+ }if
+ _rampIndex{
+ radialRamp
+ /_rampIndex _rampIndex 1 sub pt
+ _rampIndex 0 gt{
+ getRampData
+ }if
+ }repeat
+
+ popBSpace
+
+}def
+/getNSamples{
+ 0 exch
+ {
+ dup type /stringtype eq{
+ length exch pop exit
+ }if
+ pop
+ }forall
+ dup 0 eq{
+ pop 1
+ }if
+}def
+/getRampData{
+ /_rampType gMark pt
+ /_color _rampType 0 gt pt
+ /_ccRGB _rampType 5 eq _rampType 6 eq or pt
+ /_rgbRamp _rampType 4 eq _ccRGB or pt
+ /_ccProcess _rampType 2 eq _rampType 3 eq or pt
+ _producingSeps{
+ _rampSD initSpotDict
+ /_spotColor _ccProcess _ccRGB or pt
+ }{
+ /_spotColor false pt
+ }ifelse
+ /_ramp true pt
+ 100 div /_rampPoint xp
+ 100 div /_midPoint xp
+
+ dup /_colorStyle xp
+ _colorStyle 0 eq{
+ 2
+ }{
+ _colorStyle 1 eq{
+ 5
+ }{
+ _colorStyle 2 eq{
+ 8
+ }{
+ _colorStyle 3 eq{
+ _producingSeps{
+ _rampSD /spot1 get begin
+ /name 3 index def
+ /spot_K 4 index def
+ /spot_Y 5 index def
+ /spot_M 6 index def
+ /spot_C 7 index def
+ end
+ }if
+ 7
+ }{
+ _producingSeps{
+ _rampSD/spot1 get begin
+ /name 4 index def
+ /spot_K 8 index def
+ /spot_Y 9 index def
+ /spot_M 10 index def
+ /spot_C 11 index def
+ end
+ }if
+ 11
+ } ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ /_tmp xp
+ _tmp index 100 div /_endPoint xp
+
+ _gradType 1 eq{
+ _tmp 1 add index 100 div /_midPoint xp
+ }if
+
+ _producingSeps{
+ _tmp 2 add index /_nextColorStyle xp
+ _nextColorStyle 3 eq{
+ /_tmp _tmp 4 add pt
+ _tmp index dup
+ _rampSD/spot1 get /name get ne{
+ _rampSD /spot2 get begin
+ /name xd
+ /spot_K _tmp 2 add index def
+ /spot_Y _tmp 3 add index def
+ /spot_M _tmp 4 add index def
+ /spot_C _tmp 5 add index def
+ end
+ }{
+ pop
+ }ifelse
+ }if
+ _nextColorStyle 4 eq{
+ /_tmp _tmp 5 add pt
+ _tmp index dup
+ _rampSD/spot1 get /name get ne{
+ _rampSD /spot2 get begin
+ /name xd
+ /spot_K _tmp 5 add index def
+ /spot_Y _tmp 6 add index def
+ /spot_M _tmp 7 add index def
+ /spot_C _tmp 8 add index def
+ end
+ }{
+ pop
+ }ifelse
+ }if
+ }if
+ _rampType 3 eq _rampType 6 eq or{
+ /_tint2Data gMark pt
+ }if
+ _ccProcess _ccRGB or{
+ /_tint1Data gMark pt
+ }if
+ _rgbRamp{
+ /_blueData gMark pt
+ /_greenData gMark pt
+ /_redData gMark pt
+ }if
+
+ _producingSeps{
+ _ccProcess _ccRGB or{
+ _rampType 3 eq _rampType 6 eq or{
+ _rampSD /spot2 get begin
+ /tintImage _gradType 0 eq{
+ _tint2Data
+ }{
+ _tint1Data
+ }ifelse
+ def
+ name null eq{
+ /name /Black def
+ }if
+ end
+ }if
+ _rampSD /spot1 get begin
+ /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{
+ _tint1Data
+ }{
+ _tint2Data
+ }ifelse
+ def
+ _rampType 2 eq _rampType 5 eq or{
+ name null eq{
+ /name _rampSD/spot2 get /name get def
+ /spot_C _rampSD/spot2 get /spot_C get def
+ /spot_M _rampSD/spot2 get /spot_M get def
+ /spot_Y _rampSD/spot2 get /spot_Y get def
+ /spot_K _rampSD/spot2 get /spot_K get def
+ _rampSD/spot2 get /name null put
+ }if
+ }{
+ name null eq{
+ /name /Black def
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ /_blackData gMark pt
+ _rampType 0 gt{
+ counttomark 4 add -3 roll
+ /_yellowData xp
+ /_magentaData xp
+ /_cyanData xp
+ }if
+ _ramp{
+ /_nSamples
+ [
+ _rampType 0 eq {_blackData}if
+ _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if
+ _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if
+ _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if
+ _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if
+ _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if
+ _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if
+ ] getNSamples pt
+ _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if
+ } if
+
+ setCStop
+}def
+/rectImage{
+ gsave
+ /_sInc 1 pt
+ /_bInc 1 _nSamples div pt
+ /_nSubSamples _nSamples pt
+ /_optimize false pt
+
+ _subSampleOK{
+ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt
+ /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt
+
+ _pChange .5 gt dup /_optimize xp{
+ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+ /_bInc 1 _nSubSamples div pt
+ /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt
+ }if
+ }if
+ 0
+ _nSubSamples
+ [
+ /dup cvx
+ _optimize {
+ /round cvx /cvi cvx
+ } if
+ /_ndx /exch cvx /pt cvx
+ blendColor
+ 0 0 _bInc 1 /rectfill cvx
+ _bInc 0 /translate cvx
+ _sInc /add cvx
+ ] cvx
+ bind
+ repeat
+ pop
+ _spotColor{
+ nsetcustomcolorend
+ }if
+ grestore
+}def
+/radialInit{
+ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt
+ /_sInc -1 pt
+ /_rampLen _rampPoint _endPoint sub pt
+ /_bInc _rampLen _nSamples div neg pt
+ /_optimize false pt
+ _subSampleOK{
+ /_uRampLen
+ _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+ 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+ 2 copy lt{
+ exch
+ }if pop
+ pt
+ /_pChange
+ _uRampLen 0 eq{
+ 0
+ }{
+ _nSamples _uRampLen div
+ }ifelse
+ pt
+ _pChange .5 gt dup /_optimize xp{
+ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+ /_bInc _rampLen _nRadSamples div neg pt
+ /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt
+ }if
+ }if
+ _radHilite{
+ /_xBCInc _xHi _rampLen mul _nRadSamples div pt
+ /_yBCInc _yHi _rampLen mul _nRadSamples div pt
+ }if
+}def
+/radialRamp{
+ _enabledSmoothShade{
+ fillRamp
+ }{
+ /_saveMatrix _saveMatrix currentmatrix def
+
+ radialInit
+
+ %
+ %
+ true
+ _producingSeps _rgbRamp not and{
+ _nSamples 1 gt{
+ pop
+ /_ndx 0 pt
+ [blendColor] cvx exec
+ currentInkN
+ /_ndx _nSamples 1 sub pt
+ [blendColor] cvx exec
+ currentInkN
+ or
+ }if
+ }if
+ {
+ _rampPoint
+
+ _nSamples 1 sub
+
+ _nRadSamples
+ [
+ /dup cvx
+
+ _optimize{
+ /round cvx /cvi cvx
+ }if
+
+ /_ndx /exch cvx /pt cvx
+
+ _usingShells{
+ /_firstShell cvx{
+ /_firstShell false pt
+ }{
+ 0 0 3 index 360 0 arcn fill
+ }/ifelse cvx
+ }if
+
+ blendColor
+
+ _usingShells{
+ 0 0 3 /index cvx 0 360 /arc cvx
+ }{
+ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx
+ }ifelse
+
+ /exch cvx _bInc /add cvx /exch cvx
+
+ _sInc /add cvx
+
+ _radHilite{
+ _xBCInc _yBCInc /translate cvx
+ }if
+ ] cvx bind
+ repeat
+
+ pop pop
+ }{
+ _usingShells{
+ 0 0 _rampPoint 360 0 arcn fill
+ }if
+ }ifelse
+
+ _saveMatrix setmatrix
+
+ _radHilite{
+ _xHi _rampLen mul _yHi _rampLen mul translate
+ }if
+
+ _usingShells _rampIndex 1 eq and{
+ fill
+ }if
+
+ _spotColor{
+ nsetcustomcolorend
+ }if
+ }ifelse
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_pattern_AI5 1.1 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators)
+%%Version: 1.1 0
+%%CreationDate: (03/26/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/@
+{
+} def
+/&
+{
+} def
+/dp
+{
+ dup null eq
+ {
+ pop
+ _dp 0 ne
+ {
+ 0 1 _dp 1 sub _dl mod
+ {
+ _da exch get 3 get
+ } for
+ _dp 1 sub _dl mod 1 add packedarray
+ _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll
+ definepattern pop
+ } if
+ }
+ {
+ _dp 0 ne _dp _dl mod 0 eq and
+ {
+ null dp
+ } if
+ 7 packedarray _da exch _dp _dl mod exch put
+ _dp _dl mod _da 0 get 4 get 2 packedarray
+ /_dp _dp 1 add def
+ } ifelse
+} def
+/E
+{
+ _ed begin
+ dup 0 get type /arraytype ne
+ {
+ 0
+ {
+ dup 1 add index type /arraytype eq
+ {
+ 1 add
+ }
+ {
+ exit
+ } ifelse
+ } loop
+ array astore
+ } if
+ /_dd exch def
+ /_ury exch def
+ /_urx exch def
+ /_lly exch def
+ /_llx exch def
+ /_n exch def
+ /_y 0 def
+ /_dl 4 def
+ /_dp 0 def
+ /_da _dl array def
+ 0 1 _dd length 1 sub
+ {
+ /_d exch _dd exch get def
+ 0 2 _d length 2 sub
+ {
+ /_x exch def
+ /_c false def
+ /_r _d _x 1 add get cvlit def
+ _r _ ne
+ {
+ _urx _llx sub _ury _lly sub
+ [
+ 1 0 0 1 0 0
+ ]
+ [
+ /save cvx
+ _llx neg _lly neg /translate cvx
+ _c
+ {
+ nc /begin cvx
+ } if
+ _r dup type /stringtype eq
+ {
+ cvx
+ }
+ {
+ {
+ exec
+ } /forall cvx
+ } ifelse
+ _c
+ {
+ /end cvx
+ } if
+ /restore cvx
+ ] cvx
+ /_fn 12 _n length add string def
+ _y _fn cvs pop
+ /_y _y 1 add def
+ _fn 12 _n putinterval
+ _fn _c false dp
+ _d exch _x 1 add exch put
+ } if
+ } for
+ } for
+ null dp
+ _n _dd /_pd
+ end
+ xput
+} def
+/fc
+{
+ _fm dup concatmatrix pop
+} def
+/p
+{
+ /_fm exch ddef
+ 9 -2 roll _pm translate fc
+ 7 -2 roll _pm scale fc
+ 5 -1 roll _pm rotate fc
+ 4 -2 roll exch 0 ne
+ {
+ dup _pm rotate fc
+ 1 -1 _pm scale fc
+ neg _pm rotate fc
+ }
+ {
+ pop
+ } ifelse
+ dup _pm rotate fc
+ exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+ _pm astore fc
+ neg _pm rotate fc
+ _pd exch get /_fdd exch ddef
+ /_pf
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _fdd length 1 sub
+ {
+ /_fd exch _fdd exch get ddef
+ _fd
+ 0 2 _fd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _fc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _fm
+ patternfill
+ }
+ {
+ pop
+ fill
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ newpath
+ } ddef
+ /_psf
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _fdd length 1 sub
+ {
+ /_fd exch _fdd exch get ddef
+ _fd
+ 0 2 _fd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _fc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _fm
+ 9 copy 6 npop patternashow
+ }
+ {
+ pop
+ 6 copy 3 npop hvashow
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ sw rmoveto
+ } ddef
+ /_pjsf
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _fdd length 1 sub
+ {
+ /_fd exch _fdd exch get ddef
+ _fd
+ 0 2 _fd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _fc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _fm
+ 12 copy 6 npop patternawidthshow
+ }
+ {
+ pop 9 copy 3 npop hvawidthshow
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ swj rmoveto
+ } ddef
+ /_lp /none ddef
+} def
+/sc
+{
+ _sm dup concatmatrix pop
+} def
+/P
+{
+ /_sm exch ddef
+ 9 -2 roll _pm translate sc
+ 7 -2 roll _pm scale sc
+ 5 -1 roll _pm rotate sc
+ 4 -2 roll exch 0 ne
+ {
+ dup _pm rotate sc
+ 1 -1 _pm scale sc
+ neg _pm rotate sc
+ }
+ {
+ pop
+ } ifelse
+ dup _pm rotate sc
+ exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+ _pm astore sc
+ neg _pm rotate sc
+ _pd exch get /_sdd exch ddef
+ /_ps
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _sdd length 1 sub
+ {
+ /_sd exch _sdd exch get ddef
+ _sd
+ 0 2 _sd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _sc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _sm
+ patternstroke
+ }
+ {
+ pop stroke
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ newpath
+ } ddef
+ /_pss
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _sdd length 1 sub
+ {
+ /_sd exch _sdd exch get ddef
+ _sd
+ 0 2 _sd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _sc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _sm
+ 10 copy 6 npop patternashowstroke
+ }
+ {
+ pop 7 copy 3 npop ss
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ pop sw rmoveto
+ } ddef
+ /_pjss
+ {
+ save
+ /_doClip 0 ddef
+ 0 1 _sdd length 1 sub
+ {
+ /_sd exch _sdd exch get ddef
+ _sd
+ 0 2 _sd length 2 sub
+ {
+ gsave
+ 2 copy get dup _ ne
+ {
+ cvx exec _sc
+ }
+ {
+ pop
+ } ifelse
+ 2 copy 1 add get dup _ ne
+ {
+ aload pop findfont _sm
+ 13 copy 6 npop patternawidthshowstroke
+ }
+ {
+ pop 10 copy 3 npop jss
+ } ifelse
+ grestore
+ pop
+ } for
+ pop
+ } for
+ restore
+ pop swj rmoveto
+ } ddef
+ /_lp /none ddef
+} def
+end
+userdict /Adobe_pattern_AI5 18 dict dup begin
+put
+/initialize
+{
+ /definepattern where
+ {
+ pop
+ pop pop
+ }
+ {
+ begin
+ begin
+ Adobe_pattern_AI5 begin
+ Adobe_pattern_AI5
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ mark
+ cachestatus 7 1 roll pop pop pop pop exch pop exch
+ {
+ {
+ 10000 add
+ dup 2 index gt
+ {
+ exit
+ } if
+ dup setcachelimit
+ } loop
+ } stopped
+ cleartomark
+ end
+
+ end
+ end
+
+ Adobe_pattern_AI5 begin
+ } ifelse
+} def
+/terminate
+{
+ currentdict Adobe_pattern_AI5 eq
+ {
+ end
+ } if
+} def
+errordict
+/nocurrentpoint
+{
+ pop
+ stop
+} put
+errordict
+/invalidaccess
+{
+ pop
+ stop
+} put
+/patternencoding
+256 array def
+0 1 255
+{
+ patternencoding exch ( ) 2 copy exch 0 exch put cvn put
+} for
+/definepattern
+{
+ 17 dict begin
+ /uniform exch def
+ /cache exch def
+ /key exch def
+ /procarray exch def
+ /mtx exch matrix invertmatrix def
+ /height exch def
+ /width exch def
+ /ctm matrix currentmatrix def
+ /ptm matrix def
+ /str 32 string def
+ /slice 9 dict def
+ slice /s 1 put
+ slice /q 256 procarray length div sqrt floor cvi put
+ slice /b 0 put
+ /FontBBox
+ [
+ 0 0 0 0
+ ] def
+ /FontMatrix mtx matrix copy def
+ /Encoding patternencoding def
+ /FontType 3 def
+ /BuildChar
+ {
+ exch
+ begin
+ /setstrokeadjust where {pop true setstrokeadjust} if
+ slice begin
+ dup q dup mul mod s idiv /i exch def
+ dup q dup mul mod s mod /j exch def
+ q dup mul idiv procarray exch get
+ /xl j width s div mul def
+ /xg j 1 add width s div mul def
+ /yl i height s div mul def
+ /yg i 1 add height s div mul def
+ uniform
+ {
+ 1 1
+ }
+ {
+ width 0 dtransform
+ dup mul exch dup mul add sqrt dup 1 add exch div
+ 0 height dtransform
+ dup mul exch dup mul add sqrt dup 1 add exch div
+ } ifelse
+ width 0 cache
+ {
+ xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul
+ setcachedevice
+ }
+ {
+ setcharwidth
+ } ifelse
+ gsave
+ scale
+ newpath
+ xl yl moveto
+ xg yl lineto
+ xg yg lineto
+ xl yg lineto
+ closepath
+ clip
+ newpath
+ end
+ end
+ exec
+ grestore
+ } def
+ key currentdict definefont
+ end
+} def
+/patterncachesize
+{
+ gsave
+ newpath
+ 0 0 moveto
+ width 0 lineto
+ width height lineto
+ 0 height lineto
+ closepath
+ patternmatrix setmatrix
+ pathbbox
+ exch ceiling 4 -1 roll floor sub 3 1 roll
+ ceiling exch floor sub
+ mul 1 add
+ grestore
+} def
+/patterncachelimit
+{
+ cachestatus 7 1 roll 6 npop 8 mul
+} def
+/patternpath
+{
+ exch dup begin
+ setfont
+ ctm setmatrix
+ concat
+ slice exch /b exch slice /q get dup mul mul put
+ FontMatrix concat
+ uniform
+ {
+ width 0 dtransform round width div exch round width div exch
+ 0 height dtransform round height div exch height div exch
+ 0 0 transform round exch round exch
+ ptm astore setmatrix
+ }
+ {
+ ptm currentmatrix pop
+ } ifelse
+ {
+ currentpoint
+ } stopped not
+ {
+ 2 npop
+ pathbbox
+ true
+ 4 index 3 index eq
+ 4 index 3 index eq
+ and
+ {
+ pop false
+ {
+ {
+ 2 npop
+ }
+ {
+ 3 npop true
+ }
+ {
+ 7 npop true
+ }
+ {
+ pop true
+ } pathforall
+ } stopped
+ {
+ 5 npop true
+ } if
+ } if
+ {
+ height div ceiling height mul 4 1 roll
+ width div ceiling width mul 4 1 roll
+ height div floor height mul 4 1 roll
+ width div floor width mul 4 1 roll
+ 2 index sub height div ceiling cvi exch
+ 3 index sub width div ceiling cvi exch
+ 4 2 roll moveto
+ FontMatrix mtx invertmatrix
+ dup dup 4 get exch 5 get rmoveto
+ ptm ptm concatmatrix pop
+ slice /s
+ patterncachesize patterncachelimit div ceiling sqrt ceiling cvi
+ dup slice /q get gt
+ {
+ pop slice /q get
+ } if
+ put
+ 0 1 slice /s get dup mul 1 sub
+ {
+ slice /b get add
+ gsave
+ 0 1 str length 1 sub
+ {
+ str exch 2 index put
+ } for
+ pop
+ dup
+ {
+ gsave
+ ptm setmatrix
+ 1 index str length idiv
+ {
+ str show
+ } repeat
+ 1 index str length mod str exch 0 exch getinterval show
+ grestore
+ 0 height rmoveto
+ } repeat
+ grestore
+ } for
+ 2 npop
+ }
+ {
+ 4 npop
+ } ifelse
+ } if
+ end
+} def
+/patternclip
+{
+ _eo {eoclip} {clip} ifelse
+} def
+/patternstrokepath
+{
+ strokepath
+} def
+/patternmatrix
+matrix def
+/patternfill
+{
+ dup type /dicttype eq
+ {
+ Adobe_pattern_AI5 /patternmatrix get
+ } if
+ gsave
+ patternclip
+ Adobe_pattern_AI5 /patternpath get exec
+ grestore
+ newpath
+} def
+/patternstroke
+{
+ dup type /dicttype eq
+ {
+ Adobe_pattern_AI5 /patternmatrix get
+ } if
+ gsave
+ patternstrokepath
+ true
+ {
+ {
+ {
+ newpath
+ moveto
+ }
+ {
+ lineto
+ }
+ {
+ curveto
+ }
+ {
+ closepath
+ 3 copy
+ Adobe_pattern_AI5 /patternfill get exec
+ } pathforall
+ 3 npop
+ } stopped
+ {
+ 5 npop
+ patternclip
+ Adobe_pattern_AI5 /patternfill get exec
+ } if
+ }
+ {
+ patternclip
+ Adobe_pattern_AI5 /patternfill get exec
+ } ifelse
+ grestore
+ newpath
+} def
+/vpatternawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ _hvax _hvay rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ _hvax sub
+ 3 index _hvwb eq { _hvcx sub } if
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+ gsave
+ 2 index false charpath
+ 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec
+ grestore
+ newpath moveto pop pop
+ } ifelse
+ } cforall
+ 3 npop
+} def
+/hpatternawidthshow
+{
+ {
+ dup cstring exch
+ gsave
+ 3 index eq { 5 index 5 index rmoveto } if
+ false charpath currentpoint
+ 9 index 9 index 9 index
+ Adobe_pattern_AI5 /patternfill get exec
+ grestore
+ newpath moveto
+ 2 copy rmoveto
+ } cforall
+ 8 npop
+} def
+/patternashow
+{
+0 0 0 6 3 roll
+patternawidthshow
+} def
+/patternawidthshow
+{
+ 6 index type /dicttype eq
+ {
+ Adobe_pattern_AI5 /patternmatrix get 7 1 roll
+ } if
+ _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse
+} def
+/vpatternawidthshowstroke
+{
+ 7 1 roll
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 3 index setmatrix
+ 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ _hvax _hvay rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ _hvax sub
+ 3 index _hvwb eq { _hvcx sub } if
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+ gsave
+ 2 index false charpath
+ 4 index setmatrix
+ 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec
+ grestore
+ newpath moveto pop pop
+ } ifelse
+ } cforall
+ 4 npop
+} def
+/hpatternawidthshowstroke
+{
+ 7 1 roll
+ {
+ dup cstring exch
+ gsave
+ 3 index eq { 5 index 5 index rmoveto } if
+ false charpath currentpoint
+ 7 index setmatrix
+ 10 index 10 index 10 index
+ Adobe_pattern_AI5 /patternstroke get exec
+ grestore
+ newpath moveto
+ 2 copy rmoveto
+ } cforall
+ 9 npop
+} def
+/patternashowstroke
+{
+ 0 0 0 7 3 roll
+ patternawidthshowstroke
+} def
+/patternawidthshowstroke
+{
+ 7 index type /dicttype eq
+ {
+ patternmatrix /patternmatrix get 8 1 roll
+ } if
+ _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse
+} def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade true put
+userdict /_aicmykps false put
+userdict /_forceToCMYK false put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050606060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101111111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262627272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313232323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+4344444445454646474747484849494A4A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
+2928282827272726262626252525242424232323232222222121212020201F1F1F1F1E1E1E1D1D1D
+1C1C1C1C1B1B1B1A1A1A191919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 0.3 w 4 M []0 d0 XR
+0 68.4097 m
+72 68.4097 l
+S0 61.209 m
+72 61.209 L
+S0 54.0088 m
+72 54.0088 L
+S0 46.8076 m
+72 46.8076 L
+S0 39.6084 m
+72 39.6084 L
+S0 32.4072 m
+72 32.4072 L
+S0 25.207 m
+72 25.207 L
+S0 18.0059 m
+72 18.0059 L
+S0 10.8057 m
+72 10.8057 L
+S0 3.6064 m
+72 3.6064 L
+S68.4102 68.4097 m
+68.4102 61.2217 l
+S54.0098 68.4097 m
+54.0098 61.2217 L
+S39.6094 68.4097 m
+39.6094 61.2217 L
+S25.21 68.4097 m
+25.21 61.2217 L
+S10.8105 68.4097 m
+10.8105 61.2217 L
+S68.4102 53.9717 m
+68.4102 46.7842 l
+S54.0098 53.9717 m
+54.0098 46.7842 L
+S39.6094 53.9717 m
+39.6094 46.7842 L
+S25.21 53.9717 m
+25.21 46.7842 L
+S10.8105 53.9717 m
+10.8105 46.7842 L
+S68.4102 39.5967 m
+68.4102 32.4092 l
+S54.0098 39.5967 m
+54.0098 32.4092 L
+S39.6094 39.5967 m
+39.6094 32.4092 L
+S25.21 39.5967 m
+25.21 32.4092 L
+S10.8105 39.5967 m
+10.8105 32.4092 L
+S68.4102 25.2217 m
+68.4102 18.0342 l
+S54.0098 25.2217 m
+54.0098 18.0342 L
+S39.6094 25.2217 m
+39.6094 18.0342 L
+S25.21 25.2217 m
+25.21 18.0342 L
+S10.8105 25.2217 m
+10.8105 18.0342 L
+S68.4102 10.7842 m
+68.4102 3.5967 l
+S54.0098 10.7842 m
+54.0098 3.5967 L
+S39.6094 10.7842 m
+39.6094 3.5967 L
+S25.21 10.7842 m
+25.21 3.5967 L
+S10.8105 10.7842 m
+10.8105 3.5967 L
+S61.1973 3.5967 m
+61.1973 0 L
+S46.7969 3.5967 m
+46.7969 0 L
+S32.3965 3.5967 m
+32.3965 0 L
+S17.9971 3.5967 m
+17.9971 0 L
+S3.5967 3.5967 m
+3.5967 0 l
+S61.1973 18.0342 m
+61.1973 10.8467 L
+S46.7969 18.0342 m
+46.7969 10.8467 L
+S32.3965 18.0342 m
+32.3965 10.8467 L
+S17.9971 18.0342 m
+17.9971 10.8467 L
+S3.5967 18.0342 m
+3.5967 10.8467 l
+S61.1973 32.4092 m
+61.1973 25.2217 L
+S46.7969 32.4092 m
+46.7969 25.2217 L
+S17.9971 32.4092 m
+17.9971 25.2217 L
+S3.5967 32.4092 m
+3.5967 25.2217 l
+S61.1973 46.7842 m
+61.1973 39.5967 L
+S46.7969 46.7842 m
+46.7969 39.5967 L
+S32.3965 46.7842 m
+32.3965 39.5967 L
+S17.9971 46.7842 m
+17.9971 39.5967 L
+S3.5967 46.7842 m
+3.5967 39.5967 l
+S61.1973 61.2217 m
+61.1973 54.0347 L
+S46.7969 61.2217 m
+46.7969 54.0347 L
+S32.3965 61.2217 m
+32.3965 54.0347 L
+S17.9971 61.2217 m
+17.9971 54.0347 L
+S3.5967 61.2217 m
+3.5967 54.0347 l
+S61.1973 71.959 m
+61.1973 68.4717 L
+S46.7969 71.959 m
+46.7969 68.4717 L
+S32.3965 71.959 m
+32.3965 68.4717 L
+S17.9971 71.959 m
+17.9971 68.4717 L
+S3.5967 71.959 m
+3.5967 68.4717 l
+S32.3965 32.4092 m
+32.3965 25.2217 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 0.3 w 4 M []0 d0 XR
+10.6 64.867 m
+7.85 62.867 l
+S9.1 8.617 m
+6.85 6.867 l
+S78.1 68.617 m
+74.85 67.867 l
+S76.85 56.867 m
+74.35 55.117 l
+S79.6 51.617 m
+76.6 51.617 l
+S76.35 44.117 m
+73.6 45.867 l
+S78.6 35.867 m
+76.6 34.367 l
+S76.1 23.867 m
+73.35 26.117 l
+S78.1 12.867 m
+73.85 13.617 l
+S68.35 14.617 m
+66.1 12.867 l
+S76.6 30.617 m
+73.6 30.617 l
+S62.85 58.117 m
+60.956 60.941 l
+S32.85 59.617 m
+31.196 62.181 l
+S47.891 64.061 m
+49.744 66.742 l
+S72.814 2.769 m
+73.928 5.729 l
+S67.976 2.633 m
+67.35 5.909 l
+S61.85 27.617 m
+59.956 30.441 l
+S53.504 56.053 m
+51.85 58.617 l
+S52.762 1.779 m
+52.876 4.776 l
+S45.391 5.311 m
+47.244 7.992 l
+S37.062 3.375 m
+35.639 5.43 l
+S55.165 34.828 m
+57.518 37.491 l
+S20.795 3.242 m
+22.12 5.193 l
+S14.097 4.747 m
+15.008 8.965 l
+S9.736 1.91 m
+8.073 4.225 l
+S31.891 5.573 m
+32.005 8.571 l
+S12.1 70.367 m
+15.6 68.867 l
+S9.35 54.867 m
+9.6 58.117 l
+S12.85 31.867 m
+14.35 28.117 l
+S10.1 37.367 m
+12.35 41.117 l
+S34.1 71.117 m
+31.85 68.617 l
+S38.35 71.117 m
+41.6 68.367 l
+S55.1 71.117 m
+58.35 69.117 l
+S57.35 65.117 m
+55.35 61.867 l
+S64.35 66.367 m
+69.35 68.617 l
+S71.85 62.867 m
+69.35 61.117 l
+S23.6 70.867 m
+23.6 67.867 l
+S20.6 65.867 m
+17.35 65.367 l
+S24.85 61.367 m
+25.35 58.117 l
+S25.85 65.867 m
+29.35 66.617 l
+S14.1 54.117 m
+16.85 56.117 l
+S12.35 11.617 m
+12.6 15.617 l
+S12.1 19.867 m
+14.35 22.367 l
+S26.1 9.867 m
+23.6 13.367 l
+S34.6 47.117 m
+32.1 45.367 l
+S62.6 41.867 m
+59.85 43.367 l
+S31.6 35.617 m
+27.85 36.367 l
+S36.35 26.117 m
+34.35 24.617 l
+S33.85 14.117 m
+31.1 16.367 l
+S37.1 9.867 m
+35.1 11.117 l
+S34.35 20.867 m
+31.35 20.867 l
+S44.6 56.617 m
+42.1 54.867 l
+S47.35 51.367 m
+44.35 51.367 l
+S44.1 43.867 m
+41.35 45.617 l
+S43.35 33.117 m
+42.6 30.617 l
+S43.85 23.617 m
+41.1 25.867 l
+S44.35 15.617 m
+42.35 16.867 l
+S67.823 31.1 m
+64.823 31.1 l
+S27.1 32.617 m
+29.6 30.867 l
+S31.85 55.117 m
+34.85 55.117 l
+S19.6 40.867 m
+22.1 39.117 l
+S16.85 35.617 m
+19.85 35.617 l
+S20.1 28.117 m
+22.85 29.867 l
+S52.1 42.617 m
+54.484 44.178 l
+S52.437 50.146 m
+54.821 48.325 l
+S59.572 54.133 m
+59.35 51.117 l
+S50.185 10.055 m
+53.234 9.928 l
+S51.187 15.896 m
+53.571 14.075 l
+S58.322 19.883 m
+59.445 16.823 l
+S53.1 32.117 m
+50.6 30.367 l
+S52.85 24.617 m
+49.6 25.617 l
+S61.85 9.117 m
+59.1 10.867 l
+S69.35 34.617 m
+66.6 36.367 l
+S67.1 23.617 m
+65.1 22.117 l
+S24.435 46.055 m
+27.484 45.928 l
+S25.437 51.896 m
+27.821 50.075 l
+S62.6 47.117 m
+65.321 46.575 l
+S19.85 19.867 m
+20.35 16.617 l
+S21.85 21.867 m
+25.35 22.617 l
+S37.6 62.867 m
+41.6 62.117 l
+S38.323 42.1 m
+38.823 38.6 l
+S69.35 52.617 m
+66.85 53.867 l
+S14.85 62.117 m
+18.1 59.367 l
+S9.6 46.117 m
+7.1 44.367 l
+S20.6 51.617 m
+18.6 50.117 l
+S46.141 70.811 m
+47.994 73.492 l
+S69.391 40.561 m
+71.244 43.242 l
+S38.641 49.311 m
+39.35 52.117 l
+S25.141 16.811 m
+25.85 19.617 l
+S36.6 32.867 m
+34.6 31.367 l
+S6.1 68.617 m
+2.85 67.867 l
+S4.85 56.867 m
+2.35 55.117 l
+S7.6 51.617 m
+4.6 51.617 l
+S6.6 35.867 m
+4.6 34.367 l
+S6.1 12.867 m
+1.85 13.617 l
+S4.6 30.617 m
+1.6 30.617 l
+S72.814 74.769 m
+73.928 77.729 l
+S67.976 74.633 m
+67.35 77.909 l
+S52.762 73.779 m
+52.876 76.776 l
+S37.062 75.375 m
+35.639 77.43 l
+S20.795 75.242 m
+22.12 77.193 l
+S9.736 73.91 m
+8.073 76.225 l
+S10.1 23.617 m
+6.35 24.367 l
+S73.217 18.276 m
+71.323 21.1 l
+S28.823 39.6 m
+29.505 42.389 l
+S49.6 38.617 m
+47.6 37.117 l
+S60.323 73.6 m
+62.323 76.6 l
+S60.323 1.6 m
+62.323 4.6 l
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 3.6 w 4 M []0 d0 XR
+8.2 8.2 m
+80.7 8.2 L
+S8.2 22.6001 m
+80.7 22.6001 L
+S8.2 37.0002 m
+80.7 37.0002 L
+S8.2 51.4 m
+80.7 51.4 L
+S8.2 65.8001 m
+80.7 65.8001 L
+S8.2 15.4 m
+80.7 15.4 L
+S8.2 29.8001 m
+80.7 29.8001 L
+S8.2 44.2 m
+80.7 44.2 L
+S8.2 58.6001 m
+80.7 58.6001 L
+S8.2 73.0002 m
+80.7 73.0002 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u1 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7844.75 8611 m
+-7844.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7844.75 8611 L
+nu0 Ap
+0 O
+1 g
+-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+F-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+F-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+F-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+F-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+F-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+F-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+F-7854.7817 8589.125 m
+-7860.9009 8587.6162 -7864.7817 8589.125 V
+-7868.877 8587.6484 -7874.7817 8589.125 V
+-7879.7446 8587.4492 -7884.7817 8589.125 V
+-7890.7969 8587.5742 -7894.7817 8589.125 V
+-7894.7817 8608.8096 L
+-7891.6958 8609.7842 -7888.2969 8609.9912 -7884.3799 8608.9082 C
+-7878.2134 8610.4912 -7874.4634 8608.9082 V
+-7869.4634 8610.4912 -7864.3799 8608.8242 V
+-7860.0474 8610.4082 -7854.3799 8608.9082 V
+-7848.8799 8610.3242 -7844.7817 8609.125 V
+-7844.7817 8589.4404 L
+-7847.5254 8588.4287 -7850.6514 8587.9287 -7854.7817 8589.125 C
+f0 R
+0 G
+1 J 1 j 0.5 w-7874.75 8609 m
+-7882.54 8610.9473 -7888.813 8607.585 -7894.75 8603.0488 C
+S-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+S-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+S-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+S-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+S-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+S-7864.75 8589 m
+-7856.96 8587.0527 -7850.687 8590.415 -7844.75 8594.9512 C
+S-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+S-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+SUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894 8610 m
+-7843.8921 8610 L
+-7843.8921 8553.9756 L
+-7894 8553.9756 L
+-7894 8610 L
+nu0 O
+0.1 1 1 0 k
+-7856.9014 8575.5752 m
+-7858.7178 8569.0957 -7868.8247 8572.4658 Y
+-7868.791 8572.5303 L
+-7878.8999 8569.1611 -7880.7144 8575.6396 V
+-7886.6758 8593.0068 -7881.4922 8599.7451 V
+-7874.7529 8609.3369 -7870.6055 8609.3369 V
+-7867.0103 8609.2705 L
+-7862.8638 8609.2705 -7856.125 8599.6816 Y
+-7850.9409 8592.9424 -7856.9014 8575.5752 Y
+fu0 0 0 1 k
+-7861.3926 8553.9756 m
+-7862.1167 8555.4199 -7862.9238 8556.4756 V
+-7862.4058 8556.0635 -7861.5151 8555.1924 -7861.3926 8553.9756 C
+f-7875.064 8556.4854 m
+-7875.8711 8555.4307 -7876.5942 8553.9863 Y
+-7876.4727 8555.2021 -7875.582 8556.0732 -7875.064 8556.4854 C
+fU0 0.61 0.74 0 k
+-7860.5977 8578.4609 m
+-7861.9038 8573.7959 -7869.1816 8576.2217 Y
+-7869.1567 8576.2686 L
+-7876.436 8573.8428 -7877.7417 8578.5078 V
+-7882.0337 8591.0117 -7878.3018 8595.8633 V
+-7873.4487 8602.7686 -7870.4634 8602.7686 V
+-7867.875 8602.7227 L
+-7864.8887 8602.7227 -7860.0366 8595.8174 Y
+-7856.3042 8590.9639 -7860.5977 8578.4609 Y
+fu1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7864.6226 8581.2754 m
+-7863.813 8581.2754 -7863.1558 8580.6182 -7863.1558 8579.8096 c
+-7863.1558 8579 -7863.813 8578.3428 -7864.6226 8578.3428 c
+-7865.4321 8578.3428 -7866.0889 8579 -7866.0889 8579.8096 c
+-7866.0889 8580.6182 -7865.4321 8581.2754 -7864.6226 8581.2754 c
+b-7864.3638 8592.9971 m
+-7863.0806 8592.9971 -7862.0415 8592.1201 -7862.0415 8591.042 c
+-7862.0415 8589.9619 -7863.0806 8589.0869 -7864.3638 8589.0869 c
+-7865.645 8589.0869 -7866.6846 8589.9619 -7866.6846 8591.042 c
+-7866.6846 8592.1201 -7865.645 8592.9971 -7864.3638 8592.9971 c
+b-7863.834 8604.7861 m
+-7862.2817 8604.7861 -7861.0239 8604.1299 -7861.0239 8603.3213 c
+-7861.0239 8602.5117 -7862.2817 8601.8545 -7863.834 8601.8545 c
+-7865.3862 8601.8545 -7866.645 8602.5117 -7866.645 8603.3213 c
+-7866.645 8604.1299 -7865.3862 8604.7861 -7863.834 8604.7861 c
+b-7859.6104 8576.5264 m
+-7858.8687 8576.5264 -7858.2671 8575.8154 -7858.2671 8574.9365 c
+-7858.2671 8574.0596 -7858.8687 8573.3477 -7859.6104 8573.3477 c
+-7860.353 8573.3477 -7860.9546 8574.0596 -7860.9546 8574.9365 c
+-7860.9546 8575.8154 -7860.353 8576.5264 -7859.6104 8576.5264 c
+b-7858.0034 8598.083 m
+-7858.8818 8597.7354 -7859.1494 8596.335 -7858.603 8594.9541 c
+-7858.0566 8593.5752 -7856.9014 8592.7363 -7856.0234 8593.085 c
+-7855.145 8593.4326 -7854.877 8594.833 -7855.4233 8596.2139 c
+-7855.9702 8597.5947 -7857.125 8598.4316 -7858.0034 8598.083 c
+bu-7873.0566 8581.1592 m
+-7873.8662 8581.1592 -7874.5239 8580.502 -7874.5239 8579.6934 c
+-7874.5239 8578.8828 -7873.8662 8578.2266 -7873.0566 8578.2266 c
+-7872.248 8578.2266 -7871.5913 8578.8828 -7871.5913 8579.6934 c
+-7871.5913 8580.502 -7872.248 8581.1592 -7873.0566 8581.1592 c
+b-7873.3159 8592.8799 m
+-7874.5991 8592.8799 -7875.6382 8592.0049 -7875.6382 8590.9248 c
+-7875.6382 8589.8447 -7874.5991 8588.9697 -7873.3159 8588.9697 c
+-7872.0342 8588.9697 -7870.9951 8589.8447 -7870.9951 8590.9248 c
+-7870.9951 8592.0049 -7872.0342 8592.8799 -7873.3159 8592.8799 c
+b-7873.8457 8604.6709 m
+-7875.3975 8604.6709 -7876.6558 8604.0146 -7876.6558 8603.2041 c
+-7876.6558 8602.3936 -7875.3975 8601.7383 -7873.8457 8601.7383 c
+-7872.293 8601.7383 -7871.0352 8602.3936 -7871.0352 8603.2041 c
+-7871.0352 8604.0146 -7872.293 8604.6709 -7873.8457 8604.6709 c
+b-7878.0679 8576.4092 m
+-7878.811 8576.4092 -7879.4121 8575.6982 -7879.4121 8574.8213 c
+-7879.4121 8573.9443 -7878.811 8573.2334 -7878.0679 8573.2334 c
+-7877.3262 8573.2334 -7876.7241 8573.9443 -7876.7241 8574.8213 c
+-7876.7241 8575.6982 -7877.3262 8576.4092 -7878.0679 8576.4092 c
+b-7879.6758 8597.9678 m
+-7878.7983 8597.6201 -7878.5298 8596.2188 -7879.0762 8594.8379 c
+-7879.6226 8593.457 -7880.7778 8592.6201 -7881.6558 8592.9678 c
+-7882.5342 8593.3164 -7882.8032 8594.7178 -7882.2568 8596.0967 c
+-7881.7104 8597.4775 -7880.5552 8598.3154 -7879.6758 8597.9678 c
+bUU0 Ap
+0 0 0 1 k
+-7869.1318 8576.6553 m
+-7869.1318 8609.3145 l
+Fu-7853.3906 8562.5303 m
+-7854.0815 8561.8369 -7857.019 8562.7021 Y
+-7858.229 8562.874 -7858.0562 8565.2939 Y
+-7857.019 8567.3682 -7857.7104 8567.1943 Y
+-7858.2998 8567.1943 -7859.855 8567.1143 -7860.7822 8567.0635 C
+-7861.1226 8565.6689 -7862.6128 8564.4756 -7864.7217 8563.7695 C
+-7862.7578 8560.4775 -7864.5176 8559.7949 -7866.2935 8559.79 C
+-7866.3096 8559.7021 -7866.332 8559.6162 -7866.3599 8559.5332 C
+-7864.1089 8559.5791 -7863.6392 8557.2588 Y
+-7863.4048 8557.0635 -7863.1606 8556.7861 -7862.9238 8556.4756 C
+-7863.1416 8556.6475 -7863.2944 8556.7393 Y
+-7864.2583 8556.7393 -7865.8774 8558.4941 -7866.4966 8559.207 C
+-7866.9194 8558.4434 -7867.853 8557.9111 -7868.9434 8557.9111 c
+-7870.0698 8557.9111 -7871.0322 8558.4795 -7871.4312 8559.2852 C
+-7871.9985 8558.624 -7873.6968 8556.751 -7874.6943 8556.751 C
+-7874.8462 8556.6572 -7875.064 8556.4854 V
+-7874.8281 8556.7939 -7874.583 8557.0732 -7874.3481 8557.2686 C
+-7873.8638 8559.6563 -7871.5254 8559.5342 V
+-7871.5449 8559.5889 -7871.5674 8559.6436 -7871.5806 8559.7021 C
+-7874.9238 8559.6924 -7873.937 8562.3174 -7873.2104 8563.6602 C
+-7875.5918 8564.376 -7877.2646 8565.7012 -7877.5239 8567.25 C
+-7878.4473 8567.2998 -7879.6729 8567.3584 -7880.1802 8567.3584 C
+-7880.8726 8567.5313 -7879.835 8565.458 V
+-7879.6626 8563.0391 -7880.8726 8562.8662 V
+-7883.8096 8562.002 -7884.501 8562.6934 V
+-7885.1919 8563.5566 -7886.0562 8562.3467 V
+-7885.1919 8564.0752 -7883.291 8563.5566 V
+-7880.6982 8562.8662 -7881.3906 8564.5938 V
+-7881.9087 8568.0498 -7880.1802 8568.7402 V
+-7878.0342 8569.8545 -7876.2822 8570.0889 V
+-7875.9087 8570.4141 -7875.4639 8570.7109 -7874.958 8570.9766 C
+-7877.5562 8571.0469 -7880.2246 8571.9209 -7881.0752 8574.9561 C
+-7881.5151 8576.2432 -7882.0518 8578.2432 V
+-7883.1025 8578.8252 -7884.3022 8580.0078 -7885.541 8582.2627 C
+-7886.394 8585.4502 -7887.167 8580.7129 V
+-7888.3975 8577.6494 -7889.6504 8577.5381 V
+-7888.4702 8579.2871 -7888.9038 8580.416 V
+-7887.2998 8584.917 -7885.6138 8583.8994 V
+-7884.0986 8583.2197 -7882.688 8580.8154 V
+-7883.0698 8582.4971 -7883.4326 8584.417 -7883.6743 8586.3906 C
+-7884.4888 8586.3975 L
+-7886.3506 8585.4795 -7886.3262 8588.959 V
+-7887.1226 8592.9453 -7886.3594 8595.6826 V
+-7885.647 8598.1504 -7888.1274 8596.9307 V
+-7889.2842 8597.3242 -7889.9839 8596.7881 V
+-7892.3882 8595.4131 -7894 8597.124 V
+-7892.147 8596.8799 -7891.4482 8597.417 V
+-7889.9785 8597.5615 -7889.897 8598.1787 V
+-7886.9561 8598.8555 -7886.188 8598.0771 V
+-7884.417 8597.2139 -7885.1304 8594.3604 V
+-7885.8799 8586.4814 -7884.3198 8588.4053 V
+-7884.1182 8588.4219 -7883.8784 8588.5176 V
+-7884.1519 8592.4326 -7883.8018 8596.3252 -7881.9961 8598.8516 C
+-7885.4536 8591.333 -7880.2974 8576.3037 Y
+-7878.9609 8571.5303 -7873.127 8572.1016 -7870.145 8572.7344 C
+-7870.0718 8574.1299 -7869.8374 8575.9492 -7869.1318 8576.6553 C
+-7868.2134 8574.6963 -7868.2358 8573.0732 V
+-7867.0762 8572.7217 -7860.2817 8570.8447 -7857.4487 8574.3369 C
+-7858.4312 8571.8135 -7860.8262 8571.0186 -7863.2007 8570.9189 C
+-7862.667 8570.6318 -7862.2041 8570.3047 -7861.8257 8569.9502 C
+-7860.041 8569.7861 -7857.7104 8568.5771 Y
+-7855.9814 8567.8857 -7856.5015 8564.4307 Y
+-7857.1919 8562.7021 -7854.5991 8563.3936 Y
+-7852.7002 8563.9111 -7851.835 8562.1836 Y
+-7852.7002 8563.3936 -7853.3906 8562.5303 Y
+f-7847.9082 8596.9521 m
+-7848.6074 8597.4893 -7849.7632 8597.0938 Y
+-7852.2446 8598.3135 -7851.5327 8595.8467 Y
+-7850.769 8593.1104 -7851.564 8589.1221 Y
+-7851.541 8585.6445 -7853.4014 8586.5596 Y
+-7854.0342 8586.5557 L
+-7854.3198 8584.6123 -7854.7046 8582.7549 -7855.0898 8581.1699 C
+-7853.7129 8583.4199 -7852.2778 8584.0635 Y
+-7850.5913 8585.082 -7848.9878 8580.5791 Y
+-7849.4214 8579.4502 -7848.2417 8577.7021 Y
+-7849.4937 8577.8125 -7850.7246 8580.876 Y
+-7851.4976 8585.6152 -7852.3511 8582.4268 Y
+-7853.5776 8580.1904 -7854.769 8579.0098 -7855.814 8578.4229 C
+-7856.2026 8577.0635 -7856.4858 8576.2393 Y
+-7856.7002 8575.4727 -7857.0337 8574.8486 -7857.4487 8574.3369 C
+-7857.3799 8574.5127 -7857.3174 8574.6982 -7857.2632 8574.8916 C
+-7851.3022 8592.2588 -7856.4858 8598.9971 V
+-7863.2246 8608.5869 -7867.3721 8608.5869 V
+-7870.9663 8608.6514 L
+-7875.1138 8608.6514 -7881.853 8599.0615 Y
+-7881.9038 8598.9961 -7881.9463 8598.9219 -7881.9961 8598.8516 C
+-7881.7378 8599.4141 -7881.437 8599.9404 -7881.0752 8600.4092 C
+-7874.3359 8610 -7870.189 8610 V
+-7866.5942 8609.9346 L
+-7862.4482 8609.9346 -7855.709 8600.3447 Y
+-7853.5801 8597.5771 -7853.3306 8593.0176 -7853.7769 8588.6055 C
+-7853.6553 8588.5752 -7853.5698 8588.5684 Y
+-7852.0112 8586.6475 -7852.7598 8594.5244 Y
+-7853.4746 8597.3789 -7851.7026 8598.2402 Y
+-7850.9351 8599.0186 -7847.9946 8598.3428 Y
+-7847.9136 8597.7256 -7846.4434 8597.5811 Y
+-7845.7446 8597.0449 -7843.8921 8597.2881 Y
+-7845.5024 8595.5771 -7847.9082 8596.9521 Y
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894 8610 m
+-7829.187 8610 L
+-7829.187 8545.9023 L
+-7894 8545.9023 L
+-7894 8610 L
+nu0 O
+0 g
+-7859.6978 8568.4297 m
+-7861.6094 8545.9023 L
+-7863.5215 8568.4297 L
+-7862.9033 8568.3066 -7862.2642 8568.2402 -7861.6094 8568.2402 c
+-7860.9551 8568.2402 -7860.3159 8568.3066 -7859.6978 8568.4297 C
+f-7871.2402 8576.3975 m
+-7894 8578.3301 L
+-7871.1138 8580.2734 L
+-7871.2856 8579.5469 -7871.3848 8578.793 -7871.3848 8578.0156 c
+-7871.3848 8577.4629 -7871.3281 8576.9248 -7871.2402 8576.3975 C
+f-7866.519 8569.5723 m
+-7880.1626 8560.8047 L
+-7870.2153 8573.377 L
+-7869.3574 8571.791 -7868.0718 8570.4766 -7866.519 8569.5723 C
+f-7863.481 8587.6074 m
+-7861.5786 8610 L
+-7859.6768 8587.5967 L
+-7860.3018 8587.7227 -7860.9473 8587.791 -7861.6094 8587.791 c
+-7862.25 8587.791 -7862.873 8587.7246 -7863.481 8587.6074 C
+f-7851.9609 8579.5068 m
+-7829.187 8577.5732 L
+-7852.083 8575.6289 L
+-7852.083 8575.8506 L
+-7851.9258 8576.5488 -7851.834 8577.2695 -7851.834 8578.0156 c
+-7851.834 8578.5234 -7851.8848 8579.0195 -7851.9609 8579.5068 C
+f-7870.1138 8582.8262 m
+-7880.1641 8595.5293 L
+-7866.2778 8586.6055 L
+-7867.8823 8585.7305 -7869.2114 8584.416 -7870.1138 8582.8262 C
+f-7852.9961 8573.3945 m
+-7842.875 8560.6055 L
+-7856.7666 8569.5313 L
+-7855.1768 8570.4414 -7853.8633 8571.7793 -7852.9961 8573.3945 C
+f-7856.6895 8586.4512 m
+-7842.873 8595.3281 L
+-7852.9658 8582.5732 L
+-7853.8198 8584.1895 -7855.1152 8585.5313 -7856.6895 8586.4512 C
+f-7852.8887 8582.6133 m
+-7852.3862 8581.6641 -7852.043 8580.6211 -7851.875 8579.5195 c
+-7851.7993 8579.0293 -7851.748 8578.5273 -7851.748 8578.0156 c
+-7851.748 8577.2637 -7851.8398 8576.5352 -7851.998 8575.8311 c
+-7852.1958 8574.957 -7852.5049 8574.124 -7852.918 8573.3545 c
+-7853.7954 8571.7246 -7855.1191 8570.374 -7856.7241 8569.4561 c
+-7857.6294 8568.9375 -7858.6226 8568.5537 -7859.6802 8568.3457 c
+-7860.3047 8568.2207 -7860.9497 8568.1523 -7861.6094 8568.1523 c
+-7862.2695 8568.1523 -7862.915 8568.2207 -7863.5391 8568.3457 c
+-7864.623 8568.5605 -7865.6382 8568.957 -7866.5625 8569.4961 c
+-7868.1313 8570.4102 -7869.4282 8571.7363 -7870.291 8573.335 c
+-7870.7969 8574.2695 -7871.145 8575.2969 -7871.3262 8576.3828 c
+-7871.415 8576.916 -7871.4727 8577.459 -7871.4727 8578.0156 c
+-7871.4727 8578.8008 -7871.3711 8579.5605 -7871.1978 8580.293 c
+-7870.981 8581.207 -7870.6406 8582.0732 -7870.187 8582.8701 c
+-7869.2793 8584.4727 -7867.939 8585.8008 -7866.3174 8586.6826 c
+-7865.4487 8587.1553 -7864.5 8587.498 -7863.4961 8587.6934 c
+-7862.8848 8587.8115 -7862.2554 8587.8779 -7861.6094 8587.8779 c
+-7860.9414 8587.8779 -7860.29 8587.8086 -7859.6602 8587.6826 c
+-7858.5786 8587.4668 -7857.5664 8587.0654 -7856.6455 8586.5273 c
+-7855.0566 8585.5977 -7853.751 8584.2441 -7852.8887 8582.6133 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u1 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7884.75 8611 m
+-7884.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7884.75 8611 L
+nuu0 Ap
+0 O
+1 g
+-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 c
+-7887.897 8590.9736 -7891.0898 8589 -7894.75 8589 C
+-7894.75 8609 L
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 c
+-7891.9121 8608.7754 -7890.1807 8608.0645 -7888.7441 8606.9824 c
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 c
+f0 R
+0 G
+1 J 1 j 0.5 w-7894.75 8589.3174 m
+-7891.7207 8590.2744 -7888.8926 8591.9326 -7886.1543 8593.9072 C
+S-7894.75 8594.9512 m
+-7891.5991 8597.3564 -7888.543 8600.0869 -7885.4058 8602.5361 C
+S-7888.7441 8606.9824 m
+-7890.8105 8605.8916 -7892.7993 8604.5342 -7894.75 8603.043 C
+S-7893.8018 8608.9521 m
+-7894.1191 8608.8682 -7894.4375 8608.7852 -7894.75 8608.6865 C
+S-7888.7441 8606.9824 m
+-7890.1807 8608.0645 -7891.9121 8608.7744 -7893.8018 8608.9521 C
+S-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 C
+S-7894.75 8609 m
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 C
+S-7888.7441 8606.9824 m
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 C
+S-7886.1543 8593.9072 m
+-7887.8975 8590.9736 -7891.0898 8589 -7894.75 8589 C
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894.0254 8610.0264 m
+-7838.0542 8610.0264 L
+-7838.0542 8548.5342 L
+-7894.0254 8548.5342 L
+-7894.0254 8610.0264 L
+nuu0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w-7867.5991 8586.7217 m
+-7867.3594 8597.5215 -7872.8794 8607.8398 v
+-7872.4009 8610 -7870.959 8610 v
+-7871.2002 8606.6406 -7870.2393 8606.1611 v
+-7865.9199 8594.1602 -7866.6382 8586.2402 v
+-7867.5991 8586.7217 l
+b-7867.5991 8586.7217 m
+-7869.2793 8592 -7881.0391 8593.2012 v
+-7885.3594 8593.6807 -7885.5991 8595.1211 v
+-7879.1206 8585.5195 -7878.1602 8585.7607 v
+-7891.3594 8580.001 -7894 8574.7197 v
+-7888.959 8577.6006 -7885.5991 8575.4404 v
+-7877.6802 8575.2012 -7872.6406 8577.3613 v
+-7868.8008 8579.2813 -7876.7202 8563.2012 v
+-7872.8794 8574.9609 -7869.2793 8548.5605 v
+-7868.3198 8553.8408 -7866.8799 8555.2813 v
+-7860.8799 8562.9609 -7861.8398 8565.1211 v
+-7862.3198 8568.9609 -7857.7598 8562.7207 v
+-7858 8572.3213 -7860.4009 8575.6807 v
+-7862.5591 8579.2813 -7856.5591 8577.1211 v
+-7850.5591 8575.2012 -7845.2793 8576.8809 v
+-7839.7598 8578.3203 -7838.0801 8575.4404 v
+-7849.8398 8587.9209 -7855.5991 8587.6807 v
+-7853.9194 8591.2813 l
+-7851.519 8596.0811 -7852 8597.2813 v
+-7867.2681 8587.8828 -7867.5991 8586.7217 v
+b-7867.5991 8586.7217 m
+-7864.959 8568.2402 -7867.5991 8560.5605 v
+-7869.998 8550.001 -7869.2793 8548.5605 v
+S-7866.1602 8575.4404 m
+-7860.1602 8570.6406 -7858.959 8565.3604 v
+S-7866.1602 8574.7197 m
+-7875.0391 8567.041 -7876.7202 8563.2012 v
+S-7838.0801 8575.4404 m
+-7839.2793 8577.6006 -7867.3594 8585.7607 y
+-7872.4009 8580.2422 -7883.9199 8577.8408 v
+-7891.5986 8576.8809 -7894 8574.7197 v
+S-7884.6382 8593.6807 m
+-7873.1191 8584.5615 -7867.3594 8585.7607 y
+-7853.1992 8592 -7852 8597.2813 v
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7893.8496 8609.9961 m
+-7843.96 8609.9961 L
+-7843.96 8558.9258 L
+-7893.8496 8558.9258 L
+-7893.8496 8609.9961 L
+nu0 O
+0.025 0.1 0.475 0 k
+-7872.1504 8577.9043 m
+-7874.4766 8576.8125 -7876.6914 8576.4434 -7878.373 8576.9238 c
+-7879.0518 8577.1172 -7879.645 8577.4473 -7880.123 8577.9238 c
+-7880.6006 8578.4023 -7880.9297 8578.9951 -7881.123 8579.6729 c
+-7882.0088 8582.7715 -7880.0103 8587.6777 -7875.9233 8591.7666 c
+-7871.834 8595.8535 -7866.9297 8597.8516 -7863.8286 8596.9668 c
+-7863.1519 8596.7715 -7862.5586 8596.4424 -7862.0806 8595.9658 c
+-7861.603 8595.4883 -7861.2754 8594.8955 -7861.082 8594.2168 c
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.582 8585.21 -7864.791 8583.6133 -7866.2793 8582.123 c
+-7868.1504 8580.2539 -7870.1914 8578.8242 -7872.1504 8577.9043 c
+fu0.0035 0.014 0.0665 0 k
+-7871.2183 8576.9727 m
+-7873.8306 8576.0215 -7876.3975 8575.9688 -7878.373 8576.9238 C
+-7876.6914 8576.4434 -7874.4766 8576.8125 -7872.1504 8577.9043 c
+-7871.6191 8578.1543 -7871.0806 8578.4434 -7870.543 8578.7676 C
+-7868.8984 8578.0537 L
+-7869.667 8577.6172 -7870.4434 8577.2539 -7871.2183 8576.9727 c
+f0.015 0.06 0.285 0 k
+-7868.8984 8578.0537 m
+-7870.543 8578.7676 L
+-7869.0962 8579.6348 -7867.6426 8580.7607 -7866.2793 8582.123 c
+-7866.1538 8582.25 -7866.0327 8582.3779 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7866.3706 8579.7236 -7867.6191 8578.7813 -7868.8984 8578.0537 C
+fUu0.039 0.156 0.741 0 k
+-7859.687 8565.4043 m
+-7859.9746 8565.6914 -7871.2183 8576.9727 Y
+-7870.4434 8577.2539 -7869.667 8577.6172 -7868.8984 8578.0537 C
+-7855.4146 8564.5703 L
+-7857.061 8564.0996 -7858.6406 8564.3555 -7859.687 8565.4043 c
+f0.025 0.1 0.475 0 k
+-7855.4146 8564.5703 m
+-7868.8984 8578.0537 L
+-7867.584 8578.8027 -7866.2969 8579.7754 -7865.1143 8580.957 c
+-7865.084 8580.9863 -7865.0586 8581.0156 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7851.5264 8567.1328 -7851.7202 8566.9141 -7851.9302 8566.7012 c
+-7853.0103 8565.623 -7854.2305 8564.9082 -7855.4146 8564.5703 C
+fUu0.0115 0.046 0.2185 0 k
+-7845.9346 8574.3926 m
+-7843.5337 8571.9893 -7843.335 8568.0898 -7845.1382 8564.6973 C
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f0.015 0.06 0.285 0 k
+-7853.5337 8559.5957 m
+-7852.582 8558.9258 L
+-7855.2046 8558.3516 -7857.8306 8558.9141 -7859.6206 8560.7061 c
+-7858.1719 8559.2578 -7855.9082 8558.9307 -7853.5337 8559.5957 C
+f0.0295 0.118 0.5605 0 k
+-7853.5337 8559.5957 m
+-7855.9082 8558.9307 -7858.1719 8559.2578 -7859.6206 8560.7061 c
+-7861.019 8562.1055 -7861.3706 8564.2637 -7860.7954 8566.5469 C
+-7858.8672 8563.5449 -7855.4082 8564.5537 V
+-7853.585 8559.6309 L
+-7853.5337 8559.5957 L
+f*u
+1 D
+0.048 0.192 0.912 0 k
+-7845.9346 8574.3926 m
+-7847.2817 8575.7383 -7849.332 8576.1133 -7851.5234 8575.627 C
+-7861.6714 8585.7734 L
+-7861.7695 8585.5684 -7861.7695 8585.5684 -7861.6714 8585.7734 c
+-7860.2246 8588.8145 -7859.9702 8591.916 -7861.082 8594.2168 C
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.5054 8585.3438 -7864.5918 8583.8848 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7865.1816 8580.8945 -7865.1465 8580.9238 -7865.1143 8580.957 c
+-7865.084 8580.9883 -7865.0566 8581.0176 -7865.0273 8581.0469 c
+-7865.0278 8581.0469 -7865.0278 8581.0469 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f*U
+0 D
+0.0215 0.086 0.4085 0 k
+-7852.582 8558.9258 m
+-7853.5337 8559.5957 L
+-7851.6846 8560.1113 -7849.7656 8561.2285 -7848.1138 8562.8828 c
+-7847.4063 8563.5889 -7846.7998 8564.3418 -7846.2954 8565.1182 C
+-7845.1382 8564.6973 L
+-7845.6553 8563.7246 -7846.3374 8562.793 -7847.1802 8561.9512 c
+-7848.7695 8560.3594 -7850.6758 8559.3428 -7852.582 8558.9258 C
+f0.0205 0.082 0.3895 0 k
+-7846.2954 8565.1182 m
+-7846.7998 8564.3418 -7847.4063 8563.5889 -7848.1138 8562.8828 c
+-7849.7656 8561.2285 -7851.6846 8560.1113 -7853.5337 8559.5957 C
+-7853.585 8559.6309 L
+-7855.4082 8564.5537 L
+-7854.2114 8564.9219 -7852.9878 8565.6436 -7851.9302 8566.7012 c
+-7851.7202 8566.9141 -7851.5264 8567.1328 -7851.3408 8567.3574 C
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+fUu0.445 0.356 0.267 0 k
+-7893.8496 8609.9961 m
+-7871.957 8586.9688 L
+-7872.2007 8586.6494 -7872.5752 8586.6133 -7872.8887 8586.6592 C
+-7877.1802 8591.2891 -7888.3145 8603.4561 -7892.7266 8608.2793 C
+-7893.5649 8609.3516 -7894 8609.9932 -7893.8496 8609.9961 C
+f0.15 0.12 0.09 0 k
+-7893.834 8609.9961 m
+-7892.6606 8609.7031 -7871.6934 8588.0029 Y
+-7871.6934 8587.502 -7871.7993 8587.1758 -7871.957 8586.9688 C
+-7893.8496 8609.9961 L
+-7893.8442 8609.9961 -7893.8418 8610 -7893.834 8609.9961 c
+f0.2 0.16 0.12 0 k
+-7892.7266 8608.2793 m
+-7888.3145 8603.4561 -7877.1802 8591.2891 -7872.8887 8586.6592 C
+-7873.2002 8586.7041 -7873.4526 8586.8301 Y
+-7874.603 8587.1328 -7888.5742 8602.9619 -7892.7266 8608.2793 C
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7892.9502 8609.2324 m
+-7843.0391 8609.2324 L
+-7843.0391 8545.1152 L
+-7892.9502 8545.1152 L
+-7892.9502 8609.2324 L
+nu0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w-7843.2358 8545.1152 m
+-7843.6064 8545.248 -7843.9858 8545.2832 -7844.3833 8545.2031 c
+-7844.4863 8545.168 l
+-7844.5254 8545.1602 -7844.5703 8545.1787 -7844.6025 8545.1992 c
+-7844.9434 8545.3926 l
+-7848.7129 8547.2959 -7852.0962 8549.8965 -7854.5 8553.4473 c
+-7855.9634 8555.5918 -7857.123 8557.8789 -7858.7993 8559.8564 c
+-7859.1729 8560.209 -7859.1758 8560.7725 -7858.834 8561.1309 c
+-7858.4951 8561.501 -7857.918 8561.5078 -7857.561 8561.165 c
+-7857.4038 8561.21 l
+-7857.2642 8561.1289 -7857.0742 8561.0703 -7857.0234 8560.957 c
+-7855.853 8558.2031 -7855.1895 8555.5137 -7853.4336 8553.1387 c
+-7851.1719 8550.0947 -7848.1777 8547.9941 -7845.0298 8546.0234 c
+-7844.3672 8545.6055 L
+-7844.4966 8545.6348 L
+-7843.7695 8545.6426 l
+-7843.791 8545.6113 -7843.8008 8545.5957 -7843.8223 8545.5645 C
+-7843.6064 8545.5234 -7843.377 8545.4746 -7843.1626 8545.4336 c
+-7843.0762 8545.4238 -7843.0186 8545.3389 -7843.0391 8545.2383 c
+-7843.0503 8545.1523 -7843.1382 8545.1084 -7843.2358 8545.1152 c
+-7843.2358 8545.1152 l
+b-7859.2222 8558.9951 m
+-7859.5742 8558.8066 -7859.9658 8558.6719 -7860.248 8558.3887 c
+-7866.4521 8552.1719 -7876.6802 8551.2734 -7884.0488 8557.6855 C
+-7884.1582 8557.7813 -7884.1582 8557.957 -7884.063 8558.0645 C
+-7881.0527 8556.9434 -7872.8838 8558.375 -7869.3223 8561.4121 C
+-7869.2534 8561.4668 -7869.1465 8561.4531 -7869.1055 8561.3711 C
+-7869.0503 8561.3047 -7869.0664 8561.1953 -7869.1328 8561.1563 C
+-7872.5625 8558.0859 -7877.0674 8556.29 -7881.6729 8556.748 C
+-7878.8535 8555.1855 -7875.6313 8554.4941 -7872.3984 8554.6885 c
+-7867.7144 8554.9717 -7863.4634 8557.1191 -7859.3711 8559.2793 c
+-7859.291 8559.3193 -7859.1978 8559.293 -7859.1553 8559.2109 C
+-7859.1016 8559.1309 -7859.1426 8559.0352 -7859.2222 8558.9951 c
+b-7868.647 8560.3359 m
+-7870.2266 8564.3613 -7872.3911 8568.3203 -7875.8018 8571.0762 c
+-7875.9648 8571.2119 -7875.9946 8571.4492 -7875.8711 8571.6055 c
+-7875.7344 8571.7676 -7875.5049 8571.7793 -7875.3481 8571.6563 c
+-7871.123 8569.5967 -7868.1904 8565.1309 -7868.1626 8560.4014 c
+-7868.1626 8560.4014 l
+-7868.1328 8560.2676 -7868.2354 8560.1348 -7868.3633 8560.1221 c
+-7868.5039 8560.1055 -7868.6318 8560.1973 -7868.647 8560.3359 c
+-7868.647 8560.3359 l
+b-7862.9414 8565.0176 m
+-7863.042 8565.1816 -7863.1152 8565.3838 -7863.2617 8565.4824 c
+-7866.0806 8567.3906 -7868.9785 8568.6309 -7871.8848 8570.1328 c
+-7872.0503 8570.209 -7872.1118 8570.418 -7872.0313 8570.5703 c
+-7871.9512 8570.7227 -7871.7559 8570.7793 -7871.5898 8570.7041 c
+-7868.439 8569.3232 -7864.313 8568.5 -7862.6729 8565.1797 c
+-7862.6289 8565.1113 -7862.6455 8565.0146 -7862.7266 8564.9648 c
+-7862.7959 8564.9199 -7862.897 8564.9492 -7862.9414 8565.0176 c
+-7862.9414 8565.0176 l
+b-7862.6602 8565.918 m
+-7862.4438 8566.4297 -7862.1431 8566.8896 -7862.0503 8567.4355 c
+-7861.2183 8572.2773 -7861.1152 8577.042 -7862.248 8581.6875 c
+-7862.248 8581.6875 l
+-7862.3418 8581.9531 -7862.2114 8582.2441 -7861.9438 8582.3389 c
+-7861.6777 8582.4336 -7861.3882 8582.3125 -7861.2935 8582.0479 c
+-7859.293 8576.8115 -7859.897 8570.7373 -7862.3711 8565.7832 c
+-7862.4063 8565.7002 -7862.498 8565.6689 -7862.582 8565.6914 c
+-7862.6641 8565.7275 -7862.6978 8565.835 -7862.6602 8565.918 c
+-7862.6602 8565.918 l
+b-7861.5352 8581.5938 m
+-7858.8984 8579.2275 -7856.6816 8576.252 -7855.853 8572.7363 c
+-7855.853 8572.7363 l
+-7855.7246 8572.1816 -7856.0742 8571.623 -7856.6416 8571.4902 c
+-7857.1992 8571.375 -7857.7578 8571.7246 -7857.8862 8572.2793 c
+-7858.5649 8575.5313 -7859.8711 8578.6729 -7861.7954 8581.3867 c
+-7861.7954 8581.3867 l
+-7861.8462 8581.4551 -7861.834 8581.5576 -7861.7695 8581.6201 c
+-7861.6992 8581.6699 -7861.5977 8581.6582 -7861.5352 8581.5938 c
+-7861.5352 8581.5938 l
+b-7846.3711 8574.1826 m
+-7847.7114 8569.8301 -7850.2598 8566.0693 -7853.689 8563.1533 C
+-7853.729 8563.0723 -7853.8242 8563.0322 -7853.9038 8563.0859 C
+-7853.9863 8563.127 -7854.0122 8563.2207 -7853.9722 8563.3018 C
+-7853.957 8563.7891 -7853.7144 8564.2334 -7853.4458 8564.5313 c
+-7848.4063 8570.1621 -7844.9902 8578.7197 -7847.3433 8585.9551 C
+-7847.0762 8580.4512 -7848.7241 8574.3008 -7852.1362 8569.6738 c
+-7853.1606 8568.2695 -7854.7422 8568.1211 -7856.3081 8568.2031 C
+-7856.4023 8568.1895 -7856.4834 8568.2432 -7856.4961 8568.3369 c
+-7856.5098 8568.4189 -7856.4551 8568.5137 -7856.3623 8568.5254 C
+-7853.1479 8569.7695 -7851.4878 8573.2246 -7850.084 8576.1943 c
+-7848.415 8579.7441 -7847.7017 8583.6387 -7848.0054 8587.5 C
+-7848.0454 8587.6777 -7848.1138 8589.3975 -7847.9775 8589.4102 C
+-7847.8306 8589.4395 -7847.709 8589.3438 -7847.6802 8589.1943 C
+-7847.645 8589.0449 -7844.6426 8579.7988 -7846.3711 8574.1826 c
+b-7854.4863 8561.4912 m
+-7853.3945 8557.6211 -7851.1094 8554.251 -7848.4824 8551.2383 c
+-7848.3306 8551.1045 -7848.3145 8550.8867 -7848.4502 8550.7354 c
+-7848.5752 8550.6006 -7848.8047 8550.582 -7848.957 8550.7178 c
+-7852.3306 8553.332 -7853.4487 8557.541 -7854.7954 8561.375 c
+-7854.7954 8561.375 l
+-7854.8262 8561.4648 -7854.7754 8561.5586 -7854.6982 8561.5869 c
+-7854.6094 8561.6191 -7854.5166 8561.5684 -7854.4863 8561.4912 c
+-7854.4863 8561.4912 l
+b-7848.5313 8586.1094 m
+-7848.5991 8586.0566 -7848.707 8586.083 -7848.748 8586.1504 C
+-7848.9634 8586.4746 -7850.6914 8588.5195 -7851.3926 8589.1406 c
+-7856.1719 8593.3945 -7859.5137 8597.9609 -7867.5391 8601.7227 c
+-7874.4512 8604.9639 -7877.1113 8607.5957 -7884.3862 8605.8262 c
+-7887.687 8605.0293 -7889.0313 8604.5313 -7890.4351 8599.4551 C
+-7891.9473 8593.2988 -7890.8672 8595.7832 -7891.084 8588.4385 c
+-7891.2222 8583.6973 -7894 8572.4551 -7881.5254 8558.2598 C
+-7881.4199 8558.1484 -7881.4336 8557.9961 -7881.5337 8557.9072 C
+-7881.6328 8557.8027 -7881.7959 8557.8164 -7881.8862 8557.916 C
+-7887.5786 8562.7168 -7891.0234 8569.6582 -7892.3145 8576.9424 c
+-7893.2871 8582.4668 -7892.9199 8587.25 -7892.666 8593.6367 c
+-7892.5688 8596.0938 -7893.6855 8603.0723 -7888.9102 8607.0625 c
+-7885.3926 8610 -7880.3911 8609.5469 -7876.3545 8608.1563 c
+-7870.6992 8606.2119 -7865.9727 8603.1465 -7860.8711 8599.6094 c
+-7857.2656 8597.125 -7849.2881 8587.2852 -7848.4785 8586.3262 C
+-7848.4351 8586.2588 -7848.4502 8586.1504 -7848.5313 8586.1094 C
+b-7883.0503 8573.3057 m
+-7882.168 8572.5029 -7881.7017 8573.8457 -7881.4297 8574.6016 c
+-7881.1626 8575.3574 -7880.189 8575.25 -7880.5127 8575.5732 c
+-7880.8369 8575.8975 -7880.8369 8575.9521 -7881.3232 8575.5195 c
+-7881.8086 8575.0879 -7881.8086 8575.7363 -7882.5649 8575.25 c
+-7883.3198 8574.7627 -7883.645 8573.8457 -7883.0503 8573.3057 c
+b-7875.6519 8577.9492 m
+-7875.3657 8577.5918 -7874.6802 8577.5723 -7874.4648 8577.8945 c
+-7874.25 8578.2197 -7873.3306 8578.2734 -7873.4937 8578.5967 c
+-7873.6543 8578.9219 -7873.6016 8579.1387 -7874.0874 8578.9219 c
+-7874.5737 8578.7051 -7874.4121 8579.2998 -7874.897 8579.084 c
+-7875.3833 8578.8672 -7875.8687 8578.2197 -7875.6519 8577.9492 c
+b-7867.6074 8583.0791 m
+-7867.1206 8582.7559 -7865.8794 8583.5117 -7866.4727 8583.5117 c
+-7867.0674 8583.5117 -7866.311 8584.2676 -7866.8521 8584.4834 c
+-7867.3906 8584.6992 -7867.2832 8584.4297 -7867.6074 8584.6445 c
+-7867.9297 8584.8613 -7868.3633 8585.2393 -7868.5239 8584.4297 c
+-7868.6855 8583.6191 -7868.3633 8583.6191 -7867.9849 8583.3496 c
+-7867.6074 8583.0791 -7867.6074 8583.0791 y
+b-7882.2402 8583.3496 m
+-7881.1074 8583.2422 -7881.8633 8583.998 -7881.269 8584.4834 c
+-7880.6738 8584.9697 -7879.918 8585.6172 -7880.729 8585.4004 c
+-7881.5391 8585.1855 -7882.9961 8585.6719 -7882.9434 8584.5381 c
+-7882.8887 8583.4033 -7882.6328 8583.3867 -7882.2402 8583.3496 c
+b-7876.5703 8591.6113 m
+-7876.1016 8591.3438 -7876.6802 8591.7197 -7876.0303 8591.6113 c
+-7875.3833 8591.5039 -7874.7886 8591.6113 -7875.2207 8591.8281 c
+-7875.6519 8592.0439 -7876.3008 8592.1523 -7876.4634 8591.9893 c
+-7876.625 8591.8281 -7876.9473 8591.8281 -7876.5703 8591.6113 c
+b-7867.0674 8591.1797 m
+-7867.4785 8590.1797 -7866.0962 8590.4238 -7865.4473 8590.7461 c
+-7864.7998 8591.0723 -7863.8262 8590.4775 -7864.4209 8590.9102 c
+-7865.0137 8591.3418 -7864.7998 8590.9102 -7865.3926 8591.2334 c
+-7865.9873 8591.5566 -7866.6895 8592.0977 -7867.0674 8591.1797 c
+b-7882.6738 8597.0664 m
+-7882.7222 8596.0752 -7881.8086 8596.957 -7881.269 8597.0117 c
+-7880.729 8597.0664 -7880.0801 8597.0664 -7880.2432 8597.2813 c
+-7880.4038 8597.498 -7880.459 8597.498 -7881.1626 8597.7129 c
+-7881.8633 8597.9297 -7882.6191 8598.1445 -7882.6738 8597.0664 c
+b-7883.1582 8591.6113 m
+-7884.0664 8591.9746 -7884.293 8591.8809 -7884.5625 8592.2051 c
+-7884.834 8592.5293 -7885.1558 8593.2314 -7885.5352 8592.0977 c
+-7885.9121 8590.9629 -7885.4282 8589.7764 -7885.0479 8589.9375 c
+-7884.6714 8590.0996 -7884.293 8590.7461 -7883.8618 8590.9629 c
+-7883.4297 8591.1797 -7882.6191 8591.3945 -7883.1582 8591.6113 c
+bUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894 8610 m
+-7813 8610 L
+-7813 8505 L
+-7894 8505 L
+-7894 8610 L
+nuuu0 O
+0 0 0 1 k
+-7875.8057 8522.4258 m
+-7876.0742 8520.6621 -7877.1602 8519.291 -7878.5239 8519.3965 c
+-7879.8862 8519.502 -7880.707 8521.0234 -7880.7432 8522.8066 c
+-7880.748 8523.0693 -7880.6743 8524.2441 -7880.6304 8524.4775 C
+-7880.6382 8524.582 -7880.6191 8524.6738 -7880.6104 8524.7803 c
+-7880.5142 8526.0254 -7879.3574 8527.3604 -7877.9414 8527.25 c
+-7876.5249 8527.1406 -7875.4897 8525.8613 -7875.6367 8524.4727 c
+-7875.644 8524.4072 -7875.6958 8523.626 -7875.707 8523.5625 C
+-7875.6816 8523.2852 -7875.7598 8522.7256 -7875.8057 8522.4258 c
+f-7886.2646 8531.7334 m
+-7886.9946 8539.916 -7881.5015 8539.1191 v
+-7878.3682 8538.0186 -7879.4414 8535.1211 v
+-7879.6426 8533.752 -7881.7847 8532.498 v
+-7882.146 8532.25 -7882.7632 8531.1016 v
+-7883.1294 8529.5977 -7884.5186 8529.2979 v
+-7886.0762 8529.251 -7886.2646 8531.7334 v
+f-7860.7646 8540.4971 m
+F-7860.0762 8538.3408 m
+-7860.7847 8537.1934 -7863.8848 8537.6279 Y
+-7864.811 8537.6885 -7865.3799 8537.1113 Y
+-7867.8394 8533.0918 -7871.0386 8533.8857 -7871.4082 8533.9932 C
+-7871.4097 8533.9863 L
+-7874.999 8534.6045 -7875.2666 8539.6035 V
+-7875.4912 8540.3828 -7876.335 8540.7695 V
+-7879.2695 8541.8613 -7879.3481 8543.208 V
+-7879.8999 8545.1152 -7877.6006 8545.7422 V
+-7875.6792 8546.2568 -7873.7886 8543.8945 V
+-7872.6113 8542.6797 -7869.5762 8541.9395 V
+-7869.5728 8541.9531 L
+-7866.3594 8541.0459 -7864.6392 8541.5889 Y
+-7861.8521 8542.7676 -7860.4063 8541.4014 Y
+-7858.6826 8539.7559 -7860.0762 8538.3408 Y
+f-7873.9834 8521.8789 m
+-7874.5854 8520.2002 -7874.2822 8518.4775 -7873.0327 8517.9229 c
+-7871.7842 8517.3672 -7870.3384 8518.3164 -7869.4585 8519.8672 c
+-7869.3286 8520.0957 -7868.8359 8521.165 -7868.7632 8521.3906 C
+-7868.7065 8521.4785 -7868.6792 8521.5684 -7868.6362 8521.667 c
+-7868.1289 8522.8086 -7868.5122 8524.5303 -7869.8105 8525.1074 c
+-7871.1089 8525.6855 -7872.6279 8525.0527 -7873.1582 8523.7617 c
+-7873.1831 8523.7002 -7873.5078 8522.9883 -7873.5298 8522.9268 C
+-7873.6831 8522.6963 -7873.8809 8522.166 -7873.9834 8521.8789 c
+f-7859.7129 8524.9316 m
+-7855.1802 8531.7822 -7860.3911 8533.6943 v
+-7863.6714 8534.2168 -7864.103 8531.1572 v
+-7864.5786 8529.8564 -7863.29 8527.7354 v
+-7863.0903 8527.3447 -7863.0938 8526.04 v
+-7863.4858 8524.5449 -7862.4082 8523.6182 v
+-7861.0591 8522.8359 -7859.7129 8524.9316 v
+fUu-7834.7358 8574.1074 m
+-7834.3687 8572.3623 -7834.9048 8570.6963 -7836.2183 8570.3164 c
+-7837.5322 8569.9375 -7838.8345 8571.0752 -7839.4937 8572.7324 c
+-7839.5903 8572.9775 -7839.9326 8574.1025 -7839.9746 8574.3369 C
+-7840.0176 8574.4326 -7840.0322 8574.5244 -7840.0625 8574.6279 c
+-7840.4087 8575.8271 -7839.7935 8577.4805 -7838.4282 8577.875 c
+-7837.063 8578.2695 -7835.645 8577.4365 -7835.2969 8576.085 c
+-7835.2793 8576.0205 -7835.0552 8575.2705 -7835.0425 8575.207 C
+-7834.9214 8574.9551 -7834.7983 8574.4053 -7834.7358 8574.1074 c
+f-7848.2705 8578.6172 m
+-7851.8242 8586.0244 -7846.3999 8587.2061 v
+-7843.0801 8587.2754 -7843.0688 8584.1846 v
+-7842.7778 8582.8311 -7844.3433 8580.9072 v
+-7844.5942 8580.5459 -7844.7695 8579.2539 v
+-7844.5854 8577.7188 -7845.7793 8576.9492 v
+-7847.2222 8576.3594 -7848.2705 8578.6172 v
+f-7827.4648 8595.7695 m
+F-7826.063 8593.9912 m
+-7826.3247 8592.6689 -7829.3799 8591.9883 Y
+-7830.27 8591.7197 -7830.5986 8590.9795 Y
+-7831.4922 8586.3535 -7834.7666 8585.9746 -7835.1494 8585.9453 C
+-7835.1494 8585.9395 L
+-7838.7271 8585.2588 -7840.731 8589.8467 V
+-7841.2153 8590.4961 -7842.1416 8590.5625 V
+-7845.272 8590.5557 -7845.8169 8591.7891 V
+-7847.0039 8593.3809 -7845.0713 8594.7764 V
+-7843.4526 8595.9316 -7840.853 8594.3818 V
+-7839.3242 8593.6582 -7836.2222 8594.0293 V
+-7836.2231 8594.042 L
+-7832.896 8594.3213 -7831.4766 8595.4326 Y
+-7829.2793 8597.5146 -7827.4463 8596.7432 Y
+-7825.2554 8595.8057 -7826.063 8593.9912 Y
+f-7832.8374 8574.2354 m
+-7832.813 8572.4512 -7831.9258 8570.9453 -7830.5601 8570.8633 c
+-7829.1943 8570.7803 -7828.1743 8572.1768 -7827.895 8573.9385 c
+-7827.854 8574.1973 -7827.7666 8575.3711 -7827.7778 8575.6094 C
+-7827.7559 8575.7109 -7827.7617 8575.8037 -7827.7559 8575.9121 c
+-7827.6807 8577.1592 -7828.644 8578.6367 -7830.0625 8578.7217 c
+-7831.4814 8578.8066 -7832.6826 8577.6826 -7832.7246 8576.2871 c
+-7832.7271 8576.2217 -7832.7822 8575.4404 -7832.7798 8575.375 C
+-7832.8433 8575.1045 -7832.8423 8574.54 -7832.8374 8574.2354 c
+f-7821.0186 8581.5625 m
+-7819.1777 8589.5684 -7824.7271 8589.5303 v
+-7827.9834 8588.8691 -7827.3154 8585.8516 v
+-7827.3032 8584.4668 -7825.353 8582.9326 v
+-7825.0278 8582.6377 -7824.5742 8581.415 v
+-7824.417 8579.876 -7823.083 8579.3877 v
+-7821.5454 8579.1279 -7821.0186 8581.5625 v
+fUU1 Ap
+-7894 8610 m
+-7894 8505 L
+-7813 8505 L
+-7813 8610 L
+-7894 8610 L
+nUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u0 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7895 8567.918 m
+-7895 8611 L
+-7808.2217 8611 L
+-7808.2217 8567.918 L
+-7895 8567.918 L
+nuu0 O
+0 0 0 1 k
+-7835.2217 8597.2363 m
+-7835.2217 8605.0742 L
+-7823.2217 8598.1445 L
+-7811.2217 8591.2168 L
+-7823.2217 8584.2891 L
+-7835.2217 8577.3613 L
+-7835.2217 8585.4824 L
+-7893.9351 8571.7168 L
+-7880.9878 8590.8027 L
+-7895 8611 L
+-7835.2217 8597.2363 L
+f0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7833.2217 8594.2363 m
+-7833.2217 8602.0742 L
+-7821.2217 8595.1445 L
+-7809.2217 8588.2168 L
+-7821.2217 8581.2891 L
+-7833.2217 8574.3613 L
+-7833.2217 8582.4824 L
+-7891.9351 8568.7168 L
+-7877.2754 8588.3594 L
+-7891.9351 8608 L
+-7833.2217 8594.2363 L
+bUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7736.3994 8611 m
+-7736.3994 8597.4199 L
+-7895 8597.4199 L
+-7895 8611 L
+-7736.3994 8611 L
+nuu0 O
+0.285 0.228 0.171 0 k
+-7751.0786 8609.4844 m
+-7751.043 8610.6895 L
+-7737.5103 8611.5176 -7736.8418 8610.2822 v
+-7736.7441 8610.1016 -7736.647 8609.7148 -7736.561 8609.1934 C
+-7738.584 8609.8242 -7748.291 8609.5713 -7751.0786 8609.4844 C
+f0.44 0.352 0.264 0 k
+-7751.4063 8598.0234 m
+-7751.3711 8599.2676 L
+-7748.4912 8599.0488 -7738.1914 8598.3164 -7736.543 8598.8652 C
+-7736.7031 8598.2188 -7736.9199 8597.7646 -7737.2046 8597.6152 c
+-7738.8306 8596.7656 -7751.4063 8598.0234 Y
+f0.145 0.116 0.087 0 k
+-7751.3711 8599.2676 m
+-7751.0786 8609.4844 L
+-7748.291 8609.5713 -7738.584 8609.8242 -7736.561 8609.1934 C
+-7736.1519 8606.7773 -7735.9258 8601.3604 -7736.543 8598.8652 C
+-7738.1914 8598.3164 -7748.4912 8599.0488 -7751.3711 8599.2676 C
+fUu0.155 0.124 0.093 0 k
+-7776.9375 8603.2734 m
+-7775.897 8603.6563 L
+-7757.0728 8599.1465 L
+-7757.481 8598.3145 L
+-7776.3633 8600.7246 L
+-7777.252 8601.0059 L
+-7777.6504 8600.8936 -7778.1934 8600.8242 V
+-7777.6094 8601.2373 -7777.1426 8602.1406 -7776.9375 8603.2734 C
+fu0.085 0.068 0.051 0 k
+-7781.7993 8607.666 m
+-7782.5977 8607.7217 -7779.749 8607.6641 Y
+-7780.3481 8607.0176 -7780.771 8605.8203 -7780.8105 8604.4375 c
+-7780.8169 8604.2246 -7780.8105 8604.0176 -7780.7993 8603.8135 C
+-7781.041 8603.707 -7781.0918 8603.7734 -7781.6289 8603.5645 C
+-7781 8607.6113 -7781.7993 8607.666 v
+f0.305 0.244 0.183 0 k
+-7780.3442 8600.8672 m
+-7780.5527 8600.8105 -7780.4937 8602.9307 Y
+-7779.4785 8603.7588 L
+-7777.8359 8602.9434 L
+-7776.9375 8603.2734 L
+-7777.1426 8602.1406 -7777.6094 8601.2373 -7778.1934 8600.8242 C
+-7778.6094 8600.7715 -7779.874 8600.7998 -7780.3442 8600.8672 C
+fU0.115 0.092 0.069 0 k
+-7776.9375 8603.2734 m
+-7777.8359 8602.9434 L
+-7779.4785 8603.7588 L
+-7780.4937 8602.9307 L
+-7780.793 8603.708 -7780.7993 8603.8135 V
+-7779.5137 8604.3789 -7778.1831 8604.7402 -7776.8398 8604.9258 C
+-7776.79 8604.7275 -7776.7842 8604.543 -7776.79 8604.3369 c
+-7776.7998 8603.9717 -7776.8218 8603.6182 -7776.9375 8603.2734 C
+f0.41 0.328 0.246 0 k
+-7757.4512 8599.3965 m
+-7759.377 8600.6426 -7768.3862 8606.0986 -7776.8398 8604.9258 C
+-7776.9038 8606.0928 -7777.248 8607.0908 -7777.75 8607.6631 C
+-7777.1895 8607.6621 L
+-7756.7402 8610.7559 L
+-7757.0366 8600.4258 L
+-7757.0728 8599.1465 L
+-7757.2046 8599.2373 -7757.4512 8599.3965 v
+f0.395 0.316 0.237 0 k
+-7780.8105 8604.4375 m
+-7780.771 8605.8203 -7780.3481 8607.0176 -7779.749 8607.6641 C
+-7777.6807 8607.6631 L
+-7777.1782 8607.0908 -7776.8218 8606.0713 -7776.8398 8604.9258 C
+-7778.1831 8604.7402 -7779.5137 8604.3789 -7780.7993 8603.8135 C
+-7780.8105 8604.0176 -7780.8169 8604.2246 -7780.8105 8604.4375 c
+fUu0 0 0 0.11 k
+-7751.2642 8598.2012 m
+-7750.2407 8598.0352 L
+-7751.2642 8598.2012 L
+-7751.2642 8598.2012 L
+f0 0 0 0.34 k
+-7757.481 8598.3145 m
+-7757.0728 8599.1465 L
+-7755.6714 8598.918 L
+-7754.5234 8598.7314 L
+-7752.6758 8598.4307 L
+-7751.2642 8598.2012 L
+-7750.2407 8598.0352 L
+-7750.2954 8597.7168 -7750.3672 8597.498 -7750.4648 8597.4199 C
+-7757.481 8598.3145 L
+f0 0 0 0.32 k
+-7755.8042 8603.207 m
+-7756.041 8610.8613 L
+-7750.7144 8611 L
+-7749.7266 8607.5146 -7750.1816 8603.1543 V
+-7755.8042 8603.207 L
+fU0.025 0.02 0.015 0 k
+-7749.3223 8600.3848 m
+-7746.373 8600.9199 -7743.2402 8601.1602 -7740.3159 8600.3613 c
+-7740.2856 8600.3496 -7740.2754 8600.3184 -7740.2871 8600.2969 c
+-7740.2881 8600.2656 -7740.3198 8600.2559 -7740.3418 8600.2559 c
+-7743.2422 8601.0645 -7746.375 8600.8242 -7749.3042 8600.2783 c
+-7749.3262 8600.2793 -7749.3574 8600.291 -7749.3672 8600.3223 c
+-7749.3662 8600.3438 -7749.355 8600.375 -7749.3223 8600.3848 c
+-7749.3223 8600.3848 l
+f-7747.8374 8599.3076 m
+-7747.7295 8599.3789 -7747.6313 8599.4941 -7747.5234 8599.502 c
+-7743.7886 8599.832 -7740.1631 8599.7813 -7736.4746 8599.6641 c
+-7736.4526 8599.6641 -7736.4209 8599.6426 -7736.4214 8599.6211 c
+-7736.4214 8599.5879 -7736.4551 8599.5684 -7736.4766 8599.5684 c
+-7739.3223 8599.6816 -7742.1401 8599.6992 -7745.0039 8599.5352 c
+-7745.9336 8599.4766 -7746.9082 8599.7402 -7747.7778 8599.2207 c
+-7747.7993 8599.2109 -7747.8306 8599.2109 -7747.8506 8599.2334 c
+-7747.8618 8599.2559 -7747.8594 8599.2871 -7747.8374 8599.3076 c
+-7747.8374 8599.3076 l
+f-7743.373 8601.3672 m
+-7741.5098 8602.6797 -7739.3022 8603.374 -7737.1001 8603.8867 c
+-7737.0679 8603.8965 -7737.0474 8603.8848 -7737.0366 8603.8535 c
+-7737.0273 8603.8203 -7737.0488 8603.8008 -7737.0703 8603.79 c
+-7739.2617 8603.2656 -7741.459 8602.6035 -7743.3105 8601.2803 c
+-7743.3433 8601.2598 -7743.375 8601.2715 -7743.3848 8601.293 c
+-7743.4058 8601.3145 -7743.3945 8601.3457 -7743.373 8601.3672 c
+-7743.373 8601.3672 l
+f-7748.9321 8608.0566 m
+-7746.7295 8608.5703 -7744.5298 8609.0303 -7742.2798 8609.2754 c
+-7742.2598 8609.2852 -7742.229 8609.2637 -7742.229 8609.2422 c
+-7742.2183 8609.209 -7742.2407 8609.1777 -7742.2729 8609.1787 c
+-7744.5122 8608.8809 -7746.7305 8608.5176 -7748.9126 8607.9502 c
+-7748.9351 8607.9512 -7748.9673 8607.9629 -7748.9766 8607.9941 c
+-7748.9751 8608.0156 -7748.9648 8608.0479 -7748.9321 8608.0566 c
+-7748.9321 8608.0566 l
+f-7748.439 8607.3604 m
+-7746.3457 8608.1973 -7744.1016 8607.9297 -7741.9023 8607.9629 c
+-7741.8706 8607.9609 -7741.8496 8607.9395 -7741.8506 8607.9082 c
+-7741.8521 8607.875 -7741.873 8607.8555 -7741.8945 8607.8555 c
+-7744.0928 8607.8438 -7746.3374 8608.0996 -7748.4209 8607.2529 c
+-7748.4434 8607.2539 -7748.4746 8607.2656 -7748.4834 8607.2969 c
+-7748.4834 8607.3184 -7748.4722 8607.3506 -7748.439 8607.3604 c
+-7748.439 8607.3604 l
+f-7747.707 8608.7051 m
+-7746.3833 8608.752 -7745.1504 8608.5469 -7743.8271 8608.209 c
+-7743.3594 8608.0996 -7742.9199 8608.2266 -7742.4609 8608.2129 c
+-7741.897 8608.1973 l
+-7741.874 8608.1963 -7741.8633 8608.1855 -7741.8535 8608.1738 c
+-7741.834 8608.1523 -7741.8442 8608.1211 -7741.8662 8608.0996 c
+-7742.0625 8607.9453 l
+-7742.0742 8607.9453 -7742.085 8607.9355 -7742.0962 8607.9355 c
+-7742.5 8607.9473 l
+-7743.9551 8608.1914 -7745.457 8608.6719 -7746.8926 8608.0742 c
+-7746.9258 8608.0645 -7746.957 8608.0859 -7746.9673 8608.1074 c
+-7746.9673 8608.1396 -7746.9551 8608.1602 -7746.9336 8608.1709 c
+-7745.647 8608.6992 -7744.1714 8608.4756 -7742.8818 8608.0547 c
+-7742.0918 8608.043 L
+-7742.124 8608.0332 L
+-7741.9282 8608.1875 L
+-7741.8984 8608.0898 L
+-7742.4639 8608.1064 l
+-7742.9321 8608.1406 -7743.3848 8607.9834 -7743.8398 8608.1035 c
+-7745.1543 8608.4609 -7746.3975 8608.625 -7747.71 8608.5986 c
+-7747.7422 8608.5996 -7747.7642 8608.6211 -7747.7617 8608.6533 c
+-7747.7617 8608.6855 -7747.7402 8608.7061 -7747.707 8608.7051 c
+-7747.707 8608.7051 l
+f-7748.5718 8609.0605 m
+-7745.8711 8610.2207 -7742.9023 8609.5703 -7740.1279 8609.1816 c
+-7739.7832 8609.2891 l
+-7739.7617 8609.2988 -7739.7417 8609.2871 -7739.7207 8609.2656 c
+-7739.71 8609.2441 -7739.7217 8609.2129 -7739.7422 8609.2021 c
+-7740.0801 8609.0098 l
+-7742.7754 8608.3926 -7745.5391 8608.7813 -7748.271 8608.7852 c
+-7748.3022 8608.7871 -7748.3232 8608.8086 -7748.3223 8608.8398 c
+-7748.3198 8608.8721 -7748.2983 8608.8926 -7748.2681 8608.8926 c
+-7745.6738 8608.9355 -7743.0303 8608.4434 -7740.4727 8609.0742 c
+-7739.7954 8609.2891 L
+-7739.7534 8609.1914 L
+-7740.1406 8609.0859 l
+-7742.9058 8609.4424 -7745.8418 8610.1348 -7748.5313 8608.9746 c
+-7748.5537 8608.9648 -7748.585 8608.9648 -7748.5962 8608.998 c
+-7748.6055 8609.0195 -7748.605 8609.0508 -7748.5718 8609.0605 c
+-7748.5718 8609.0605 l
+f-7745.6895 8602.3945 m
+-7744.3945 8602.9004 -7742.9834 8602.6465 -7741.6802 8602.3438 c
+-7741.647 8602.3418 -7741.6367 8602.3203 -7741.6382 8602.2891 c
+-7741.6504 8602.2568 -7741.6714 8602.2461 -7741.7031 8602.248 c
+-7742.998 8602.5303 -7744.377 8602.8154 -7745.6504 8602.2969 c
+-7745.6826 8602.2871 -7745.7144 8602.2988 -7745.7246 8602.3311 c
+-7745.7222 8602.3525 -7745.7114 8602.3848 -7745.6895 8602.3945 c
+-7745.6895 8602.3945 l
+f-7746.1401 8604.2207 m
+-7744.2266 8604.6895 -7742.3145 8605.1035 -7740.355 8605.3242 c
+-7740.3242 8605.334 -7740.3022 8605.3125 -7740.293 8605.2803 c
+-7740.2954 8605.2598 -7740.3159 8605.2285 -7740.3374 8605.2285 c
+-7742.2959 8605.0078 -7744.209 8604.582 -7746.1206 8604.1133 c
+-7746.1426 8604.1152 -7746.1738 8604.126 -7746.1831 8604.1582 c
+-7746.1831 8604.1797 -7746.1719 8604.2109 -7746.1401 8604.2207 c
+-7746.1401 8604.2207 l
+f-7746.9336 8606.6348 m
+-7744.499 8607.4609 -7741.8647 8607.0547 -7739.3457 8607.0879 c
+-7739.313 8607.0879 -7739.293 8607.0664 -7739.293 8607.0332 c
+-7739.2954 8607.0117 -7739.3159 8606.9922 -7739.3481 8606.9922 c
+-7741.8574 8606.916 -7744.481 8607.3848 -7746.8945 8606.5264 c
+-7746.9282 8606.5273 -7746.959 8606.5391 -7746.9688 8606.5605 c
+-7746.9678 8606.5918 -7746.9561 8606.624 -7746.9336 8606.6348 c
+-7746.9336 8606.6348 l
+f-7742.0542 8607.8496 m
+-7740.6582 8608.5449 -7739.0503 8608.4033 -7737.5342 8608.4668 c
+-7737.502 8608.4648 -7737.4824 8608.4434 -7737.4824 8608.4121 c
+-7737.4834 8608.3906 -7737.5054 8608.3594 -7737.5366 8608.3594 c
+-7739.0137 8608.2207 -7740.6489 8608.5234 -7742.0039 8607.7617 c
+-7742.0366 8607.7529 -7742.0679 8607.7637 -7742.0786 8607.7861 c
+-7742.0879 8607.8076 -7742.0767 8607.8398 -7742.0542 8607.8496 c
+-7742.0542 8607.8496 l
+f-7741.3418 8604.4248 m
+-7740.3926 8604.3975 -7739.4336 8604.3701 -7738.4839 8604.3428 c
+-7738.4526 8604.3418 -7738.4312 8604.3203 -7738.4336 8604.2881 c
+-7738.4336 8604.2559 -7738.4551 8604.2354 -7738.4878 8604.2363 c
+-7739.437 8604.2637 -7740.397 8604.291 -7741.3457 8604.3184 c
+-7741.377 8604.3184 -7741.3975 8604.3418 -7741.3975 8604.373 c
+-7741.397 8604.4043 -7741.374 8604.4258 -7741.3418 8604.4248 c
+-7741.3418 8604.4248 l
+f-7739.1592 8602.0361 m
+-7738.6895 8602.0645 -7738.209 8602.0723 -7737.7383 8602.0918 c
+-7737.7168 8602.0908 -7737.6855 8602.0684 -7737.6865 8602.0371 c
+-7737.687 8602.0039 -7737.71 8601.9844 -7737.7417 8601.9844 c
+-7738.2114 8601.9873 -7738.6816 8601.9375 -7739.1514 8601.9395 c
+-7739.1831 8601.9297 -7739.2031 8601.9512 -7739.2134 8601.9844 c
+-7739.2129 8602.0156 -7739.1914 8602.0371 -7739.1592 8602.0361 c
+-7739.1592 8602.0361 l
+f-7746.9702 8604.2344 m
+-7746.5688 8604.5107 -7746.125 8604.6797 -7745.645 8604.751 c
+-7745.6113 8604.7607 -7745.5918 8604.7383 -7745.5806 8604.7168 c
+-7745.5703 8604.6855 -7745.5928 8604.6543 -7745.6152 8604.6543 c
+-7746.0854 8604.5723 -7746.5176 8604.4023 -7746.9209 8604.1475 c
+-7746.9521 8604.1377 -7746.9849 8604.1387 -7746.9946 8604.1709 c
+-7747.0039 8604.1934 -7746.9922 8604.2246 -7746.9702 8604.2344 c
+-7746.9702 8604.2344 l
+f-7748.1904 8610.085 m
+-7745.7344 8610.5273 -7743.2983 8611.001 -7740.7993 8610.7266 c
+-7740.7778 8610.7266 -7740.7568 8610.7041 -7740.7578 8610.6719 c
+-7740.7578 8610.6406 -7740.7798 8610.6191 -7740.8022 8610.6191 c
+-7743.291 8610.873 -7745.7344 8610.4844 -7748.1719 8609.9775 c
+-7748.1934 8609.9785 -7748.2256 8609.9902 -7748.2344 8610.0215 c
+-7748.2344 8610.043 -7748.2222 8610.0752 -7748.1904 8610.085 c
+-7748.1904 8610.085 l
+f0.195 0.156 0.117 0 k
+-7748.166 8598.6445 m
+-7745.7969 8598.2676 -7743.4058 8598.3477 -7741.0298 8598.5898 c
+-7740.998 8598.5879 -7740.9766 8598.5664 -7740.9766 8598.5352 c
+-7740.9785 8598.5137 -7741 8598.4824 -7741.0215 8598.4824 c
+-7743.4082 8598.2422 -7745.791 8598.1602 -7748.1694 8598.5391 c
+-7748.2026 8598.5391 -7748.2222 8598.5605 -7748.2217 8598.5938 c
+-7748.2207 8598.625 -7748.1992 8598.6465 -7748.166 8598.6445 c
+-7748.166 8598.6445 l
+f0.335 0.268 0.201 0 k
+-7747.4351 8598.1113 m
+-7744.9282 8598.1152 -7742.4146 8598.2773 -7739.918 8597.8965 c
+-7739.8862 8597.8945 -7739.8647 8597.873 -7739.8662 8597.8418 c
+-7739.8672 8597.8086 -7739.8896 8597.7891 -7739.9209 8597.7891 c
+-7742.418 8598.1699 -7744.9297 8598.0293 -7747.4375 8598.0059 c
+-7747.46 8598.0059 -7747.481 8598.0273 -7747.4785 8598.0596 c
+-7747.4785 8598.0918 -7747.457 8598.1123 -7747.4351 8598.1113 c
+-7747.4351 8598.1113 l
+f0.205 0.164 0.123 0 k
+-7748.9766 8598.3262 m
+-7747.5039 8598.668 -7746.0078 8598.4023 -7744.5391 8598.2207 c
+-7744.5078 8598.2207 -7744.4873 8598.1973 -7744.499 8598.166 c
+-7744.5 8598.1348 -7744.5215 8598.1133 -7744.5537 8598.125 c
+-7746.0103 8598.2842 -7747.4961 8598.583 -7748.9473 8598.2188 c
+-7748.9785 8598.2207 -7749.0103 8598.2324 -7749.0098 8598.2637 c
+-7749.019 8598.2852 -7748.998 8598.3164 -7748.9766 8598.3262 c
+-7748.9766 8598.3262 l
+f-7742.3535 8597.7949 m
+-7741.1978 8597.9219 -7740.0273 8597.8145 -7738.8926 8597.5898 c
+-7738.8711 8597.5781 -7738.8506 8597.5566 -7738.8618 8597.5244 c
+-7738.8623 8597.5029 -7738.8945 8597.4824 -7738.916 8597.4941 c
+-7740.0503 8597.7402 -7741.1914 8597.7939 -7742.3462 8597.6885 c
+-7742.3794 8597.6895 -7742.3984 8597.7109 -7742.4087 8597.7324 c
+-7742.4082 8597.7646 -7742.3862 8597.7852 -7742.3535 8597.7949 c
+-7742.3535 8597.7949 l
+f0.335 0.268 0.201 0 k
+-7749.2681 8600.4473 m
+-7747.9214 8601.1885 -7746.3066 8600.5977 -7744.855 8600.6416 c
+-7744.8223 8600.6406 -7744.8022 8600.6191 -7744.8022 8600.5859 c
+-7744.8042 8600.5654 -7744.8262 8600.5449 -7744.8574 8600.5449 c
+-7746.2886 8600.4902 -7747.8823 8601.0801 -7749.2168 8600.3506 c
+-7749.2383 8600.3398 -7749.2695 8600.3516 -7749.291 8600.374 c
+-7749.3008 8600.3955 -7749.2886 8600.4277 -7749.2681 8600.4473 c
+-7749.2681 8600.4473 l
+f-7747.8945 8602.5645 m
+-7745.6719 8603.0449 -7743.3896 8602.6162 -7741.1504 8602.5625 c
+-7741.1177 8602.5615 -7741.0977 8602.5391 -7741.0977 8602.5078 c
+-7741.1001 8602.4863 -7741.1318 8602.4668 -7741.1519 8602.4668 c
+-7743.3833 8602.4775 -7745.6519 8602.9805 -7747.875 8602.457 c
+-7747.8975 8602.457 -7747.9287 8602.4688 -7747.9375 8602.502 c
+-7747.9375 8602.5225 -7747.9258 8602.5547 -7747.8945 8602.5645 c
+-7747.8945 8602.5645 l
+f-7742.0273 8599.1406 m
+-7740.3496 8599.9688 -7738.499 8600.502 -7736.603 8600.3613 c
+-7736.5718 8600.3613 -7736.5513 8600.3389 -7736.5527 8600.3066 c
+-7736.5527 8600.2754 -7736.5742 8600.2539 -7736.6074 8600.2559 c
+-7738.481 8600.416 -7740.3198 8599.8604 -7741.9873 8599.0547 c
+-7742.0078 8599.0449 -7742.041 8599.0449 -7742.0503 8599.0781 c
+-7742.061 8599.0996 -7742.061 8599.1309 -7742.0273 8599.1406 c
+-7742.0273 8599.1406 l
+fu0.5 0.85 1 0.45 k
+-7895 8605.9082 m
+-7895.0254 8606.4883 -7894.5664 8607.1875 -7893.167 8607.9902 C
+-7892.8521 8608.0029 -7891.3945 8608.0234 -7889.0889 8608.0488 C
+-7889.0889 8605.8223 L
+-7891.1382 8605.8457 -7893.1177 8605.8867 -7895 8605.9082 C
+f-7894.5088 8604.9688 m
+-7889.0889 8604.8447 L
+-7889.0889 8603.8145 L
+-7892.644 8603.959 L
+-7893.8145 8604.3301 -7894.5088 8604.9688 V
+f0.5 0.85 1 0.32 k
+-7889.0889 8604.8252 m
+-7894.4746 8604.9434 L
+-7894.7695 8605.2148 -7894.9849 8605.5566 -7895 8605.9277 C
+-7893.1177 8605.9063 -7891.1382 8605.8848 -7889.0889 8605.8613 C
+-7889.0889 8604.8252 L
+f0.5 0.85 1 0.45 k
+-7784.1504 8604.6172 m
+-7862.3584 8605.541 -7889.1079 8605.8418 V
+-7889.1079 8608.0488 L
+-7872.8145 8608.2324 -7813.9902 8608.707 Y
+-7779.749 8607.6641 L
+-7780.457 8604.5684 L
+-7784.1504 8604.6172 L
+f0.5 0.85 1 0.12 k
+-7889.1079 8603.8145 m
+-7889.1079 8604.8447 L
+-7780.4258 8603 L
+-7780.3833 8600.8633 L
+-7813.6553 8600.7129 L
+-7889.1079 8603.8145 L
+fu0.065 0.052 0.039 0 k
+-7757.0728 8599.1465 m
+-7757.0366 8600.4258 L
+-7757.2954 8599.1172 L
+-7775.897 8603.6563 L
+-7776.9375 8603.2734 L
+-7776.8794 8603.6055 -7776.8398 8603.957 -7776.8306 8604.3223 c
+-7776.8242 8604.5283 -7776.8281 8604.7285 -7776.8398 8604.9258 C
+-7768.3862 8606.0986 -7758.9634 8601.6719 -7757.0366 8600.4258 C
+-7756.7402 8610.7559 L
+-7756.041 8610.8613 L
+-7755.8042 8603.207 L
+-7750.1816 8603.1543 L
+-7750.0898 8601.0137 -7750.0718 8599.0215 -7750.2407 8598.0352 C
+-7757.0728 8599.1465 L
+f0.4 0.7 1 0 k
+-7780.457 8604.5879 m
+-7780.4258 8602.9805 L
+-7889.1079 8604.8252 L
+-7889.1079 8605.8613 L
+-7862.3584 8605.5605 -7780.457 8604.5879 Y
+fUU0.025 0.02 0.015 0 k
+-7744.7344 8607.0293 m
+-7744.7344 8607.0625 -7744.7129 8607.082 -7744.6802 8607.082 c
+-7741.6714 8607.1133 -7739.4214 8606.9453 -7736.415 8606.8594 C
+-7736.4087 8606.7656 L
+-7739.3262 8606.8701 -7741.7607 8607.0078 -7744.6841 8606.9746 C
+-7744.7168 8606.9766 -7744.7358 8606.998 -7744.7344 8607.0293 C
+f-7736.3994 8606.7656 m
+-7736.4082 8606.7441 L
+-7736.4087 8606.7656 L
+-7736.4063 8606.7656 -7736.4033 8606.7656 -7736.3994 8606.7656 C
+f-7740.4487 8605.4238 m
+-7741.4458 8605.292 -7742.3394 8605.7656 -7743.2114 8606.1973 C
+-7743.2441 8606.208 -7743.2534 8606.2402 -7743.2422 8606.2715 C
+-7743.2305 8606.293 -7743.1982 8606.3027 -7743.1777 8606.291 c
+-7742.3262 8605.8301 -7741.4312 8605.4199 -7740.4678 8605.5195 c
+-7739.1079 8605.6621 -7737.9038 8606.375 -7736.5254 8606.4531 C
+-7736.4463 8606.3594 L
+-7738.04 8606.2656 -7738.8647 8605.623 -7740.4487 8605.4238 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894 8610 m
+-7766.877 8610 L
+-7766.877 8562.415 L
+-7894 8562.415 L
+-7894 8610 L
+nu*u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7867.793 8594.417 m
+-7867.8232 8594.2676 L
+-7869.9849 8588.3643 -7870.9438 8585.6377 -7871.2754 8584.2891 c
+-7871.3657 8584.2891 L
+-7871.6953 8585.6074 -7872.7754 8588.335 -7874.9673 8594.2676 c
+-7874.9966 8594.417 L
+-7867.793 8594.417 l
+f1 D
+-7878.1182 8602.9678 m
+-7879.6191 8606.5371 -7880.3994 8608.709 -7878.1182 8608.917 c
+-7878.1182 8609.9678 L
+-7880.6992 8609.9375 -7883.5806 8609.917 -7886.3418 8609.917 c
+-7890.0649 8609.917 -7892.5273 8609.9375 -7894 8609.9678 c
+-7894 8608.917 L
+-7892.1064 8608.709 -7891.0542 8606.5674 -7883.5513 8589.5029 c
+-7871.6953 8562.415 L
+-7869.8638 8562.415 L
+-7858.1582 8589.5029 L
+-7850.8047 8606.5078 -7849.7246 8608.709 -7847.8887 8608.917 c
+-7847.8887 8609.9678 L
+-7849.5142 8609.9375 -7851.916 8609.917 -7855.5767 8609.917 c
+-7858.5488 8609.917 -7861.6694 8609.9375 -7864.7026 8609.9678 c
+-7864.7026 8608.917 L
+-7862.481 8608.709 -7863.3218 8606.5078 -7864.7617 8602.9678 C
+-7878.1182 8602.9678 l
+f*U
+*u
+0 D
+-7823.0762 8578.0811 m
+-7823.0762 8574.4717 -7825.3535 8572.0947 -7829.1294 8572.0947 c
+-7830.2383 8572.0947 -7831.0767 8572.2158 -7831.5273 8572.2451 c
+-7831.5273 8584.5479 L
+-7830.8672 8584.6084 -7830.208 8584.6084 -7829.729 8584.6084 c
+-7828.2002 8584.6084 -7826.7026 8584.127 -7825.6841 8583.4053 c
+-7824.3945 8582.5332 -7823.0762 8580.7881 -7823.0762 8578.1416 C
+-7823.0762 8578.0811 l
+f1 D
+-7842.0806 8582.3926 m
+-7842.0806 8566.6445 -7842.0806 8564.4287 -7844.542 8564.2783 c
+-7844.542 8563.3184 L
+-7843.042 8563.2588 -7840.3174 8563.1992 -7837.5664 8563.1689 c
+-7835.6538 8563.1084 -7832.3945 8563.0186 -7830.1479 8562.9775 c
+-7826.582 8562.9775 -7823.585 8563.4258 -7821.0049 8564.2627 c
+-7816.353 8565.8477 -7811.9702 8569.8525 -7811.9702 8577.6602 c
+-7811.9702 8582.7432 -7814.4014 8586.3193 -7816.5034 8588.0605 c
+-7817.583 8589.0215 -7818.8135 8589.832 -7819.7744 8590.3125 c
+-7819.7744 8590.4629 L
+-7817.5234 8593.4912 -7815.6025 8596.0625 -7809.3906 8604.6426 c
+-7807.5 8607.0645 -7805.9102 8608.7383 -7804.7402 8608.9775 c
+-7804.7402 8610 L
+-7806.6602 8610 -7809 8609.8848 -7811.1294 8609.8848 c
+-7813.3511 8609.8848 -7814.8521 8610 -7816.4424 8610 c
+-7817.6729 8610 -7818.7241 8609.9404 -7819.5039 8609.2725 c
+-7823.0151 8603.8477 -7826.9121 8597.7559 -7830.1182 8592.7139 c
+-7830.5078 8592.7139 -7830.957 8592.7139 -7831.5273 8592.7139 c
+-7831.5273 8595.2852 L
+-7831.5273 8606.5264 -7831.437 8608.7686 -7829.1895 8608.9775 c
+-7829.1895 8609.9697 L
+-7830.6279 8609.9404 -7833.9194 8609.915 -7836.6992 8609.915 c
+-7839.9287 8609.915 -7842.8921 8609.9404 -7844.5122 8609.9697 c
+-7844.5122 8608.9775 L
+-7842.0518 8608.7686 -7842.0806 8606.5264 -7842.0806 8589.5918 C
+-7842.0806 8582.3926 l
+f*U
+*u
+0 D
+-7791.4561 8589.5928 m
+-7791.4561 8606.4941 -7791.4561 8608.6484 -7794.2832 8608.9775 C
+-7794.2832 8609.9697 l
+-7792.3887 8609.9404 -7789.0542 8609.915 -7785.7822 8609.915 c
+-7782.6294 8609.915 -7779.5688 8609.9404 -7777.2881 8609.9697 C
+-7777.2881 8608.9775 l
+-7780.2578 8608.9775 -7780.2881 8606.5244 -7780.2881 8589.5928 C
+-7780.2881 8572.1514 L
+-7772.8193 8572.1514 l
+-7769.999 8572.1514 -7768.5298 8572.96 -7767.8994 8575.2627 C
+-7766.9072 8575.2627 l
+-7766.9072 8570.4697 -7766.877 8566.415 -7766.877 8563.1709 c
+-7771.3486 8563.2012 -7776.748 8563.2314 -7782.0601 8563.2314 C
+-7789.7446 8563.2314 l
+-7794.5537 8563.2314 -7799.9966 8563.2012 -7804.9614 8563.1709 c
+-7804.9614 8566.3848 -7804.9326 8570.4697 -7804.9326 8575.2627 C
+-7803.9072 8575.2627 l
+-7803.3657 8573.1094 -7801.771 8572.1514 -7798.9438 8572.1514 C
+-7791.4561 8572.1514 l
+-7791.4561 8589.5928 L
+f*U
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u1 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7894.75 8587 m
+-7894.75 8611 L
+-7884.75 8611 L
+-7884.75 8587 L
+-7894.75 8587 L
+n0 Ap
+0 O
+1 g
+-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 c
+-7887.5879 8589.2256 -7889.3198 8589.9346 -7890.7559 8591.0176 c
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 c
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.2319 8602.5996 -7893.3457 8604.0918 c
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+-7884.75 8589 L
+f0 R
+0 G
+1 J 1 j 0.5 w-7884.75 8608.6816 m
+-7887.7793 8607.7256 -7890.6074 8606.0674 -7893.3457 8604.0918 C
+S-7884.75 8603.0488 m
+-7887.8999 8600.6436 -7890.957 8597.9131 -7894.0942 8595.4639 C
+S-7890.7559 8591.0176 m
+-7888.6904 8592.1084 -7886.7017 8593.4668 -7884.75 8594.957 C
+S-7885.6982 8589.0479 m
+-7885.3809 8589.1309 -7885.063 8589.2148 -7884.75 8589.3145 C
+S-7890.7559 8591.0176 m
+-7889.3193 8589.9355 -7887.5879 8589.2256 -7885.6982 8589.0479 C
+S-7894.0942 8595.4639 m
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.231 8602.5996 -7893.3457 8604.0918 C
+S-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 C
+S-7890.7559 8591.0176 m
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 C
+S-7893.3457 8604.0918 m
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+SU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8593.9043 m
+-7856.7305 8585.3408 L
+-7895 8585.3408 L
+-7895 8593.9043 L
+-7856.7305 8593.9043 L
+f-7856.7305 8597.0967 m
+-7856.7305 8596.4229 L
+-7895 8596.4229 L
+-7895 8597.0967 L
+-7856.7305 8597.0967 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8589.8262 m
+-7856.7305 8598.3896 L
+-7869.3408 8598.3896 L
+-7869.3408 8611 L
+-7877.9038 8611 L
+-7877.9063 8589.8262 L
+-7877.9038 8589.8262 L
+-7877.9038 8589.8252 L
+-7856.7305 8589.8262 L
+f-7856.7305 8587.3076 m
+-7880.4233 8587.3076 L
+-7880.4233 8611 L
+-7881.0967 8611 L
+-7881.0977 8586.6328 L
+-7856.7305 8586.6328 L
+-7856.7305 8587.3076 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7895 8610.999 m
+-7895 8572.7285 L
+-7856.7305 8572.7285 L
+-7856.7305 8610.999 L
+-7895 8610.999 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8585.3389 m
+-7882.3896 8585.3389 L
+-7882.3896 8610.999 L
+-7873.8262 8611 L
+-7873.8262 8593.9033 L
+-7856.7305 8593.9033 L
+-7856.7305 8585.3389 L
+f-7856.7305 8596.4219 m
+-7871.3081 8596.4219 L
+-7871.3081 8611 L
+-7870.6338 8611 L
+-7870.6338 8597.0957 L
+-7856.7305 8597.0957 L
+-7856.7305 8596.4219 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u1 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7867.0625 8583.4609 m
+-7894.6025 8583.4609 L
+-7894.6025 8611 L
+-7867.0625 8611 L
+-7867.0625 8583.4609 L
+n0 O
+0 0.55 1 0.12 k
+-7866.8418 8596.7002 m
+-7895 8596.7002 L
+-7895 8597.8252 L
+-7866.8418 8597.8252 L
+-7866.8418 8596.7002 L
+fu0 0.55 1 0.3 k
+-7893.9814 8584.5215 m
+-7894.4102 8586.5254 -7893.1865 8590.1514 -7890.0874 8593.251 c
+-7886.9878 8596.3496 -7883.3457 8597.6602 -7881.3594 8597.1455 C
+-7881.3594 8597.1455 L
+-7880.875 8595.1895 -7882.1519 8591.5117 -7885.25 8588.4141 c
+-7888.3457 8585.3184 -7892.0122 8584.1064 -7893.9814 8584.5215 C
+f0 0.39 0.7 0.12 k
+-7893.9814 8609.9912 m
+-7894.4102 8607.9883 -7893.1865 8604.3613 -7890.0874 8601.2617 c
+-7886.9878 8598.1641 -7883.3457 8596.8535 -7881.3594 8597.3672 C
+-7881.3594 8597.3672 L
+-7880.875 8599.3242 -7882.1519 8603.001 -7885.25 8606.0996 c
+-7888.3457 8609.1953 -7892.0122 8610.4063 -7893.9814 8609.9912 C
+fUu0 0.55 1 0.3 k
+-7880.1782 8609.9912 m
+-7880.6074 8607.9883 -7879.3838 8604.3613 -7876.2842 8601.2617 c
+-7873.1855 8598.1641 -7869.543 8596.8535 -7867.5576 8597.3672 C
+-7867.5566 8597.3672 L
+-7867.0718 8599.3242 -7868.3496 8603.001 -7871.4473 8606.0996 c
+-7874.543 8609.1953 -7878.209 8610.4063 -7880.1782 8609.9912 C
+f0 0.39 0.7 0.12 k
+-7880.1782 8584.5215 m
+-7880.6074 8586.5254 -7879.3838 8590.1514 -7876.2842 8593.251 c
+-7873.1855 8596.3496 -7869.543 8597.6602 -7867.5576 8597.1455 C
+-7867.5566 8597.1455 L
+-7867.0718 8595.1895 -7868.3496 8591.5117 -7871.4473 8588.4141 c
+-7874.543 8585.3184 -7878.209 8584.1064 -7880.1782 8584.5215 C
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u0 Ap
+0 J 0 j 1 w 4 M []0 d0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7867.4609 8583.4609 m
+-7895 8583.4609 L
+-7895 8611 L
+-7867.4609 8611 L
+-7867.4609 8583.4609 L
+n0 O
+0 0.55 1 0.3 k
+-7885.4233 8597.252 m
+-7884.3096 8595.5313 -7880.8809 8593.833 -7876.4966 8593.833 c
+-7872.1152 8593.833 -7868.6138 8595.4824 -7867.5718 8597.25 C
+-7867.5718 8597.25 L
+-7868.6138 8598.9766 -7872.1152 8600.6738 -7876.4966 8600.6738 c
+-7880.875 8600.6738 -7884.3242 8598.9375 -7885.4233 8597.252 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7893.9521 8608.3125 m
+-7786.7954 8608.3125 L
+-7786.7954 8594.1855 L
+-7893.9521 8594.1855 L
+-7893.9521 8608.3125 L
+nu0 O
+0 0 0 1 k
+-7892.2832 8607.623 m
+-7892.8535 8610 -7892.8184 8606.0039 V
+-7893.0479 8602.8027 L
+-7893.6167 8600.4551 L
+-7893.4502 8598.123 L
+-7891.9502 8597.4551 -7875.2832 8596.123 V
+-7868.6167 8594.7891 -7859.6167 8594.7891 V
+-7794.3936 8595.4766 -7789.4912 8596.8848 v
+-7830.3882 8594.875 -7832.9688 8595.5117 v
+-7793.8569 8597.1602 -7790.8545 8598.4316 v
+-7828.79 8596.5469 -7832.167 8598.1777 v
+-7797.249 8599.9102 -7793.021 8601.5313 v
+-7799.7217 8600.8828 -7801.5127 8601.082 v
+-7798.3896 8601.5703 l
+-7803.4194 8601.502 l
+-7806.3218 8601.1289 l
+-7798.4521 8602.2422 -7797.9033 8602.8086 v
+-7794.3154 8602.1309 -7808.5186 8602.3848 v
+-7842.1177 8598.4551 -7892.2832 8607.623 V
+f/BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w-7893.9502 8597.123 m
+-7873.667 8595.2949 -7853.9727 8594.2207 v
+-7811.1514 8594.502 -7806.5737 8594.9004 v
+-7794.1631 8595.0313 -7786.7959 8596.0273 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7831.8369 8594.4082 m
+-7835.2959 8594.0273 -7861.2607 8594.2793 Y
+-7871.627 8594.1602 -7893.9502 8597.123 Y
+S/BBAccumRotation (5.805971) XT
+-7830.9873 8597.6641 m
+-7800.3608 8598.582 -7793.6606 8599.2324 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7839.6201 8602.2051 m
+-7804.3706 8603.6172 -7801.4058 8604.1406 v
+S/BBAccumRotation (5.805971) XT
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u0 J 0 j 1 w 4 M []0 d0 XR
+-7894 8609.9355 m
+-7680.4009 8609.9355 L
+-7680.4009 8602.1348 L
+-7894 8602.1348 L
+-7894 8609.9355 L
+n0 O
+0 0 0 1 k
+-7894 8606.0352 m
+-7883.9858 8608.5273 -7877.187 8609.875 -7865.2007 8609.9355 c
+-7852.2183 8610 -7787.2002 8609.9355 y
+-7722.1816 8610 -7709.2002 8609.9355 v
+-7697.2129 8609.875 -7690.415 8608.5273 -7680.4009 8606.0352 C
+-7690.415 8603.543 -7697.2129 8602.1953 -7709.2002 8602.1348 c
+-7722.1816 8602.0693 -7787.2002 8602.1348 y
+-7852.2183 8602.0693 -7865.2007 8602.1348 v
+-7877.187 8602.1953 -7883.9858 8603.543 -7894 8606.0352 C
+fU%AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 / 1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 / 1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 0 k
+(C=0 M=0 Y=0 K=0) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+0 0.1 1 0 k
+(C=0 M=10 Y=100 K=0) Pc
+0 0.5 0 0 k
+(C=0 M=50 Y=0 K=0) Pc
+0 0.5 1 0 k
+(C=0 M=50 Y=100 K=0) Pc
+1 0.55 1 0 k
+(C=100 M=55 Y=100 K=0) Pc
+1 0.9 0.1 0 k
+(C=100 M=90 Y=10 K=0) Pc
+0.15 1 1 0 k
+(C=15 M=100 Y=100 K=0) Pc
+0.45 0.9 0 0 k
+(C=45 M=90 Y=0 K=0) Pc
+0.5 0.4 0.3 0 k
+(C=50 M=40 Y=30 K=0) Pc
+0.5 0.85 1 0 k
+(C=50 M=85 Y=100 K=0) Pc
+0.75 0.05 1 0 k
+(C=75 M=5 Y=100 K=0) Pc
+0.75 0.9 0 0 k
+(C=75 M=90 Y=0 K=0) Pc
+0.8 0.05 0 0 k
+(C=80 M=5 Y=0 K=0) Pc
+Bb
+2 (Black, White) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (Calligraphic Brush Tool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool.aip)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(Layer 1) Ln
+0 A
+1 Ap
+0 O
+0 0 0 0 k
+0 R
+0 0 0 1 K
+1 J 1 j 2.8346 w 4 M []0 d0 XR
+543.333 424 m
+-20.667 424 L
+-20.667 840 L
+543.333 840 L
+543.333 424 L
+bu0.9137 0.1922 0.0549 0.0039 k
+0 J 0 j 1 w369.334 626.5024 m
+369.334 623.3843 366.7832 620.833 363.6641 620.833 c
+155.0029 620.833 l
+151.8848 620.833 149.3335 623.3843 149.3335 626.5024 c
+149.3335 656.6636 l
+149.3335 659.7817 151.8848 662.333 155.0029 662.333 c
+363.6641 662.333 l
+366.7832 662.333 369.334 659.7817 369.334 656.6636 c
+369.334 626.5024 l
+f0 R
+0 0 0 1 K
+1 J 1 j 2 w369.334 626.5024 m
+369.334 623.3843 366.7832 620.833 363.6641 620.833 c
+155.0029 620.833 l
+151.8848 620.833 149.3335 623.3843 149.3335 626.5024 c
+149.3335 656.6636 l
+149.3335 659.7817 151.8848 662.333 155.0029 662.333 c
+363.6641 662.333 l
+366.7832 662.333 369.334 659.7817 369.334 656.6636 c
+369.334 626.5024 l
+sU0 O
+0.9137 0.1922 0.0549 0.0039 k
+2.8346 w408.4033 774.1328 m
+408.4033 760.6274 398.3584 749.5767 386.0811 749.5767 c
+137.7554 749.5767 l
+125.4785 749.5767 115.4336 760.6274 115.4336 774.1328 c
+115.4336 787.6392 125.4785 798.689 137.7554 798.689 c
+386.0811 798.689 l
+398.3584 798.689 408.4033 787.6392 408.4033 774.1328 c
+b400.4033 714.4658 m
+400.4033 706.2764 390.7012 699.5762 378.8428 699.5762 c
+138.9937 699.5762 l
+127.1357 699.5762 117.4336 706.2764 117.4336 714.4658 c
+117.4336 722.6558 127.1357 729.3555 138.9937 729.3555 c
+378.8428 729.3555 l
+390.7012 729.3555 400.4033 722.6558 400.4033 714.4658 c
+b504.4033 567.6328 m
+504.4033 550.5522 490.8271 536.5767 474.2334 536.5767 c
+138.603 536.5767 l
+122.0103 536.5767 108.4336 550.5522 108.4336 567.6328 c
+108.4336 584.7139 122.0103 598.689 138.603 598.689 c
+474.2334 598.689 l
+490.8271 598.689 504.4033 584.7139 504.4033 567.6328 c
+buu0 Ap
+185.4341 641.4258 m
+162.7573 641.4258 l
+159.6392 641.4258 157.0884 638.875 157.0884 635.7568 c
+157.0884 632.9219 l
+157.0884 629.8037 159.6392 627.2529 162.7573 627.2529 c
+185.4341 627.2529 L
+S0 0 0 0 K
+183.7334 643.126 m
+161.0566 643.126 l
+157.9385 643.126 155.3877 640.5752 155.3877 637.457 c
+155.3877 634.6221 l
+155.3877 631.5039 157.9385 628.9531 161.0566 628.9531 c
+183.7334 628.9531 L
+SUu0 0 0 1 K
+198.1899 641.4258 m
+195.0728 641.4258 192.521 638.875 192.521 635.7568 c
+192.521 632.9219 l
+192.521 629.8037 195.0728 627.2529 198.1899 627.2529 c
+215.1978 627.2529 l
+218.3169 627.2529 220.8677 629.8037 220.8677 632.9219 c
+220.8677 635.7568 l
+220.8677 638.875 218.3169 641.4258 215.1978 641.4258 c
+198.1899 641.4258 l
+s0 0 0 0 K
+196.4893 643.126 m
+193.3721 643.126 190.8203 640.5752 190.8203 637.457 c
+190.8203 634.6221 l
+190.8203 631.5039 193.3721 628.9531 196.4893 628.9531 c
+213.4971 628.9531 l
+216.6162 628.9531 219.167 631.5039 219.167 634.6221 c
+219.167 637.457 l
+219.167 640.5752 216.6162 643.126 213.4971 643.126 c
+196.4893 643.126 l
+sUu0 0 0 1 K
+269.0562 641.4258 m
+265.939 641.4258 263.3862 638.875 263.3862 635.7568 c
+263.3862 632.9219 l
+263.3862 629.8037 265.939 627.2529 269.0562 627.2529 c
+286.0659 627.2529 l
+289.1831 627.2529 291.7339 629.8037 291.7339 632.9219 c
+291.7339 635.7568 l
+291.7339 638.875 289.1831 641.4258 286.0659 641.4258 c
+269.0562 641.4258 l
+s0 0 0 0 K
+267.355 643.126 m
+264.2378 643.126 261.6851 640.5752 261.6851 637.457 c
+261.6851 634.6221 l
+261.6851 631.5039 264.2378 628.9531 267.355 628.9531 c
+284.3647 628.9531 l
+287.4819 628.9531 290.0327 631.5039 290.0327 634.6221 c
+290.0327 637.457 l
+290.0327 640.5752 287.4819 643.126 284.3647 643.126 c
+267.355 643.126 l
+sUu0 0 0 1 K
+304.4902 641.4258 m
+301.3711 641.4258 298.8203 638.875 298.8203 635.7568 c
+298.8203 632.9219 l
+298.8203 629.8037 301.3711 627.2529 304.4902 627.2529 c
+321.498 627.2529 l
+324.6152 627.2529 327.166 629.8037 327.166 632.9219 c
+327.166 635.7568 l
+327.166 638.875 324.6152 641.4258 321.498 641.4258 c
+304.4902 641.4258 l
+s0 0 0 0 K
+302.7891 643.126 m
+299.6699 643.126 297.1191 640.5752 297.1191 637.457 c
+297.1191 634.6221 l
+297.1191 631.5039 299.6699 628.9531 302.7891 628.9531 c
+319.7969 628.9531 l
+322.9141 628.9531 325.4648 631.5039 325.4648 634.6221 c
+325.4648 637.457 l
+325.4648 640.5752 322.9141 643.126 319.7969 643.126 c
+302.7891 643.126 l
+sUu0 0 0 1 K
+256.3003 641.4258 m
+233.6235 641.4258 l
+230.5063 641.4258 227.9546 638.875 227.9546 635.7568 c
+227.9546 632.9219 l
+227.9546 629.8037 230.5063 627.2529 233.6235 627.2529 c
+256.3003 627.2529 L
+S0 0 0 0 K
+254.5996 643.126 m
+231.9229 643.126 l
+228.8057 643.126 226.2539 640.5752 226.2539 637.457 c
+226.2539 634.6221 l
+226.2539 631.5039 228.8057 628.9531 231.9229 628.9531 c
+254.5996 628.9531 L
+SUu0 0 0 1 K
+361.1836 627.2529 m
+361.1836 635.7568 l
+361.1836 638.875 358.6328 641.4258 355.5137 641.4258 c
+334.2539 641.4258 L
+334.2539 627.2529 l
+S0 0 0 0 K
+359.4824 628.9531 m
+359.4824 637.457 l
+359.4824 640.5752 356.9316 643.126 353.8125 643.126 c
+332.5527 643.126 L
+332.5527 628.9531 l
+SUu1 Ap
+0 0 0 1 K
+284.6479 634.3398 m
+284.6479 634.3398 l
+284.6479 634.3398 l
+284.6479 634.3398 l
+284.6479 634.3398 l
+s0 0 0 0 K
+282.9468 636.04 m
+282.9468 636.04 l
+282.9468 636.04 l
+282.9468 636.04 l
+282.9468 636.04 l
+sUu0 0 0 1 K
+305.9063 634.3398 m
+305.9063 634.3398 l
+305.9063 634.3398 l
+305.9063 634.3398 l
+305.9063 634.3398 l
+s0 0 0 0 K
+304.2051 636.04 m
+304.2051 636.04 l
+304.2051 636.04 l
+304.2051 636.04 l
+304.2051 636.04 l
+sUu0 0 0 1 K
+213.7808 634.3398 m
+213.7808 634.3398 l
+213.7808 634.3398 l
+213.7808 634.3398 l
+213.7808 634.3398 l
+s0 0 0 0 K
+212.0801 636.04 m
+212.0801 636.04 l
+212.0801 636.04 l
+212.0801 636.04 l
+212.0801 636.04 l
+sUUuu0 Ap
+0 0 0 1 K
+185.6006 780.5928 m
+162.9238 780.5928 l
+159.8057 780.5928 157.2549 778.042 157.2549 774.9238 c
+157.2549 772.0889 l
+157.2549 768.9707 159.8057 766.4199 162.9238 766.4199 c
+185.6006 766.4199 L
+S0 0 0 0 K
+183.8999 782.293 m
+161.2231 782.293 l
+158.105 782.293 155.5542 779.7422 155.5542 776.624 c
+155.5542 773.7891 l
+155.5542 770.6709 158.105 768.1201 161.2231 768.1201 c
+183.8999 768.1201 L
+SUu0 0 0 1 K
+198.3564 780.5928 m
+195.2393 780.5928 192.6875 778.042 192.6875 774.9238 c
+192.6875 772.0889 l
+192.6875 768.9707 195.2393 766.4199 198.3564 766.4199 c
+215.3643 766.4199 l
+218.4834 766.4199 221.0342 768.9707 221.0342 772.0889 c
+221.0342 774.9238 l
+221.0342 778.042 218.4834 780.5928 215.3643 780.5928 c
+198.3564 780.5928 l
+s0 0 0 0 K
+196.6558 782.293 m
+193.5386 782.293 190.9868 779.7422 190.9868 776.624 c
+190.9868 773.7891 l
+190.9868 770.6709 193.5386 768.1201 196.6558 768.1201 c
+213.6636 768.1201 l
+216.7827 768.1201 219.3335 770.6709 219.3335 773.7891 c
+219.3335 776.624 l
+219.3335 779.7422 216.7827 782.293 213.6636 782.293 c
+196.6558 782.293 l
+sUu0 0 0 1 K
+269.2227 780.5928 m
+266.1055 780.5928 263.5527 778.042 263.5527 774.9238 c
+263.5527 772.0889 l
+263.5527 768.9707 266.1055 766.4199 269.2227 766.4199 c
+286.2324 766.4199 l
+289.3496 766.4199 291.9004 768.9707 291.9004 772.0889 c
+291.9004 774.9238 l
+291.9004 778.042 289.3496 780.5928 286.2324 780.5928 c
+269.2227 780.5928 l
+s0 0 0 0 K
+267.5215 782.293 m
+264.4043 782.293 261.8516 779.7422 261.8516 776.624 c
+261.8516 773.7891 l
+261.8516 770.6709 264.4043 768.1201 267.5215 768.1201 c
+284.5313 768.1201 l
+287.6484 768.1201 290.1992 770.6709 290.1992 773.7891 c
+290.1992 776.624 l
+290.1992 779.7422 287.6484 782.293 284.5313 782.293 c
+267.5215 782.293 l
+sUu0 0 0 1 K
+304.6563 780.5928 m
+301.5371 780.5928 298.9863 778.042 298.9863 774.9238 c
+298.9863 772.0889 l
+298.9863 768.9707 301.5371 766.4199 304.6563 766.4199 c
+321.6641 766.4199 l
+324.7813 766.4199 327.332 768.9707 327.332 772.0889 c
+327.332 774.9238 l
+327.332 778.042 324.7813 780.5928 321.6641 780.5928 c
+304.6563 780.5928 l
+s0 0 0 0 K
+302.9551 782.293 m
+299.8359 782.293 297.2852 779.7422 297.2852 776.624 c
+297.2852 773.7891 l
+297.2852 770.6709 299.8359 768.1201 302.9551 768.1201 c
+319.9629 768.1201 l
+323.0801 768.1201 325.6309 770.6709 325.6309 773.7891 c
+325.6309 776.624 l
+325.6309 779.7422 323.0801 782.293 319.9629 782.293 c
+302.9551 782.293 l
+sUu0 0 0 1 K
+256.4668 780.5928 m
+233.79 780.5928 l
+230.6729 780.5928 228.1211 778.042 228.1211 774.9238 c
+228.1211 772.0889 l
+228.1211 768.9707 230.6729 766.4199 233.79 766.4199 c
+256.4668 766.4199 L
+S0 0 0 0 K
+254.7661 782.293 m
+232.0894 782.293 l
+228.9722 782.293 226.4204 779.7422 226.4204 776.624 c
+226.4204 773.7891 l
+226.4204 770.6709 228.9722 768.1201 232.0894 768.1201 c
+254.7661 768.1201 L
+SUu0 0 0 1 K
+361.3496 766.4199 m
+361.3496 774.9238 l
+361.3496 778.042 358.7988 780.5928 355.6797 780.5928 c
+334.4199 780.5928 L
+334.4199 766.4199 l
+S0 0 0 0 K
+359.6484 768.1201 m
+359.6484 776.624 l
+359.6484 779.7422 357.0977 782.293 353.9785 782.293 c
+332.7188 782.293 L
+332.7188 768.1201 l
+SUu1 Ap
+0 0 0 1 K
+284.8145 773.5068 m
+284.8145 773.5068 l
+284.8145 773.5068 l
+284.8145 773.5068 l
+284.8145 773.5068 l
+s0 0 0 0 K
+283.1133 775.207 m
+283.1133 775.207 l
+283.1133 775.207 l
+283.1133 775.207 l
+283.1133 775.207 l
+sUu0 0 0 1 K
+306.0723 773.5068 m
+306.0723 773.5068 l
+306.0723 773.5068 l
+306.0723 773.5068 l
+306.0723 773.5068 l
+s0 0 0 0 K
+304.3711 775.207 m
+304.3711 775.207 l
+304.3711 775.207 l
+304.3711 775.207 l
+304.3711 775.207 l
+sUu0 0 0 1 K
+213.9473 773.5068 m
+213.9473 773.5068 l
+213.9473 773.5068 l
+213.9473 773.5068 l
+213.9473 773.5068 l
+s0 0 0 0 K
+212.2466 775.207 m
+212.2466 775.207 l
+212.2466 775.207 l
+212.2466 775.207 l
+212.2466 775.207 l
+sUUuu0 Ap
+0 0 0 1 K
+169.6499 720.5933 m
+141.9043 720.5933 l
+138.0894 720.5933 134.9683 718.043 134.9683 714.9243 c
+134.9683 712.0894 l
+134.9683 708.9707 138.0894 706.4204 141.9043 706.4204 c
+169.6499 706.4204 L
+S0 0 0 0 K
+167.5693 722.2935 m
+139.8237 722.2935 l
+136.0088 722.2935 132.8877 719.7432 132.8877 716.6245 c
+132.8877 713.7896 l
+132.8877 710.6714 136.0088 708.1206 139.8237 708.1206 c
+167.5693 708.1206 L
+SUu0 0 0 1 K
+185.2573 720.5933 m
+181.4434 720.5933 178.3213 718.043 178.3213 714.9243 c
+178.3213 712.0894 l
+178.3213 708.9707 181.4434 706.4204 185.2573 706.4204 c
+206.0669 706.4204 l
+209.8828 706.4204 213.0039 708.9707 213.0039 712.0894 c
+213.0039 714.9243 l
+213.0039 718.043 209.8828 720.5933 206.0669 720.5933 c
+185.2573 720.5933 l
+s0 0 0 0 K
+183.1763 722.2935 m
+179.3623 722.2935 176.2407 719.7432 176.2407 716.6245 c
+176.2407 713.7896 l
+176.2407 710.6714 179.3623 708.1206 183.1763 708.1206 c
+203.9858 708.1206 l
+207.8022 708.1206 210.9233 710.6714 210.9233 713.7896 c
+210.9233 716.6245 l
+210.9233 719.7432 207.8022 722.2935 203.9858 722.2935 c
+183.1763 722.2935 l
+sUu0 0 0 1 K
+271.9639 720.5933 m
+268.1499 720.5933 265.0269 718.043 265.0269 714.9243 c
+265.0269 712.0894 l
+265.0269 708.9707 268.1499 706.4204 271.9639 706.4204 c
+292.7754 706.4204 l
+296.5894 706.4204 299.7109 708.9707 299.7109 712.0894 c
+299.7109 714.9243 l
+299.7109 718.043 296.5894 720.5933 292.7754 720.5933 c
+271.9639 720.5933 l
+s0 0 0 0 K
+269.8828 722.2935 m
+266.0688 722.2935 262.9453 719.7432 262.9453 716.6245 c
+262.9453 713.7896 l
+262.9453 710.6714 266.0688 708.1206 269.8828 708.1206 c
+290.6943 708.1206 l
+294.5083 708.1206 297.6289 710.6714 297.6289 713.7896 c
+297.6289 716.6245 l
+297.6289 719.7432 294.5083 722.2935 290.6943 722.2935 c
+269.8828 722.2935 l
+sUu0 0 0 1 K
+315.3164 720.5933 m
+311.502 720.5933 308.3809 718.043 308.3809 714.9243 c
+308.3809 712.0894 l
+308.3809 708.9707 311.502 706.4204 315.3164 706.4204 c
+336.127 706.4204 l
+339.9395 706.4204 343.0625 708.9707 343.0625 712.0894 c
+343.0625 714.9243 l
+343.0625 718.043 339.9395 720.5933 336.127 720.5933 c
+315.3164 720.5933 l
+s0 0 0 0 K
+313.2363 722.2935 m
+309.4199 722.2935 306.2988 719.7432 306.2988 716.6245 c
+306.2988 713.7896 l
+306.2988 710.6714 309.4199 708.1206 313.2363 708.1206 c
+334.0449 708.1206 l
+337.8594 708.1206 340.9805 710.6714 340.9805 713.7896 c
+340.9805 716.6245 l
+340.9805 719.7432 337.8594 722.2935 334.0449 722.2935 c
+313.2363 722.2935 l
+sUu0 0 0 1 K
+256.3569 720.5933 m
+228.6113 720.5933 l
+224.7974 720.5933 221.6753 718.043 221.6753 714.9243 c
+221.6753 712.0894 l
+221.6753 708.9707 224.7974 706.4204 228.6113 706.4204 c
+256.3569 706.4204 L
+S0 0 0 0 K
+254.2759 722.2935 m
+226.5303 722.2935 l
+222.7163 722.2935 219.5942 719.7432 219.5942 716.6245 c
+219.5942 713.7896 l
+219.5942 710.6714 222.7163 708.1206 226.5303 708.1206 c
+254.2759 708.1206 L
+SUu0 0 0 1 K
+384.6836 706.4204 m
+384.6836 714.9243 l
+384.6836 718.043 381.5625 720.5933 377.7461 720.5933 c
+351.7344 720.5933 L
+351.7344 706.4204 l
+S0 0 0 0 K
+382.6016 708.1206 m
+382.6016 716.6245 l
+382.6016 719.7432 379.4805 722.2935 375.6641 722.2935 c
+349.6523 722.2935 L
+349.6523 708.1206 l
+SUu1 Ap
+0 0 0 1 K
+291.0405 713.5078 m
+291.0405 713.5078 l
+291.0405 713.5078 l
+291.0405 713.5078 l
+291.0405 713.5078 l
+s0 0 0 0 K
+288.9595 715.2075 m
+288.9595 715.2075 l
+288.9595 715.2075 l
+288.9595 715.2075 l
+288.9595 715.2075 l
+sUu0 0 0 1 K
+317.0508 713.5078 m
+317.0508 713.5078 l
+317.0508 713.5078 l
+317.0508 713.5078 l
+317.0508 713.5078 l
+s0 0 0 0 K
+314.9688 715.2075 m
+314.9688 715.2075 l
+314.9688 715.2075 l
+314.9688 715.2075 l
+314.9688 715.2075 l
+sUu0 0 0 1 K
+204.333 713.5078 m
+204.333 713.5078 l
+204.333 713.5078 l
+204.333 713.5078 l
+204.333 713.5078 l
+s0 0 0 0 K
+202.2524 715.2075 m
+202.2524 715.2075 l
+202.2524 715.2075 l
+202.2524 715.2075 l
+202.2524 715.2075 l
+sUUuu0 Ap
+0 0 0 1 K
+4 w185.3848 566.1685 m
+147.0908 566.1685 l
+141.8252 566.1685 137.5176 562.479 137.5176 557.9688 c
+137.5176 553.8682 l
+137.5176 549.3574 141.8252 545.668 147.0908 545.668 c
+185.3848 545.668 L
+S0 0 0 0 K
+182.5127 568.6279 m
+144.2188 568.6279 l
+138.9531 568.6279 134.6455 564.9385 134.6455 560.4277 c
+134.6455 556.3271 l
+134.6455 551.8169 138.9531 548.1274 144.2188 548.1274 c
+182.5127 548.1274 L
+SUu0 0 0 1 K
+206.9258 566.1685 m
+201.6616 566.1685 197.3525 562.479 197.3525 557.9688 c
+197.3525 553.8682 l
+197.3525 549.3574 201.6616 545.668 206.9258 545.668 c
+235.6465 545.668 l
+240.9141 545.668 245.2217 549.3574 245.2217 553.8682 c
+245.2217 557.9688 l
+245.2217 562.479 240.9141 566.1685 235.6465 566.1685 c
+206.9258 566.1685 l
+s0 0 0 0 K
+204.0537 568.6279 m
+198.7896 568.6279 194.4805 564.9385 194.4805 560.4277 c
+194.4805 556.3271 l
+194.4805 551.8169 198.7896 548.1274 204.0537 548.1274 c
+232.7749 548.1274 l
+238.042 548.1274 242.3496 551.8169 242.3496 556.3271 c
+242.3496 560.4277 l
+242.3496 564.9385 238.042 568.6279 232.7749 568.6279 c
+204.0537 568.6279 l
+sUu0 0 0 1 K
+326.5977 566.1685 m
+321.333 566.1685 317.0225 562.479 317.0225 557.9688 c
+317.0225 553.8682 l
+317.0225 549.3574 321.333 545.668 326.5977 545.668 c
+355.3213 545.668 l
+360.5859 545.668 364.8936 549.3574 364.8936 553.8682 c
+364.8936 557.9688 l
+364.8936 562.479 360.5859 566.1685 355.3213 566.1685 c
+326.5977 566.1685 l
+s0 0 0 0 K
+323.7246 568.6279 m
+318.4609 568.6279 314.1494 564.9385 314.1494 560.4277 c
+314.1494 556.3271 l
+314.1494 551.8169 318.4609 548.1274 323.7246 548.1274 c
+352.4492 548.1274 l
+357.7129 548.1274 362.0205 551.8169 362.0205 556.3271 c
+362.0205 560.4277 l
+362.0205 564.9385 357.7129 568.6279 352.4492 568.6279 c
+323.7246 568.6279 l
+sUu0 0 0 1 K
+386.4336 566.1685 m
+381.167 566.1685 376.8594 562.479 376.8594 557.9688 c
+376.8594 553.8682 l
+376.8594 549.3574 381.167 545.668 386.4336 545.668 c
+415.1563 545.668 l
+420.4199 545.668 424.7275 549.3574 424.7275 553.8682 c
+424.7275 557.9688 l
+424.7275 562.479 420.4199 566.1685 415.1563 566.1685 c
+386.4336 566.1685 l
+s0 0 0 0 K
+383.5615 568.6279 m
+378.2939 568.6279 373.9863 564.9385 373.9863 560.4277 c
+373.9863 556.3271 l
+373.9863 551.8169 378.2939 548.1274 383.5615 548.1274 c
+412.2832 548.1274 l
+417.5469 548.1274 421.8545 551.8169 421.8545 556.3271 c
+421.8545 560.4277 l
+421.8545 564.9385 417.5469 568.6279 412.2832 568.6279 c
+383.5615 568.6279 l
+sUu0 0 0 1 K
+305.0566 566.1685 m
+266.7622 566.1685 l
+261.4985 566.1685 257.189 562.479 257.189 557.9688 c
+257.189 553.8682 l
+257.189 549.3574 261.4985 545.668 266.7622 545.668 c
+305.0566 545.668 L
+S0 0 0 0 K
+302.1846 568.6279 m
+263.8901 568.6279 l
+258.6265 568.6279 254.3174 564.9385 254.3174 560.4277 c
+254.3174 556.3271 l
+254.3174 551.8169 258.6265 548.1274 263.8901 548.1274 c
+302.1846 548.1274 L
+SUu0 0 0 1 K
+482.1729 545.668 m
+482.1729 557.9688 l
+482.1729 562.479 477.8652 566.1685 472.5977 566.1685 c
+436.6963 566.1685 L
+436.6963 545.668 l
+S0 0 0 0 K
+479.2998 548.1274 m
+479.2998 560.4277 l
+479.2998 564.9385 474.9922 568.6279 469.7256 568.6279 c
+433.8242 568.6279 L
+433.8242 548.1274 l
+SUu1 Ap
+0 0 0 1 K
+352.9268 555.9189 m
+352.9268 555.9189 l
+352.9268 555.9189 l
+352.9268 555.9189 l
+352.9268 555.9189 l
+s0 0 0 0 K
+350.0547 558.3784 m
+350.0547 558.3784 l
+350.0547 558.3784 l
+350.0547 558.3784 l
+350.0547 558.3784 l
+sUu0 0 0 1 K
+388.8252 555.9189 m
+388.8252 555.9189 l
+388.8252 555.9189 l
+388.8252 555.9189 l
+388.8252 555.9189 l
+s0 0 0 0 K
+385.9521 558.3784 m
+385.9521 558.3784 l
+385.9521 558.3784 l
+385.9521 558.3784 l
+385.9521 558.3784 l
+sUu0 0 0 1 K
+233.2539 555.9189 m
+233.2539 555.9189 l
+233.2539 555.9189 l
+233.2539 555.9189 l
+233.2539 555.9189 l
+s0 0 0 0 K
+230.3818 558.3784 m
+230.3818 558.3784 l
+230.3818 558.3784 l
+230.3818 558.3784 l
+230.3818 558.3784 l
+sUUu0 Ap
+0 0 0 1 K
+2 w163.1582 649.647 m
+180.3291 649.647 l
+183.4473 649.647 185.9985 650.9043 185.9985 652.4414 c
+185.9985 653.9785 183.4473 655.2358 180.3291 655.2358 c
+163.1582 655.2358 L
+S193.7012 655.2358 m
+193.7012 653.9785 193.7012 652.4414 v
+193.7012 650.9043 196.2524 649.647 199.3706 649.647 c
+203.4385 649.647 l
+206.5566 649.647 209.1079 650.9043 209.1079 652.4414 c
+209.1079 653.9785 209.1079 655.2358 Y
+S216.8101 655.2358 m
+216.8101 649.647 l
+S224.5127 655.2358 m
+224.5127 653.9785 224.5127 652.4414 v
+224.5127 650.9043 227.064 649.647 230.1821 649.647 c
+239.9185 649.647 L
+S239.9185 655.2358 m
+255.3237 655.2358 l
+S247.6211 649.647 m
+247.6211 655.2358 l
+S1 Ap
+216.8101 658.4595 m
+216.8101 658.4595 l
+216.8101 658.4595 l
+216.8101 658.4595 l
+216.8101 658.4595 l
+sUu0 Ap
+278.2646 652.7759 m
+278.2646 649.9814 l
+S301.2793 655.5698 m
+301.2793 649.981 l
+S332.0898 655.5698 m
+332.0898 649.981 l
+S332.0898 652.7754 m
+347.4951 652.7754 l
+S347.4961 655.5698 m
+347.4961 649.981 l
+S308.9805 655.5698 m
+324.3877 655.5698 l
+S316.6855 649.981 m
+316.6855 655.5698 l
+S270.4678 655.5708 m
+270.4678 654.313 270.4678 652.7764 v
+270.4678 651.2393 273.0186 649.9814 276.1367 649.9814 c
+287.9082 649.9814 l
+291.0264 649.9814 293.5771 651.2393 293.5771 652.7764 c
+293.5771 654.313 293.5771 655.5708 Y
+S1 Ap
+301.2793 658.7935 m
+301.2793 658.7935 l
+301.2793 658.7935 l
+301.2793 658.7935 l
+301.2793 658.7935 l
+sUu0 Ap
+3 w177.748 587.7261 m
+174.6299 587.7261 172.0786 585.459 172.0786 582.6875 c
+172.0786 579.9165 174.6299 577.6494 177.748 577.6494 c
+194.7554 577.6494 l
+197.8735 577.6494 200.4248 579.9165 200.4248 582.6875 c
+200.4248 585.459 197.8735 587.7261 194.7554 587.7261 c
+177.748 587.7261 l
+s207.5112 587.7261 m
+207.5112 585.459 207.5112 582.6875 v
+207.5112 579.9165 210.0625 577.6494 213.1807 577.6494 c
+230.188 577.6494 l
+233.3062 577.6494 235.8574 579.9165 235.8574 582.6875 c
+235.8574 585.459 235.8574 587.7261 Y
+S221.6841 582.688 m
+221.6841 577.6494 l
+S271.291 587.7261 m
+248.6143 587.7261 l
+245.4961 587.7261 242.9448 585.459 242.9448 582.6875 c
+242.9448 579.9165 245.4961 577.6494 248.6143 577.6494 c
+271.291 577.6494 L
+S242.9448 582.688 m
+250.0313 582.688 l
+S342.1572 587.7261 m
+319.4805 587.7261 l
+316.3623 587.7261 313.8115 585.459 313.8115 582.6875 c
+313.8115 579.9165 316.3623 577.6494 319.4805 577.6494 c
+342.1572 577.6494 L
+S313.8115 582.688 m
+320.8975 582.688 l
+S278.377 587.7261 m
+301.0547 587.7261 l
+304.1729 587.7261 306.7236 586.5928 306.7236 585.207 c
+306.7236 583.8213 304.1729 582.688 301.0547 582.688 c
+298.2197 582.688 l
+295.1021 582.688 294.9546 581.8335 297.8926 580.7891 c
+306.7236 577.6494 L
+S136.6455 587.7261 m
+159.3228 587.7261 l
+162.4409 587.7261 164.9922 586.5928 164.9922 585.207 c
+164.9922 583.8213 162.4409 582.688 159.3228 582.688 c
+156.4883 582.688 l
+153.3701 582.688 150.8188 581.5542 150.8188 580.1689 c
+150.8188 578.7832 150.8188 577.6494 Y
+S349.2432 587.7261 m
+371.9209 587.7261 l
+375.0391 587.7261 377.5898 585.459 377.5898 582.6875 c
+377.5898 579.9165 375.0391 577.6494 371.9209 577.6494 c
+349.2432 577.6494 L
+S349.2432 587.7261 m
+349.2432 577.6499 l
+S413.0225 587.7261 m
+435.7002 587.7261 l
+438.8184 587.7261 441.3691 585.459 441.3691 582.6875 c
+441.3691 579.9165 438.8184 577.6494 435.7002 577.6494 c
+413.0225 577.6494 L
+S434.2822 582.688 m
+441.3691 582.688 l
+S448.4561 587.7261 m
+448.4561 586.5928 448.4561 585.207 v
+448.4561 583.8213 451.0068 582.688 454.125 582.688 c
+471.1328 582.688 l
+474.251 582.688 476.8018 583.8213 476.8018 585.207 c
+476.8018 586.5928 476.8018 587.7261 Y
+S462.6289 582.688 m
+462.6289 577.6494 l
+SUu0 0 0 0 K
+176.748 590.7261 m
+173.6299 590.7261 171.0786 588.459 171.0786 585.6875 c
+171.0786 582.9165 173.6299 580.6494 176.748 580.6494 c
+193.7554 580.6494 l
+196.8735 580.6494 199.4248 582.9165 199.4248 585.6875 c
+199.4248 588.459 196.8735 590.7261 193.7554 590.7261 c
+176.748 590.7261 l
+s206.5112 590.7261 m
+206.5112 588.459 206.5112 585.6875 v
+206.5112 582.9165 209.0625 580.6494 212.1807 580.6494 c
+229.188 580.6494 l
+232.3062 580.6494 234.8574 582.9165 234.8574 585.6875 c
+234.8574 588.459 234.8574 590.7261 Y
+S220.6841 585.688 m
+220.6841 580.6494 l
+S270.291 590.7261 m
+247.6143 590.7261 l
+244.4961 590.7261 241.9448 588.459 241.9448 585.6875 c
+241.9448 582.9165 244.4961 580.6494 247.6143 580.6494 c
+270.291 580.6494 L
+S241.9448 585.688 m
+249.0313 585.688 l
+S341.1572 590.7261 m
+318.4805 590.7261 l
+315.3623 590.7261 312.8115 588.459 312.8115 585.6875 c
+312.8115 582.9165 315.3623 580.6494 318.4805 580.6494 c
+341.1572 580.6494 L
+S312.8115 585.688 m
+319.8975 585.688 l
+S277.377 590.7261 m
+300.0547 590.7261 l
+303.1729 590.7261 305.7236 589.5928 305.7236 588.207 c
+305.7236 586.8213 303.1729 585.688 300.0547 585.688 c
+297.2197 585.688 l
+294.1021 585.688 293.9546 584.8335 296.8926 583.7891 c
+305.7236 580.6494 L
+S135.6455 590.7261 m
+158.3228 590.7261 l
+161.4409 590.7261 163.9922 589.5928 163.9922 588.207 c
+163.9922 586.8213 161.4409 585.688 158.3228 585.688 c
+155.4883 585.688 l
+152.3701 585.688 149.8188 584.5542 149.8188 583.1689 c
+149.8188 581.7832 149.8188 580.6494 Y
+S348.2432 590.7261 m
+370.9209 590.7261 l
+374.0391 590.7261 376.5898 588.459 376.5898 585.6875 c
+376.5898 582.9165 374.0391 580.6494 370.9209 580.6494 c
+348.2432 580.6494 L
+S348.2432 590.7261 m
+348.2432 580.6499 l
+S412.0225 590.7261 m
+434.7002 590.7261 l
+437.8184 590.7261 440.3691 588.459 440.3691 585.6875 c
+440.3691 582.9165 437.8184 580.6494 434.7002 580.6494 c
+412.0225 580.6494 L
+S433.2822 585.688 m
+440.3691 585.688 l
+S447.4561 590.7261 m
+447.4561 589.5928 447.4561 588.207 v
+447.4561 586.8213 450.0068 585.688 453.125 585.688 c
+470.1328 585.688 l
+473.251 585.688 475.8018 586.8213 475.8018 588.207 c
+475.8018 589.5928 475.8018 590.7261 Y
+S461.6289 585.688 m
+461.6289 580.6494 l
+SULB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_pattern_AI5 /terminate get exec
+AGM_Gradient /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/ASF_20_SRC_AUTO/misc/graphics/cocoon2.svg b/ASF_20_SRC_AUTO/misc/graphics/cocoon2.svg
new file mode 100644
index 0000000..64bfe62
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/cocoon2.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 8.0, SVG Export Plug-In 1.0x56 -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG December 1999//EN" "http://www.w3.org/Graphics/SVG/SVG-19991203.dtd" [
+ <!ENTITY st0 "stroke:#000000;stroke-width:2.8346;">
+ <!ENTITY st1 "stroke:#FFFFFF;stroke-width:2.8346;">
+ <!ENTITY st2 "fill:none;stroke:#000000;stroke-width:2.8346;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;">
+ <!ENTITY st3 "fill-rule:nonzero;fill:#0086B3;stroke:#000000;stroke-width:2.8346;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;">
+]>
+<svg xml:space="preserve" width="300.471" height="45.354">
+<g id="Layer_x0020_1">
+ <path style="&st3;" d="M299.054,22.677c0,11.692-10.205,21.26-22.677,21.26H24.095c-12.473,0-22.677-9.567-22.677-21.26c0-11.693,10.205-21.26,22.677-21.26h252.282c12.472,0,22.677,9.566,22.677,21.26z"/>
+ <g style="&st2;">
+ <g>
+ <path d="M77.384,16.441H54.708c-3.118,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.551,5.669,5.669,5.669h22.677"/>
+ <path style="&st1;" d="M75.684,14.741H53.007c-3.118,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.551,5.669,5.669,5.669h22.677"/>
+ </g>
+ <g>
+ <path d="M90.14,16.441c-3.117,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.552,5.669,5.669,5.669h17.008c3.119,0,5.67-2.551,5.67-5.669V22.11c0-3.118-2.551-5.669-5.67-5.669H90.14z"/>
+ <path style="&st1;" d="M88.439,14.741c-3.117,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.552,5.669,5.669,5.669h17.008c3.119,0,5.67-2.551,5.67-5.669V20.41c0-3.118-2.551-5.669-5.67-5.669H88.439z"/>
+ </g>
+ <g>
+ <path d="M161.007,16.441c-3.118,0-5.67,2.551-5.67,5.669v2.835c0,3.118,2.552,5.669,5.67,5.669h17.009c3.117,0,5.669-2.551,5.669-5.669V22.11c0-3.118-2.552-5.669-5.669-5.669h-17.009z"/>
+ <path style="&st1;" d="M159.306,14.741c-3.118,0-5.67,2.551-5.67,5.669v2.835c0,3.118,2.552,5.669,5.67,5.669h17.009c3.117,0,5.669-2.551,5.669-5.669V20.41c0-3.118-2.552-5.669-5.669-5.669h-17.009z"/>
+ </g>
+ <g>
+ <path d="M196.44,16.441c-3.119,0-5.67,2.551-5.67,5.669v2.835c0,3.118,2.551,5.669,5.67,5.669h17.008c3.117,0,5.668-2.551,5.668-5.669V22.11c0-3.118-2.551-5.669-5.668-5.669H196.44z"/>
+ <path style="&st1;" d="M194.739,14.741c-3.119,0-5.67,2.551-5.67,5.669v2.835c0,3.118,2.551,5.669,5.67,5.669h17.008c3.117,0,5.668-2.551,5.668-5.669V20.41c0-3.118-2.551-5.669-5.668-5.669h-17.008z"/>
+ </g>
+ <g>
+ <path d="M148.25,16.441h-22.677c-3.117,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.552,5.669,5.669,5.669h22.677"/>
+ <path style="&st1;" d="M146.55,14.741h-22.677c-3.117,0-5.669,2.551-5.669,5.669v2.835c0,3.118,2.552,5.669,5.669,5.669h22.677"/>
+ </g>
+ <g>
+ <path d="M253.134,30.614V22.11c0-3.118-2.551-5.669-5.67-5.669h-21.26v14.173"/>
+ <path style="&st1;" d="M251.433,28.914V20.41c0-3.118-2.551-5.669-5.67-5.669h-21.26v14.173"/>
+ </g>
+ <g>
+ <path d="M176.598,23.527h0.001z"/>
+ <path style="&st1;" d="M174.896,21.827h0.001z"/>
+ </g>
+ <g>
+ <path d="M197.856,23.527h0.001z"/>
+ <path style="&st1;" d="M196.155,21.827h0.001z"/>
+ </g>
+ <g>
+ <path d="M105.731,23.527h0.001z"/>
+ <path style="&st1;" d="M104.03,21.827h0.001z"/>
+ </g>
+ </g>
+</g><!-- Layer_x0020_1 -->
+</svg>
diff --git a/ASF_20_SRC_AUTO/misc/graphics/pyramid-model-of-contracts.ai b/ASF_20_SRC_AUTO/misc/graphics/pyramid-model-of-contracts.ai
new file mode 100644
index 0000000..c1035f8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/pyramid-model-of-contracts.ai
@@ -0,0 +1,6474 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 140 600 454 760
+%%HiResBoundingBox: 140.314 600.9429 453.0938 759.6836
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: Helvetica
+%%DocumentNeededFonts: Helvetica
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 ()
+%AI3_TemplateBox: 296.5 419.5 296.5 419.5
+%AI3_TileBox: 8 38 584 800
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 592 840
+%AI5_RulerUnits: 1
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: -375 867 0.75 1016 675 18 0 1 10 67 1 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:8 38
+%%AI3_PaperRect:-8 802 587 -40
+%%AI3_Margin:8 -39 -9 40
+%AI7_GridSettings: 14.1732 2 14.1732 2 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI7_Thumbnail: 128 68 8
+%%BeginData: 12086 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD1FFF7DFD40F8FD3FFF7DF8A07CA07CA07CA07CA07CA07CA07CA0
+%7CA07CA07CA07CA07CA07CA07CA07CA07CA07CA07CA07CA07CA07CA07CA0
+%7CA07CA07CA07CA07CA07CA07CA07CA051F8FD3FFF52F8CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEA1F8FD3FFF7D
+%F8C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC97CF8FD3FFF52F8CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEA1F8FD3FFF7DF8C9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC97CF8FD3FFF52F8CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEA1F8FD3F
+%FF52F8C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC97CF8FD3FFF52F8CEC9CEC97C76CEC9CE7C51C9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9A7C9CEC9CEA1F8FD3FFF7DF8C9CEC9CE76F8A7CEC92727
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC97C76CEC9CEC97CF8FD3FFF52F8CEC9CE
+%C951527CC9A65227C9A7512751CE7C514B27C9CE512751CEC97C4B2727CE
+%A7274B7CC9264B267C5151CEC9A64B277CCE2727277C27F8A7CEC9CEA1F8
+%FD3FFF7DF8C9CEC9CE767C27CE517C27CEA77CC951A05176CE517CC97CC9
+%51A0CE27A6C9F8C927C9CE4BA627A6A027C951A0CE4BA6C927C9F8C9A627
+%7C76CEC9CEC97CF8FD3FFF52F8CEC9CEC97BA151C926C927C9CE52514B7C
+%7CA6C97BA1CE522751A6C927C9CE4BCE27274BF8A127C97C7CCE7C7CC9F8
+%4B2727A64BCEC927A17BC9CEC9CEA1F8FD3FFF7DF8C9CEC9CE767C7C5151
+%CE4BCE767CC951A051A0CE767C767CC951A0CE27A6C9F8C926C9CE7CA64B
+%CEA051C951A0CE4BCEC97CC927C9CE4B7C76CEC9CEC97CF8FD3FFF52F8CE
+%C9CEC97CA0CE27A6C927C9A64B277C51767CC97CA0A64B517651C9A62727
+%27CEA0272751C927C9A676CE7CA6C97C4B2676CE4BCEC927C926A7CEC9CE
+%A1F8FD3FFF52F8C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CE7CCEC926C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC97CF8FD3FFF52F8CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC97C4B27A0CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEA1F8FD3FFF7DF8C9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC97CF8FD3FFF52
+%F8CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEA1F8FD3FFF7DF8C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC97CF8FD3FFF52F8CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEA1F8FD3FFF7DF8C9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9
+%CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC97CF8FD3F
+%FF52F8CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CEC9CE
+%C9CEC9CEA1F8FD3FFF52FD40F8FD40FF7D527D527D527D527D5227F85252
+%7D5259527D5259527D5259527D52595252F852527D5259527D5259527D52
+%59527D5259527D27F8F852527D527D527D527D7DFD48FF52F8F883FFAFFF
+%AEFFAFFFAEFFAFFFAEFFAFFFAEFFAF7DF87DAFFFAEFFAFFFAEFFAFFFAEFF
+%AFFFAEFFAFFFAE7DF8F87DFD4FFF27F827AFFFFFFFAFFFFFFFAFFFFFFFAF
+%FFFFFFAFFFFFFF84F8A8FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFF
+%A852F827A8FD4BFFA8F8F852A8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FF
+%AEFFA87DF87DA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FF58F8
+%F87DFD49FF7DF827A8FFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFF
+%FF84F8A8FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFA827F8
+%52FD46FFA852F82DA8AFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAF
+%FFAE7DF87DAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAE
+%52F827A8FD43FFA827F87DFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFF
+%AFFFFFFFAFFFA8F884FFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFF
+%FFFFAFFFFF7D27F87DFD41FF52F8F87DFFAEFFA8FFAEFFA8FFAEFFA8FFAE
+%FFA8FFAEFFA8FFAEFFA8FFAE7DF87DAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8
+%FFAEFFA8FFAEFFA8FFAEFFA8A82DF827A8FD3EFF27F827FFFFAFFFFFFFAF
+%FFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFA8F884FFFFFFAFFFFF
+%FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFF7DF8277DFD3BFF
+%A8F8F852AFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFF
+%AEFFAF7DF87DAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFF
+%AFFFAEFFAFFF83F8F852FD39FF7DF827A8FFFFAFFFFFFFAFFFFFFFAFFFFF
+%FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFF84F8A8FFAFFFFFFFAFFFFFFFAF
+%FFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFF52F827A8FD35FFA8
+%52F827A8AEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFF
+%A8FFAEFFA87DF87DA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FF
+%AEFFA8FFAEFFA8FFAEFFA87DF8F87DFD33FFA827F87DFFAFFFFFFFAFFFFF
+%FFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFF84F8A8FFAF
+%FFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFF
+%FFAFFF52F852FD31FF52F8F884FFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFF
+%AEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAE7DF87DAEFFAFFFAEFFAFFFAEFF
+%AFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFFAEFFAFFF58F8F87D
+%FD2EFF27F827FFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFF
+%FFFFAFFFFFFFAFFFFFFFAFFFA8F884FFFFFFAFFFFFFFAFFFFFFFAFFFFFFF
+%AFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFFFFFAFFFA827F852FD2BFFA8
+%F8F852AEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8
+%FFAEFFA8FFAEFFA8FFAE7DF87DAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAE
+%FFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA8FFAEFFA852F827A8FD14FF7D
+%527D527D527D527D527D527D527D527D527D5252F8275259527D5259527D
+%7DAFFFFFFFAFFFFFFFAF7D7D5259527D5259527D5259527D5259527D5259
+%5252F852527D5259527D5259527D5259527D5259527D52AFFFFFFFAFFFFF
+%FFAFFFFF5259527D5259527D52595227F852527D527D527D527D527D527D
+%527D527D527D7DFD20F87DAFFFAEFFAFFFAEFFFD2BF827AFFFAEFFAFFFAE
+%FFAF7DFD22F87DC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3
+%CAC3CAC3CAA1F8A8FFAFFFFFFFAFFFFFF852AEA8AEA8AEA8AEA8AEA8AEA8
+%AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82727
+%FFAFFFFFFFAFFFFFFF84F8FD1E857EF8F876C3C3C9A1C3C3C9A1C3C3C9A1
+%C3C3C9A1C3C3C9A1C3C3C9A1C3C3C9A176F87DA8FFAEFFA8FFAEFFF82784
+%AE83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE83
+%A884AE83A884AE83A82727A8FFAEFFA8FFAEFFA87DF8857E8584857E8584
+%857E8584857E8584857E8584857E8584857E8584857E59F8F8A1C3CAC3CA
+%C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAA1F8A8FFAFFF
+%FFFFAFFFFFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AE
+%A8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82752FFAFFFFFFFAFFFFFFF84F8
+%FD1E857EF8F89AC9C3CAC3C9C3CAC3C9C3CAC3C9C3CAC3C9C3CAC3C9C3CA
+%C3C9C3CAC37CF87DAEFFAFFFAEFFAFFFF85284AE83A884AE83A884AE83A8
+%84AE83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE83A82727
+%AEFFAFFFAEFFAFFFAE7DF8857E8584857E8584857E8584857E8584857E85
+%84857E8584857E8584857E59F8F8A1C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3
+%CAC3CAC3CAC3CAC3CAC3CAC3CAA1F884FFFFFFAFFFFFFFAFF852AEA8AEA8
+%AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8
+%AEA8AEA8AEA8272EFFFFFFAFFFFFFFAFFFA8F8FD1E857EF8F89AC9A1C3C3
+%C9A1C3C3C9A1C3C3C9A1C3C3C9A1C3C3C9A1C3C3C9A1C3C37CF87DAEFFA8
+%FFAEFFA8FFF85283A884AE83A884AE83A884AE83A884AE83A884AE83A884
+%AE83A884AE83A884AE83A884AE83A884AE2727AEFFA8FFAEFFA8FFAE7DF8
+%8584857E8584857E8584857E8584857E8584857E8584857E8584857E8584
+%59F8F8A1C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CA
+%C3CAA1F884FFFFFFAFFFFFFFAFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8AE
+%A8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8272EFFFFFF
+%AFFFFFFFAFFFA8F8FD1E857EF8F89ACAC3C9C352C3C9C3CAC3C9C3CAC3C9
+%C3CAC3C976A1C3C9C3CAC3C9C37DF87DAFFFAEFFAFFFAEFFF85283A884AE
+%8352272D58A884AE83A884AE83A884AE837D84AE83A884AE83A884AE837D
+%84AE83A884AE2727AFFFAEFFAFFFAEFFAF7DF88584857E8584855327272E
+%7E5A84857E8584857E2884857E8584857E858459F8F87DC3CAC3CA4BCAC3
+%CAC3CAC3CAC3CAC3CAC3CAC3A1C3CAC3CAC3CAC3CAA1F8A8FFAFFFFFFFAF
+%FFFFF852AEA8AEA85852A8A82D7DAEA8AEA8AEA8AEA8AEA88352AEA8AEA8
+%AEA8AEA8AEA8AE7D52A8AEA8AEA82727FFAFFFFFFFAFFFFFFF84F8FD0785
+%288585525328FD078528FD09857EF8F876C3C3C9A120C3C9A1C3C34B27F8
+%A1C927204B515276C34B2727C3C9A176F87DA8FFAEFFA8FFAEFFF82784AE
+%83A827AE83A884838327270458A82727275227F858A85227277D84F827F8
+%5904047D84AE83A82727A8FFAEFFA8FFAEFFA87DF8857E8584857E5A275A
+%7E5A59F828F88485285384057E5A2705528584857E59F8F8A1C3CAC3CA4B
+%CAC3CAC37D76CAC3277676C3767676A17D76CA9A76C3CAA1FD0BF852AEA8
+%AEA827A8AEA8AEA87D7DAEA827A804A8AE52837DAE7D58A88352AE27AEA8
+%277D58A8AEA8AEA827FD0CF8FD0785532705528528855953850585852885
+%2E858527FD04857EF8F89AC9C3CAC326C3CAC3C9767DC3C94B529AC99A52
+%767C767DC3C9C3CAC37CF8277D527D527D527D52F85284AE83A827AE83A8
+%8458527D84AE27A827AE832759528352FD0427842783A8277D52A884AE83
+%A827F87D527D527D527D527D27F8857E8584857E5A84857E2E2E277E5A27
+%5A288584277EF82727005984857E59F8F8A1C3CAC3CA4BCAC3CAC37676CA
+%C3279A76C37676769A7676CA9A76C3CAA1F8A8FD08FFF852AEA8AEA82D7D
+%AEA82D7D7D52AEA827A827A8AE277D7DAE7D58A8AE7DAE27AEA8277D58A8
+%AEA8AEA82752FD09FFA8F8FD0685532E8585852728858527525A85852885
+%28858559FD04857EF8F89AC9A1C3C3F8272027C9A14B272076C34B26274B
+%767CA1272727A1C3C37CF87DFD08FFF85283A884AE8327272752A8842D27
+%F87DAE27A8842783F87DAE2D272783832784AE277D278383A884AE2727FD
+%09FF7DF88584857E858485280527275328528552F884857E05845927F852
+%857E858459F8F8A1C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3A1C37676CAC3CA
+%C3CAC3CAC3CAA1F8A8FD08FFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8
+%AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82752FD09FFA8
+%F8FD0F855959FD0D857EF8F89ACAC3C9C3CAC3C9C3CAC3C9C3CAC3A04B27
+%4BC9C3CAC3C9C3CAC3C9C37DF87DFD08FFF85283A884AE83A884AE83A884
+%AE83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE27
+%27FD09FF7DF88584857E8584857E8584857E858453275A84857E8584857E
+%8584857E858459F8F87DC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CA
+%C3CAC3CAC3CAC3CAA1F8A8FD08FFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8
+%AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82727FD09
+%FFA8F8FD1E857EF8F876C3C3C9A1C3C3C9A1C3C3C9A1C3C3C9A1C3C3C9A1
+%C3C3C9A1C3C3C9A176F87DFD08FFF82784AE83A884AE83A884AE83A884AE
+%83A884AE83A884AE83A884AE83A884AE83A884AE83A884AE83A82727FD09
+%FF7DF8857E8584857E8584857E8584857E8584857E8584857E8584857E85
+%84857E59F8F8A1C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3
+%CAC3CAC3CAA1F8A8FD08FFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AE
+%A8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82752FD09FFA8F8
+%FD1E857EF8F89AC9C3CAC3C9C3CAC3C9C3CAC3C9C3CAC3C9C3CAC3C9C3CA
+%C3C9C3CAC37CF87DFD08FFF85284AE83A884AE83A884AE83A884AE83A884
+%AE83A884AE83A884AE83A884AE83A884AE83A884AE83A82727FD09FF7DF8
+%857E8584857E8584857E8584857E8584857E8584857E8584857E8584857E
+%59F8F8A1C3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CAC3CA
+%C3CAA1F8A8FD08FFF852AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8
+%AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA8AEA82752FD09FFA8F8FD1E85
+%7EF8F8767C76769A7C76769A7C76769A7C76769A7C76769A7C76769A7C76
+%769A51F87DFD08FFF827587D597D587D597D587D597D587D597D587D597D
+%587D597D587D597D587D597D587D597D587D597D2727FD09FF7DF8595959
+%5359595953595959535959595359595953595959535959595359592EF827
+%FD1FF8FD09FF27FD2AF87DFD09FFA8FD21F8FDFCFFFD83FFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+ Adobe_typography_AI5 begin
+ Adobe_typography_AI5
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ end
+ end
+ Adobe_typography_AI5 begin
+} def
+/terminate
+{
+ currentdict Adobe_typography_AI5 eq
+ {
+ end
+ } if
+} def
+/modifyEncoding
+{
+ /_tempEncode exch ddef
+ /_pntr 0 ddef
+ {
+ counttomark -1 roll
+ dup type dup /marktype eq
+ {
+ pop pop exit
+ }
+ {
+ /nametype eq
+ {
+ _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+ put
+ }
+ {
+ /_pntr exch ddef
+ } ifelse
+ } ifelse
+ } loop
+ _tempEncode
+} def
+/havefont
+{
+ systemdict /languagelevel known
+ {
+ /Font resourcestatus dup
+ { exch pop exch pop }
+ if
+ }
+ {
+ systemdict /FontDirectory get 1 index known
+ { pop true }
+ {
+ systemdict /fileposition known
+ {
+ dup length 6 add exch
+ Ss 6 250 getinterval
+ cvs pop
+ Ss exch 0 exch getinterval
+ status
+ { pop pop pop pop true }
+ { false }
+ ifelse
+ }
+ {
+ pop false
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+} def
+/TE
+{
+ StandardEncoding 256 array copy modifyEncoding
+ /_nativeEncoding exch def
+} def
+/subststring {
+ exch 2 index exch search
+ {
+ exch pop
+ exch dup () eq
+ {
+ pop exch concatstring
+ }
+ {
+ 3 -1 roll
+ exch concatstring
+ concatstring
+ } ifelse
+ exch pop true
+ }
+ {
+ pop pop false
+ } ifelse
+} def
+/concatstring {
+ 1 index length 1 index length
+ 1 index add
+ string
+ dup 0 5 index putinterval
+ dup 2 index 4 index putinterval
+ 4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+ dup type /arraytype eq
+ {
+ /_wv exch def
+ }
+ {
+ /_wv 0 def
+ } ifelse
+ /_useNativeEncoding exch def
+ 2 index havefont
+ {
+ 3 index
+ 255 string
+ cvs
+
+ dup
+ (_Symbol_)
+ eq
+ {
+ pop
+ 2 index
+ findfont
+
+ }
+ {
+ 1 index 0 eq
+ {
+ dup length 1 sub
+ 1 exch
+ getinterval
+
+ cvn
+ findfont
+ }
+ {
+ pop 2 index findfont
+ } ifelse
+ } ifelse
+ }
+ {
+ dup 1 eq
+ {
+ 2 index 64 string cvs
+ dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+ {
+ exch pop dup havefont
+ {
+ findfont false
+ }
+ {
+ pop true
+ } ifelse
+ }
+ {
+ pop dup
+ (-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+ {
+ exch pop dup havefont
+ {
+ findfont false
+ }
+ {
+ pop true
+ } ifelse
+ }
+ {
+ pop pop true
+ } ifelse
+ } ifelse
+ {
+ 1 index 1 eq
+ {
+ /Ryumin-Light-Ext-RKSJ-V havefont
+ {/Ryumin-Light-Ext-RKSJ-V}
+ {/Courier}
+ ifelse
+ }
+ {
+ /Ryumin-Light-83pv-RKSJ-H havefont
+ {/Ryumin-Light-83pv-RKSJ-H}
+ {/Courier}
+ ifelse
+ } ifelse
+ findfont
+ [1 0 0.5 1 0 0] makefont
+ } if
+ }
+ {
+ /Courier findfont
+ } ifelse
+ } ifelse
+ _wv type /arraytype eq
+ {
+ _wv makeblendedfont
+ } if
+ dup length 10 add dict
+ begin
+ mark exch
+ {
+ 1 index /FID ne
+ {
+ def
+ } if
+ cleartomark mark
+ } forall
+ pop
+ /FontScript exch def
+ /FontDirection exch def
+ /FontRequest exch def
+ /FontName exch def
+ counttomark 0 eq
+ {
+ 1 _useNativeEncoding eq
+ {
+ /Encoding _nativeEncoding def
+ } if
+ cleartomark
+ }
+ {
+ /Encoding load 256 array copy
+ modifyEncoding /Encoding exch def
+ } ifelse
+ FontName currentdict
+ end
+ definefont pop
+} def
+/tr
+{
+ _ax _ay 3 2 roll
+} def
+/trj
+{
+ _cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+ /Tx
+ {
+ dup
+ currentpoint 3 2 roll
+ tr _psf
+ newpath moveto
+ tr _ctm _pss
+ } ddef
+ /Tj
+ {
+ dup
+ currentpoint 3 2 roll
+ trj _pjsf
+ newpath moveto
+ trj _ctm _pjss
+ } ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+ /Tx
+ {
+ tr _psf
+ } ddef
+ /Tj
+ {
+ trj _pjsf
+ } ddef
+} def
+/e1
+{
+W F
+} def
+/i0
+{
+ /Tx
+ {
+ tr sp
+ } ddef
+ /Tj
+ {
+ trj jsp
+ } ddef
+} def
+/i1
+{
+ W N
+} def
+/o0
+{
+ /Tx
+ {
+ tr sw rmoveto
+ } ddef
+ /Tj
+ {
+ trj swj rmoveto
+ } ddef
+} def
+/r0
+{
+ /Tx
+ {
+ tr _ctm _pss
+ } ddef
+ /Tj
+ {
+ trj _ctm _pjss
+ } ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+ pop _ctm currentmatrix pop
+} def
+/TO
+{
+ iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+ pop _tm astore pop _ctm setmatrix
+ _tDict begin
+ /W
+ {
+ } def
+ /h
+ {
+ } def
+} def
+/TP
+{
+ end
+ iTm 0 0 moveto
+} def
+/Tr
+{
+ _render 3 le
+ {
+ currentpoint newpath moveto
+ } if
+ dup 8 eq
+ {
+ pop 0
+ }
+ {
+ dup 9 eq
+ {
+ pop 1
+ } if
+ } ifelse
+ dup /_render exch ddef
+ _renderStart exch get load exec
+} def
+/iTm
+{
+ _ctm setmatrix _tm concat
+ _shift aload pop _lineorientation 1 eq { exch } if translate
+ _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+ _tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+ _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+ _render -1 eq
+ {
+ }
+ {
+ _renderEnd _render get dup null ne
+ {
+ load exec
+ }
+ {
+ pop
+ } ifelse
+ } ifelse
+ /_render -1 ddef
+} def
+/Ta
+{
+ pop
+} def
+/Tf
+{
+ 1 index type /nametype eq
+ {
+ dup 0.75 mul 1 index 0.25 mul neg
+ } if
+ /_fontDescent exch ddef
+ /_fontAscent exch ddef
+ /_fontSize exch ddef
+ /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+ /_fontHeight _fontSize ddef
+ findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+ pop neg 0 exch
+ _leading astore pop
+} def
+/Tt
+{
+ pop
+} def
+/TW
+{
+ 3 npop
+} def
+/Tw
+{
+ /_cx exch ddef
+} def
+/TC
+{
+ 3 npop
+} def
+/Tc
+{
+ /_ax exch ddef
+} def
+/Ts
+{
+ 0 exch
+ _shift astore pop
+ currentpoint
+ iTm
+ moveto
+} def
+/Ti
+{
+ 3 npop
+} def
+/Tz
+{
+ count 1 eq { 100 } if
+ 100 div exch 100 div exch
+ _scale astore pop
+ iTm
+} def
+/TA
+{
+ pop
+} def
+/Tq
+{
+ pop
+} def
+/Tg
+{
+ pop
+} def
+/TG
+{
+ pop
+} def
+/Tv
+{
+ /_lineorientation exch ddef
+} def
+/TV
+{
+ /_charorientation exch ddef
+} def
+/Ty
+{
+ dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+ pop
+} def
+/T~
+{
+ Tx
+} def
+/Th
+{
+ pop pop pop pop pop
+} def
+/TX
+{
+ pop
+} def
+/Tk
+{
+ _fontSize mul 1000 div
+ _lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+ rmoveto
+ pop
+} def
+/TK
+{
+ 2 npop
+} def
+/T*
+{
+ _leading aload pop
+ _lineorientation 0 ne { exch } if
+ Td
+} def
+/T*-
+{
+ _leading aload pop
+ _lineorientation 0 ne { exch } if
+ exch neg exch neg
+ Td
+} def
+/T-
+{
+ _ax neg 0 rmoveto
+ _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+ _ctm currentmatrix pop
+ _tm astore pop
+ iTm 0 0 moveto
+} def
+/TS
+{
+ currentfont 3 1 roll
+ /_Symbol_ findfont _fontSize scalefont setfont
+
+ 0 eq
+ {
+ Tx
+ }
+ {
+ Tj
+ } ifelse
+ setfont
+} def
+/Xb
+{
+ pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+ pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+ currentfont 5 1 roll
+ dup havefont
+ {
+ findfont _fontSize scalefont setfont
+ }
+ {
+ pop
+ exch
+ } ifelse
+ 2 index 0 eq
+ {
+ Tx
+ }
+ {
+ Tj
+ } ifelse
+ pop pop
+ setfont
+} def
+/T^ /X^ load def
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%IncludeFont: Helvetica
+userdict /_useSmoothShade false put
+userdict /_aicmykps false put
+userdict /_forceToCMYK false put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Helvetica Helvetica
+[/_Helvetica/Helvetica 0 0 1 TZ%AI3_EndEncoding AdobeType
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d%AI3_Note:0 D
+0 XR
+0 68.4097 m
+72 68.4097 l
+S0 61.209 m
+72 61.209 L
+S0 54.0088 m
+72 54.0088 L
+S0 46.8076 m
+72 46.8076 L
+S0 39.6084 m
+72 39.6084 L
+S0 32.4072 m
+72 32.4072 L
+S0 25.207 m
+72 25.207 L
+S0 18.0059 m
+72 18.0059 L
+S0 10.8057 m
+72 10.8057 L
+S0 3.6064 m
+72 3.6064 L
+S68.4102 68.4097 m
+68.4102 61.2217 l
+S54.0098 68.4097 m
+54.0098 61.2217 L
+S39.6094 68.4097 m
+39.6094 61.2217 L
+S25.21 68.4097 m
+25.21 61.2217 L
+S10.8105 68.4097 m
+10.8105 61.2217 L
+S68.4102 53.9717 m
+68.4102 46.7842 l
+S54.0098 53.9717 m
+54.0098 46.7842 L
+S39.6094 53.9717 m
+39.6094 46.7842 L
+S25.21 53.9717 m
+25.21 46.7842 L
+S10.8105 53.9717 m
+10.8105 46.7842 L
+S68.4102 39.5967 m
+68.4102 32.4092 l
+S54.0098 39.5967 m
+54.0098 32.4092 L
+S39.6094 39.5967 m
+39.6094 32.4092 L
+S25.21 39.5967 m
+25.21 32.4092 L
+S10.8105 39.5967 m
+10.8105 32.4092 L
+S68.4102 25.2217 m
+68.4102 18.0342 l
+S54.0098 25.2217 m
+54.0098 18.0342 L
+S39.6094 25.2217 m
+39.6094 18.0342 L
+S25.21 25.2217 m
+25.21 18.0342 L
+S10.8105 25.2217 m
+10.8105 18.0342 L
+S68.4102 10.7842 m
+68.4102 3.5967 l
+S54.0098 10.7842 m
+54.0098 3.5967 L
+S39.6094 10.7842 m
+39.6094 3.5967 L
+S25.21 10.7842 m
+25.21 3.5967 L
+S10.8105 10.7842 m
+10.8105 3.5967 L
+S61.1973 3.5967 m
+61.1973 0 L
+S46.7969 3.5967 m
+46.7969 0 L
+S32.3965 3.5967 m
+32.3965 0 L
+S17.9971 3.5967 m
+17.9971 0 L
+S3.5967 3.5967 m
+3.5967 0 l
+S61.1973 18.0342 m
+61.1973 10.8467 L
+S46.7969 18.0342 m
+46.7969 10.8467 L
+S32.3965 18.0342 m
+32.3965 10.8467 L
+S17.9971 18.0342 m
+17.9971 10.8467 L
+S3.5967 18.0342 m
+3.5967 10.8467 l
+S61.1973 32.4092 m
+61.1973 25.2217 L
+S46.7969 32.4092 m
+46.7969 25.2217 L
+S17.9971 32.4092 m
+17.9971 25.2217 L
+S3.5967 32.4092 m
+3.5967 25.2217 l
+S61.1973 46.7842 m
+61.1973 39.5967 L
+S46.7969 46.7842 m
+46.7969 39.5967 L
+S32.3965 46.7842 m
+32.3965 39.5967 L
+S17.9971 46.7842 m
+17.9971 39.5967 L
+S3.5967 46.7842 m
+3.5967 39.5967 l
+S61.1973 61.2217 m
+61.1973 54.0347 L
+S46.7969 61.2217 m
+46.7969 54.0347 L
+S32.3965 61.2217 m
+32.3965 54.0347 L
+S17.9971 61.2217 m
+17.9971 54.0347 L
+S3.5967 61.2217 m
+3.5967 54.0347 l
+S61.1973 71.959 m
+61.1973 68.4717 L
+S46.7969 71.959 m
+46.7969 68.4717 L
+S32.3965 71.959 m
+32.3965 68.4717 L
+S17.9971 71.959 m
+17.9971 68.4717 L
+S3.5967 71.959 m
+3.5967 68.4717 l
+S32.3965 32.4092 m
+32.3965 25.2217 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d%AI3_Note:0 D
+0 XR
+10.6 64.867 m
+7.85 62.867 l
+S9.1 8.617 m
+6.85 6.867 l
+S78.1 68.617 m
+74.85 67.867 l
+S76.85 56.867 m
+74.35 55.117 l
+S79.6 51.617 m
+76.6 51.617 l
+S76.35 44.117 m
+73.6 45.867 l
+S78.6 35.867 m
+76.6 34.367 l
+S76.1 23.867 m
+73.35 26.117 l
+S78.1 12.867 m
+73.85 13.617 l
+S68.35 14.617 m
+66.1 12.867 l
+S76.6 30.617 m
+73.6 30.617 l
+S62.85 58.117 m
+60.956 60.941 l
+S32.85 59.617 m
+31.196 62.181 l
+S47.891 64.061 m
+49.744 66.742 l
+S72.814 2.769 m
+73.928 5.729 l
+S67.976 2.633 m
+67.35 5.909 l
+S61.85 27.617 m
+59.956 30.441 l
+S53.504 56.053 m
+51.85 58.617 l
+S52.762 1.779 m
+52.876 4.776 l
+S45.391 5.311 m
+47.244 7.992 l
+S37.062 3.375 m
+35.639 5.43 l
+S55.165 34.828 m
+57.518 37.491 l
+S20.795 3.242 m
+22.12 5.193 l
+S14.097 4.747 m
+15.008 8.965 l
+S9.736 1.91 m
+8.073 4.225 l
+S31.891 5.573 m
+32.005 8.571 l
+S12.1 70.367 m
+15.6 68.867 l
+S9.35 54.867 m
+9.6 58.117 l
+S12.85 31.867 m
+14.35 28.117 l
+S10.1 37.367 m
+12.35 41.117 l
+S34.1 71.117 m
+31.85 68.617 l
+S38.35 71.117 m
+41.6 68.367 l
+S55.1 71.117 m
+58.35 69.117 l
+S57.35 65.117 m
+55.35 61.867 l
+S64.35 66.367 m
+69.35 68.617 l
+S71.85 62.867 m
+69.35 61.117 l
+S23.6 70.867 m
+23.6 67.867 l
+S20.6 65.867 m
+17.35 65.367 l
+S24.85 61.367 m
+25.35 58.117 l
+S25.85 65.867 m
+29.35 66.617 l
+S14.1 54.117 m
+16.85 56.117 l
+S12.35 11.617 m
+12.6 15.617 l
+S12.1 19.867 m
+14.35 22.367 l
+S26.1 9.867 m
+23.6 13.367 l
+S34.6 47.117 m
+32.1 45.367 l
+S62.6 41.867 m
+59.85 43.367 l
+S31.6 35.617 m
+27.85 36.367 l
+S36.35 26.117 m
+34.35 24.617 l
+S33.85 14.117 m
+31.1 16.367 l
+S37.1 9.867 m
+35.1 11.117 l
+S34.35 20.867 m
+31.35 20.867 l
+S44.6 56.617 m
+42.1 54.867 l
+S47.35 51.367 m
+44.35 51.367 l
+S44.1 43.867 m
+41.35 45.617 l
+S43.35 33.117 m
+42.6 30.617 l
+S43.85 23.617 m
+41.1 25.867 l
+S44.35 15.617 m
+42.35 16.867 l
+S67.823 31.1 m
+64.823 31.1 l
+S27.1 32.617 m
+29.6 30.867 l
+S31.85 55.117 m
+34.85 55.117 l
+S19.6 40.867 m
+22.1 39.117 l
+S16.85 35.617 m
+19.85 35.617 l
+S20.1 28.117 m
+22.85 29.867 l
+S52.1 42.617 m
+54.484 44.178 l
+S52.437 50.146 m
+54.821 48.325 l
+S59.572 54.133 m
+59.35 51.117 l
+S50.185 10.055 m
+53.234 9.928 l
+S51.187 15.896 m
+53.571 14.075 l
+S58.322 19.883 m
+59.445 16.823 l
+S53.1 32.117 m
+50.6 30.367 l
+S52.85 24.617 m
+49.6 25.617 l
+S61.85 9.117 m
+59.1 10.867 l
+S69.35 34.617 m
+66.6 36.367 l
+S67.1 23.617 m
+65.1 22.117 l
+S24.435 46.055 m
+27.484 45.928 l
+S25.437 51.896 m
+27.821 50.075 l
+S62.6 47.117 m
+65.321 46.575 l
+S19.85 19.867 m
+20.35 16.617 l
+S21.85 21.867 m
+25.35 22.617 l
+S37.6 62.867 m
+41.6 62.117 l
+S38.323 42.1 m
+38.823 38.6 l
+S69.35 52.617 m
+66.85 53.867 l
+S14.85 62.117 m
+18.1 59.367 l
+S9.6 46.117 m
+7.1 44.367 l
+S20.6 51.617 m
+18.6 50.117 l
+S46.141 70.811 m
+47.994 73.492 l
+S69.391 40.561 m
+71.244 43.242 l
+S38.641 49.311 m
+39.35 52.117 l
+S25.141 16.811 m
+25.85 19.617 l
+S36.6 32.867 m
+34.6 31.367 l
+S6.1 68.617 m
+2.85 67.867 l
+S4.85 56.867 m
+2.35 55.117 l
+S7.6 51.617 m
+4.6 51.617 l
+S6.6 35.867 m
+4.6 34.367 l
+S6.1 12.867 m
+1.85 13.617 l
+S4.6 30.617 m
+1.6 30.617 l
+S72.814 74.769 m
+73.928 77.729 l
+S67.976 74.633 m
+67.35 77.909 l
+S52.762 73.779 m
+52.876 76.776 l
+S37.062 75.375 m
+35.639 77.43 l
+S20.795 75.242 m
+22.12 77.193 l
+S9.736 73.91 m
+8.073 76.225 l
+S10.1 23.617 m
+6.35 24.367 l
+S73.217 18.276 m
+71.323 21.1 l
+S28.823 39.6 m
+29.505 42.389 l
+S49.6 38.617 m
+47.6 37.117 l
+S60.323 73.6 m
+62.323 76.6 l
+S60.323 1.6 m
+62.323 4.6 l
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:1 D
+0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 3.6 w 4 M []0 d%AI3_Note:0 D
+0 XR
+8.2 8.2 m
+80.7 8.2 L
+S8.2 22.6001 m
+80.7 22.6001 L
+S8.2 37.0002 m
+80.7 37.0002 L
+S8.2 51.4 m
+80.7 51.4 L
+S8.2 65.8001 m
+80.7 65.8001 L
+S8.2 15.4 m
+80.7 15.4 L
+S8.2 29.8001 m
+80.7 29.8001 L
+S8.2 44.2 m
+80.7 44.2 L
+S8.2 58.6001 m
+80.7 58.6001 L
+S8.2 73.0002 m
+80.7 73.0002 L
+S%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7844.75 8611 m
+-7844.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7844.75 8611 L
+nu0 Ap
+0 O
+1 g
+-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+F-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+F-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+F-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+F-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+F-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+F-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+F-7854.7817 8589.125 m
+-7860.9009 8587.6162 -7864.7817 8589.125 V
+-7868.877 8587.6484 -7874.7817 8589.125 V
+-7879.7446 8587.4492 -7884.7817 8589.125 V
+-7890.7969 8587.5742 -7894.7817 8589.125 V
+-7894.7817 8608.8096 L
+-7891.6958 8609.7842 -7888.2969 8609.9912 -7884.3799 8608.9082 C
+-7878.2134 8610.4912 -7874.4634 8608.9082 V
+-7869.4634 8610.4912 -7864.3799 8608.8242 V
+-7860.0474 8610.4082 -7854.3799 8608.9082 V
+-7848.8799 8610.3242 -7844.7817 8609.125 V
+-7844.7817 8589.4404 L
+-7847.5254 8588.4287 -7850.6514 8587.9287 -7854.7817 8589.125 C
+f0 R
+0 G
+1 J 1 j 0.5 w-7874.75 8609 m
+-7882.54 8610.9473 -7888.813 8607.585 -7894.75 8603.0488 C
+S-7864.75 8609 m
+-7876.96 8612.0527 -7885.4434 8602.0605 -7894.75 8594.9512 C
+S-7854.75 8609 m
+-7871.1279 8613.0947 -7880.8008 8593.7227 -7894.75 8589.3154 C
+S-7894.75 8589 m
+-7874.75 8584 -7864.75 8614 -7844.75 8609 C
+S-7884.75 8589 m
+-7868.3721 8584.9053 -7858.6992 8604.2773 -7844.75 8608.6846 C
+S-7874.75 8589 m
+-7862.54 8585.9473 -7854.0566 8595.9395 -7844.75 8603.0488 C
+S-7864.75 8589 m
+-7856.96 8587.0527 -7850.687 8590.415 -7844.75 8594.9512 C
+S-7854.75 8589 m
+-7851.1279 8588.0947 -7847.835 8588.3408 -7844.75 8589.3154 C
+S-7884.75 8609 m
+-7888.3721 8609.9053 -7891.665 8609.6592 -7894.75 8608.6846 C
+SUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7829.187 8610 L
+-7829.187 8545.9023 L
+-7894 8545.9023 L
+-7894 8610 L
+nu0 O
+0 g
+-7859.6978 8568.4297 m
+-7861.6094 8545.9023 L
+-7863.5215 8568.4297 L
+-7862.9033 8568.3066 -7862.2642 8568.2402 -7861.6094 8568.2402 c
+-7860.9551 8568.2402 -7860.3159 8568.3066 -7859.6978 8568.4297 C
+f-7871.2402 8576.3975 m
+-7894 8578.3301 L
+-7871.1138 8580.2734 L
+-7871.2856 8579.5469 -7871.3848 8578.793 -7871.3848 8578.0156 c
+-7871.3848 8577.4629 -7871.3281 8576.9248 -7871.2402 8576.3975 C
+f-7866.519 8569.5723 m
+-7880.1626 8560.8047 L
+-7870.2153 8573.377 L
+-7869.3574 8571.791 -7868.0718 8570.4766 -7866.519 8569.5723 C
+f-7863.481 8587.6074 m
+-7861.5786 8610 L
+-7859.6768 8587.5967 L
+-7860.3018 8587.7227 -7860.9473 8587.791 -7861.6094 8587.791 c
+-7862.25 8587.791 -7862.873 8587.7246 -7863.481 8587.6074 C
+f-7851.9609 8579.5068 m
+-7829.187 8577.5732 L
+-7852.083 8575.6289 L
+-7852.083 8575.8506 L
+-7851.9258 8576.5488 -7851.834 8577.2695 -7851.834 8578.0156 c
+-7851.834 8578.5234 -7851.8848 8579.0195 -7851.9609 8579.5068 C
+f-7870.1138 8582.8262 m
+-7880.1641 8595.5293 L
+-7866.2778 8586.6055 L
+-7867.8823 8585.7305 -7869.2114 8584.416 -7870.1138 8582.8262 C
+f-7852.9961 8573.3945 m
+-7842.875 8560.6055 L
+-7856.7666 8569.5313 L
+-7855.1768 8570.4414 -7853.8633 8571.7793 -7852.9961 8573.3945 C
+f-7856.6895 8586.4512 m
+-7842.873 8595.3281 L
+-7852.9658 8582.5732 L
+-7853.8198 8584.1895 -7855.1152 8585.5313 -7856.6895 8586.4512 C
+f-7852.8887 8582.6133 m
+-7852.3862 8581.6641 -7852.043 8580.6211 -7851.875 8579.5195 c
+-7851.7993 8579.0293 -7851.748 8578.5273 -7851.748 8578.0156 c
+-7851.748 8577.2637 -7851.8398 8576.5352 -7851.998 8575.8311 c
+-7852.1958 8574.957 -7852.5049 8574.124 -7852.918 8573.3545 c
+-7853.7954 8571.7246 -7855.1191 8570.374 -7856.7241 8569.4561 c
+-7857.6294 8568.9375 -7858.6226 8568.5537 -7859.6802 8568.3457 c
+-7860.3047 8568.2207 -7860.9497 8568.1523 -7861.6094 8568.1523 c
+-7862.2695 8568.1523 -7862.915 8568.2207 -7863.5391 8568.3457 c
+-7864.623 8568.5605 -7865.6382 8568.957 -7866.5625 8569.4961 c
+-7868.1313 8570.4102 -7869.4282 8571.7363 -7870.291 8573.335 c
+-7870.7969 8574.2695 -7871.145 8575.2969 -7871.3262 8576.3828 c
+-7871.415 8576.916 -7871.4727 8577.459 -7871.4727 8578.0156 c
+-7871.4727 8578.8008 -7871.3711 8579.5605 -7871.1978 8580.293 c
+-7870.981 8581.207 -7870.6406 8582.0732 -7870.187 8582.8701 c
+-7869.2793 8584.4727 -7867.939 8585.8008 -7866.3174 8586.6826 c
+-7865.4487 8587.1553 -7864.5 8587.498 -7863.4961 8587.6934 c
+-7862.8848 8587.8115 -7862.2554 8587.8779 -7861.6094 8587.8779 c
+-7860.9414 8587.8779 -7860.29 8587.8086 -7859.6602 8587.6826 c
+-7858.5786 8587.4668 -7857.5664 8587.0654 -7856.6455 8586.5273 c
+-7855.0566 8585.5977 -7853.751 8584.2441 -7852.8887 8582.6133 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7884.75 8611 m
+-7884.75 8587 L
+-7894.75 8587 L
+-7894.75 8611 L
+-7884.75 8611 L
+nuu0 Ap
+0 O
+1 g
+-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 c
+-7887.897 8590.9736 -7891.0898 8589 -7894.75 8589 C
+-7894.75 8609 L
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 c
+-7891.9121 8608.7754 -7890.1807 8608.0645 -7888.7441 8606.9824 c
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 c
+f0 R
+0 G
+1 J 1 j 0.5 w-7894.75 8589.3174 m
+-7891.7207 8590.2744 -7888.8926 8591.9326 -7886.1543 8593.9072 C
+S-7894.75 8594.9512 m
+-7891.5991 8597.3564 -7888.543 8600.0869 -7885.4058 8602.5361 C
+S-7888.7441 8606.9824 m
+-7890.8105 8605.8916 -7892.7993 8604.5342 -7894.75 8603.043 C
+S-7893.8018 8608.9521 m
+-7894.1191 8608.8682 -7894.4375 8608.7852 -7894.75 8608.6865 C
+S-7888.7441 8606.9824 m
+-7890.1807 8608.0645 -7891.9121 8608.7744 -7893.8018 8608.9521 C
+S-7885.4058 8602.5361 m
+-7884.9878 8601.4355 -7884.75 8600.2471 -7884.75 8599 c
+-7884.75 8597.1377 -7885.2681 8595.4004 -7886.1543 8593.9072 C
+S-7894.75 8609 m
+-7894.4297 8609 -7894.1143 8608.9814 -7893.8018 8608.9521 C
+S-7888.7441 8606.9824 m
+-7887.2471 8605.8545 -7886.0801 8604.3184 -7885.4058 8602.5361 C
+S-7886.1543 8593.9072 m
+-7887.8975 8590.9736 -7891.0898 8589 -7894.75 8589 C
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7736.3994 8611 m
+-7736.3994 8597.4199 L
+-7895 8597.4199 L
+-7895 8611 L
+-7736.3994 8611 L
+nuu0 O
+0.285 0.228 0.171 0 k
+-7751.0786 8609.4844 m
+-7751.043 8610.6895 L
+-7737.5103 8611.5176 -7736.8418 8610.2822 v
+-7736.7441 8610.1016 -7736.647 8609.7148 -7736.561 8609.1934 C
+-7738.584 8609.8242 -7748.291 8609.5713 -7751.0786 8609.4844 C
+f0.44 0.352 0.264 0 k
+-7751.4063 8598.0234 m
+-7751.3711 8599.2676 L
+-7748.4912 8599.0488 -7738.1914 8598.3164 -7736.543 8598.8652 C
+-7736.7031 8598.2188 -7736.9199 8597.7646 -7737.2046 8597.6152 c
+-7738.8306 8596.7656 -7751.4063 8598.0234 Y
+f0.145 0.116 0.087 0 k
+-7751.3711 8599.2676 m
+-7751.0786 8609.4844 L
+-7748.291 8609.5713 -7738.584 8609.8242 -7736.561 8609.1934 C
+-7736.1519 8606.7773 -7735.9258 8601.3604 -7736.543 8598.8652 C
+-7738.1914 8598.3164 -7748.4912 8599.0488 -7751.3711 8599.2676 C
+fUu0.155 0.124 0.093 0 k
+-7776.9375 8603.2734 m
+-7775.897 8603.6563 L
+-7757.0728 8599.1465 L
+-7757.481 8598.3145 L
+-7776.3633 8600.7246 L
+-7777.252 8601.0059 L
+-7777.6504 8600.8936 -7778.1934 8600.8242 V
+-7777.6094 8601.2373 -7777.1426 8602.1406 -7776.9375 8603.2734 C
+fu0.085 0.068 0.051 0 k
+-7781.7993 8607.666 m
+-7782.5977 8607.7217 -7779.749 8607.6641 Y
+-7780.3481 8607.0176 -7780.771 8605.8203 -7780.8105 8604.4375 c
+-7780.8169 8604.2246 -7780.8105 8604.0176 -7780.7993 8603.8135 C
+-7781.041 8603.707 -7781.0918 8603.7734 -7781.6289 8603.5645 C
+-7781 8607.6113 -7781.7993 8607.666 v
+f0.305 0.244 0.183 0 k
+-7780.3442 8600.8672 m
+-7780.5527 8600.8105 -7780.4937 8602.9307 Y
+-7779.4785 8603.7588 L
+-7777.8359 8602.9434 L
+-7776.9375 8603.2734 L
+-7777.1426 8602.1406 -7777.6094 8601.2373 -7778.1934 8600.8242 C
+-7778.6094 8600.7715 -7779.874 8600.7998 -7780.3442 8600.8672 C
+fU0.115 0.092 0.069 0 k
+-7776.9375 8603.2734 m
+-7777.8359 8602.9434 L
+-7779.4785 8603.7588 L
+-7780.4937 8602.9307 L
+-7780.793 8603.708 -7780.7993 8603.8135 V
+-7779.5137 8604.3789 -7778.1831 8604.7402 -7776.8398 8604.9258 C
+-7776.79 8604.7275 -7776.7842 8604.543 -7776.79 8604.3369 c
+-7776.7998 8603.9717 -7776.8218 8603.6182 -7776.9375 8603.2734 C
+f0.41 0.328 0.246 0 k
+-7757.4512 8599.3965 m
+-7759.377 8600.6426 -7768.3862 8606.0986 -7776.8398 8604.9258 C
+-7776.9038 8606.0928 -7777.248 8607.0908 -7777.75 8607.6631 C
+-7777.1895 8607.6621 L
+-7756.7402 8610.7559 L
+-7757.0366 8600.4258 L
+-7757.0728 8599.1465 L
+-7757.2046 8599.2373 -7757.4512 8599.3965 v
+f0.395 0.316 0.237 0 k
+-7780.8105 8604.4375 m
+-7780.771 8605.8203 -7780.3481 8607.0176 -7779.749 8607.6641 C
+-7777.6807 8607.6631 L
+-7777.1782 8607.0908 -7776.8218 8606.0713 -7776.8398 8604.9258 C
+-7778.1831 8604.7402 -7779.5137 8604.3789 -7780.7993 8603.8135 C
+-7780.8105 8604.0176 -7780.8169 8604.2246 -7780.8105 8604.4375 c
+fUu0 0 0 0.11 k
+-7751.2642 8598.2012 m
+-7750.2407 8598.0352 L
+-7751.2642 8598.2012 L
+-7751.2642 8598.2012 L
+f0 0 0 0.34 k
+-7757.481 8598.3145 m
+-7757.0728 8599.1465 L
+-7755.6714 8598.918 L
+-7754.5234 8598.7314 L
+-7752.6758 8598.4307 L
+-7751.2642 8598.2012 L
+-7750.2407 8598.0352 L
+-7750.2954 8597.7168 -7750.3672 8597.498 -7750.4648 8597.4199 C
+-7757.481 8598.3145 L
+f0 0 0 0.32 k
+-7755.8042 8603.207 m
+-7756.041 8610.8613 L
+-7750.7144 8611 L
+-7749.7266 8607.5146 -7750.1816 8603.1543 V
+-7755.8042 8603.207 L
+fU0.025 0.02 0.015 0 k
+-7749.3223 8600.3848 m
+-7746.373 8600.9199 -7743.2402 8601.1602 -7740.3159 8600.3613 c
+-7740.2856 8600.3496 -7740.2754 8600.3184 -7740.2871 8600.2969 c
+-7740.2881 8600.2656 -7740.3198 8600.2559 -7740.3418 8600.2559 c
+-7743.2422 8601.0645 -7746.375 8600.8242 -7749.3042 8600.2783 c
+-7749.3262 8600.2793 -7749.3574 8600.291 -7749.3672 8600.3223 c
+-7749.3662 8600.3438 -7749.355 8600.375 -7749.3223 8600.3848 c
+-7749.3223 8600.3848 l
+f-7747.8374 8599.3076 m
+-7747.7295 8599.3789 -7747.6313 8599.4941 -7747.5234 8599.502 c
+-7743.7886 8599.832 -7740.1631 8599.7813 -7736.4746 8599.6641 c
+-7736.4526 8599.6641 -7736.4209 8599.6426 -7736.4214 8599.6211 c
+-7736.4214 8599.5879 -7736.4551 8599.5684 -7736.4766 8599.5684 c
+-7739.3223 8599.6816 -7742.1401 8599.6992 -7745.0039 8599.5352 c
+-7745.9336 8599.4766 -7746.9082 8599.7402 -7747.7778 8599.2207 c
+-7747.7993 8599.2109 -7747.8306 8599.2109 -7747.8506 8599.2334 c
+-7747.8618 8599.2559 -7747.8594 8599.2871 -7747.8374 8599.3076 c
+-7747.8374 8599.3076 l
+f-7743.373 8601.3672 m
+-7741.5098 8602.6797 -7739.3022 8603.374 -7737.1001 8603.8867 c
+-7737.0679 8603.8965 -7737.0474 8603.8848 -7737.0366 8603.8535 c
+-7737.0273 8603.8203 -7737.0488 8603.8008 -7737.0703 8603.79 c
+-7739.2617 8603.2656 -7741.459 8602.6035 -7743.3105 8601.2803 c
+-7743.3433 8601.2598 -7743.375 8601.2715 -7743.3848 8601.293 c
+-7743.4058 8601.3145 -7743.3945 8601.3457 -7743.373 8601.3672 c
+-7743.373 8601.3672 l
+f-7748.9321 8608.0566 m
+-7746.7295 8608.5703 -7744.5298 8609.0303 -7742.2798 8609.2754 c
+-7742.2598 8609.2852 -7742.229 8609.2637 -7742.229 8609.2422 c
+-7742.2183 8609.209 -7742.2407 8609.1777 -7742.2729 8609.1787 c
+-7744.5122 8608.8809 -7746.7305 8608.5176 -7748.9126 8607.9502 c
+-7748.9351 8607.9512 -7748.9673 8607.9629 -7748.9766 8607.9941 c
+-7748.9751 8608.0156 -7748.9648 8608.0479 -7748.9321 8608.0566 c
+-7748.9321 8608.0566 l
+f-7748.439 8607.3604 m
+-7746.3457 8608.1973 -7744.1016 8607.9297 -7741.9023 8607.9629 c
+-7741.8706 8607.9609 -7741.8496 8607.9395 -7741.8506 8607.9082 c
+-7741.8521 8607.875 -7741.873 8607.8555 -7741.8945 8607.8555 c
+-7744.0928 8607.8438 -7746.3374 8608.0996 -7748.4209 8607.2529 c
+-7748.4434 8607.2539 -7748.4746 8607.2656 -7748.4834 8607.2969 c
+-7748.4834 8607.3184 -7748.4722 8607.3506 -7748.439 8607.3604 c
+-7748.439 8607.3604 l
+f-7747.707 8608.7051 m
+-7746.3833 8608.752 -7745.1504 8608.5469 -7743.8271 8608.209 c
+-7743.3594 8608.0996 -7742.9199 8608.2266 -7742.4609 8608.2129 c
+-7741.897 8608.1973 l
+-7741.874 8608.1963 -7741.8633 8608.1855 -7741.8535 8608.1738 c
+-7741.834 8608.1523 -7741.8442 8608.1211 -7741.8662 8608.0996 c
+-7742.0625 8607.9453 l
+-7742.0742 8607.9453 -7742.085 8607.9355 -7742.0962 8607.9355 c
+-7742.5 8607.9473 l
+-7743.9551 8608.1914 -7745.457 8608.6719 -7746.8926 8608.0742 c
+-7746.9258 8608.0645 -7746.957 8608.0859 -7746.9673 8608.1074 c
+-7746.9673 8608.1396 -7746.9551 8608.1602 -7746.9336 8608.1709 c
+-7745.647 8608.6992 -7744.1714 8608.4756 -7742.8818 8608.0547 c
+-7742.0918 8608.043 L
+-7742.124 8608.0332 L
+-7741.9282 8608.1875 L
+-7741.8984 8608.0898 L
+-7742.4639 8608.1064 l
+-7742.9321 8608.1406 -7743.3848 8607.9834 -7743.8398 8608.1035 c
+-7745.1543 8608.4609 -7746.3975 8608.625 -7747.71 8608.5986 c
+-7747.7422 8608.5996 -7747.7642 8608.6211 -7747.7617 8608.6533 c
+-7747.7617 8608.6855 -7747.7402 8608.7061 -7747.707 8608.7051 c
+-7747.707 8608.7051 l
+f-7748.5718 8609.0605 m
+-7745.8711 8610.2207 -7742.9023 8609.5703 -7740.1279 8609.1816 c
+-7739.7832 8609.2891 l
+-7739.7617 8609.2988 -7739.7417 8609.2871 -7739.7207 8609.2656 c
+-7739.71 8609.2441 -7739.7217 8609.2129 -7739.7422 8609.2021 c
+-7740.0801 8609.0098 l
+-7742.7754 8608.3926 -7745.5391 8608.7813 -7748.271 8608.7852 c
+-7748.3022 8608.7871 -7748.3232 8608.8086 -7748.3223 8608.8398 c
+-7748.3198 8608.8721 -7748.2983 8608.8926 -7748.2681 8608.8926 c
+-7745.6738 8608.9355 -7743.0303 8608.4434 -7740.4727 8609.0742 c
+-7739.7954 8609.2891 L
+-7739.7534 8609.1914 L
+-7740.1406 8609.0859 l
+-7742.9058 8609.4424 -7745.8418 8610.1348 -7748.5313 8608.9746 c
+-7748.5537 8608.9648 -7748.585 8608.9648 -7748.5962 8608.998 c
+-7748.6055 8609.0195 -7748.605 8609.0508 -7748.5718 8609.0605 c
+-7748.5718 8609.0605 l
+f-7745.6895 8602.3945 m
+-7744.3945 8602.9004 -7742.9834 8602.6465 -7741.6802 8602.3438 c
+-7741.647 8602.3418 -7741.6367 8602.3203 -7741.6382 8602.2891 c
+-7741.6504 8602.2568 -7741.6714 8602.2461 -7741.7031 8602.248 c
+-7742.998 8602.5303 -7744.377 8602.8154 -7745.6504 8602.2969 c
+-7745.6826 8602.2871 -7745.7144 8602.2988 -7745.7246 8602.3311 c
+-7745.7222 8602.3525 -7745.7114 8602.3848 -7745.6895 8602.3945 c
+-7745.6895 8602.3945 l
+f-7746.1401 8604.2207 m
+-7744.2266 8604.6895 -7742.3145 8605.1035 -7740.355 8605.3242 c
+-7740.3242 8605.334 -7740.3022 8605.3125 -7740.293 8605.2803 c
+-7740.2954 8605.2598 -7740.3159 8605.2285 -7740.3374 8605.2285 c
+-7742.2959 8605.0078 -7744.209 8604.582 -7746.1206 8604.1133 c
+-7746.1426 8604.1152 -7746.1738 8604.126 -7746.1831 8604.1582 c
+-7746.1831 8604.1797 -7746.1719 8604.2109 -7746.1401 8604.2207 c
+-7746.1401 8604.2207 l
+f-7746.9336 8606.6348 m
+-7744.499 8607.4609 -7741.8647 8607.0547 -7739.3457 8607.0879 c
+-7739.313 8607.0879 -7739.293 8607.0664 -7739.293 8607.0332 c
+-7739.2954 8607.0117 -7739.3159 8606.9922 -7739.3481 8606.9922 c
+-7741.8574 8606.916 -7744.481 8607.3848 -7746.8945 8606.5264 c
+-7746.9282 8606.5273 -7746.959 8606.5391 -7746.9688 8606.5605 c
+-7746.9678 8606.5918 -7746.9561 8606.624 -7746.9336 8606.6348 c
+-7746.9336 8606.6348 l
+f-7742.0542 8607.8496 m
+-7740.6582 8608.5449 -7739.0503 8608.4033 -7737.5342 8608.4668 c
+-7737.502 8608.4648 -7737.4824 8608.4434 -7737.4824 8608.4121 c
+-7737.4834 8608.3906 -7737.5054 8608.3594 -7737.5366 8608.3594 c
+-7739.0137 8608.2207 -7740.6489 8608.5234 -7742.0039 8607.7617 c
+-7742.0366 8607.7529 -7742.0679 8607.7637 -7742.0786 8607.7861 c
+-7742.0879 8607.8076 -7742.0767 8607.8398 -7742.0542 8607.8496 c
+-7742.0542 8607.8496 l
+f-7741.3418 8604.4248 m
+-7740.3926 8604.3975 -7739.4336 8604.3701 -7738.4839 8604.3428 c
+-7738.4526 8604.3418 -7738.4312 8604.3203 -7738.4336 8604.2881 c
+-7738.4336 8604.2559 -7738.4551 8604.2354 -7738.4878 8604.2363 c
+-7739.437 8604.2637 -7740.397 8604.291 -7741.3457 8604.3184 c
+-7741.377 8604.3184 -7741.3975 8604.3418 -7741.3975 8604.373 c
+-7741.397 8604.4043 -7741.374 8604.4258 -7741.3418 8604.4248 c
+-7741.3418 8604.4248 l
+f-7739.1592 8602.0361 m
+-7738.6895 8602.0645 -7738.209 8602.0723 -7737.7383 8602.0918 c
+-7737.7168 8602.0908 -7737.6855 8602.0684 -7737.6865 8602.0371 c
+-7737.687 8602.0039 -7737.71 8601.9844 -7737.7417 8601.9844 c
+-7738.2114 8601.9873 -7738.6816 8601.9375 -7739.1514 8601.9395 c
+-7739.1831 8601.9297 -7739.2031 8601.9512 -7739.2134 8601.9844 c
+-7739.2129 8602.0156 -7739.1914 8602.0371 -7739.1592 8602.0361 c
+-7739.1592 8602.0361 l
+f-7746.9702 8604.2344 m
+-7746.5688 8604.5107 -7746.125 8604.6797 -7745.645 8604.751 c
+-7745.6113 8604.7607 -7745.5918 8604.7383 -7745.5806 8604.7168 c
+-7745.5703 8604.6855 -7745.5928 8604.6543 -7745.6152 8604.6543 c
+-7746.0854 8604.5723 -7746.5176 8604.4023 -7746.9209 8604.1475 c
+-7746.9521 8604.1377 -7746.9849 8604.1387 -7746.9946 8604.1709 c
+-7747.0039 8604.1934 -7746.9922 8604.2246 -7746.9702 8604.2344 c
+-7746.9702 8604.2344 l
+f-7748.1904 8610.085 m
+-7745.7344 8610.5273 -7743.2983 8611.001 -7740.7993 8610.7266 c
+-7740.7778 8610.7266 -7740.7568 8610.7041 -7740.7578 8610.6719 c
+-7740.7578 8610.6406 -7740.7798 8610.6191 -7740.8022 8610.6191 c
+-7743.291 8610.873 -7745.7344 8610.4844 -7748.1719 8609.9775 c
+-7748.1934 8609.9785 -7748.2256 8609.9902 -7748.2344 8610.0215 c
+-7748.2344 8610.043 -7748.2222 8610.0752 -7748.1904 8610.085 c
+-7748.1904 8610.085 l
+f0.195 0.156 0.117 0 k
+-7748.166 8598.6445 m
+-7745.7969 8598.2676 -7743.4058 8598.3477 -7741.0298 8598.5898 c
+-7740.998 8598.5879 -7740.9766 8598.5664 -7740.9766 8598.5352 c
+-7740.9785 8598.5137 -7741 8598.4824 -7741.0215 8598.4824 c
+-7743.4082 8598.2422 -7745.791 8598.1602 -7748.1694 8598.5391 c
+-7748.2026 8598.5391 -7748.2222 8598.5605 -7748.2217 8598.5938 c
+-7748.2207 8598.625 -7748.1992 8598.6465 -7748.166 8598.6445 c
+-7748.166 8598.6445 l
+f0.335 0.268 0.201 0 k
+-7747.4351 8598.1113 m
+-7744.9282 8598.1152 -7742.4146 8598.2773 -7739.918 8597.8965 c
+-7739.8862 8597.8945 -7739.8647 8597.873 -7739.8662 8597.8418 c
+-7739.8672 8597.8086 -7739.8896 8597.7891 -7739.9209 8597.7891 c
+-7742.418 8598.1699 -7744.9297 8598.0293 -7747.4375 8598.0059 c
+-7747.46 8598.0059 -7747.481 8598.0273 -7747.4785 8598.0596 c
+-7747.4785 8598.0918 -7747.457 8598.1123 -7747.4351 8598.1113 c
+-7747.4351 8598.1113 l
+f0.205 0.164 0.123 0 k
+-7748.9766 8598.3262 m
+-7747.5039 8598.668 -7746.0078 8598.4023 -7744.5391 8598.2207 c
+-7744.5078 8598.2207 -7744.4873 8598.1973 -7744.499 8598.166 c
+-7744.5 8598.1348 -7744.5215 8598.1133 -7744.5537 8598.125 c
+-7746.0103 8598.2842 -7747.4961 8598.583 -7748.9473 8598.2188 c
+-7748.9785 8598.2207 -7749.0103 8598.2324 -7749.0098 8598.2637 c
+-7749.019 8598.2852 -7748.998 8598.3164 -7748.9766 8598.3262 c
+-7748.9766 8598.3262 l
+f-7742.3535 8597.7949 m
+-7741.1978 8597.9219 -7740.0273 8597.8145 -7738.8926 8597.5898 c
+-7738.8711 8597.5781 -7738.8506 8597.5566 -7738.8618 8597.5244 c
+-7738.8623 8597.5029 -7738.8945 8597.4824 -7738.916 8597.4941 c
+-7740.0503 8597.7402 -7741.1914 8597.7939 -7742.3462 8597.6885 c
+-7742.3794 8597.6895 -7742.3984 8597.7109 -7742.4087 8597.7324 c
+-7742.4082 8597.7646 -7742.3862 8597.7852 -7742.3535 8597.7949 c
+-7742.3535 8597.7949 l
+f0.335 0.268 0.201 0 k
+-7749.2681 8600.4473 m
+-7747.9214 8601.1885 -7746.3066 8600.5977 -7744.855 8600.6416 c
+-7744.8223 8600.6406 -7744.8022 8600.6191 -7744.8022 8600.5859 c
+-7744.8042 8600.5654 -7744.8262 8600.5449 -7744.8574 8600.5449 c
+-7746.2886 8600.4902 -7747.8823 8601.0801 -7749.2168 8600.3506 c
+-7749.2383 8600.3398 -7749.2695 8600.3516 -7749.291 8600.374 c
+-7749.3008 8600.3955 -7749.2886 8600.4277 -7749.2681 8600.4473 c
+-7749.2681 8600.4473 l
+f-7747.8945 8602.5645 m
+-7745.6719 8603.0449 -7743.3896 8602.6162 -7741.1504 8602.5625 c
+-7741.1177 8602.5615 -7741.0977 8602.5391 -7741.0977 8602.5078 c
+-7741.1001 8602.4863 -7741.1318 8602.4668 -7741.1519 8602.4668 c
+-7743.3833 8602.4775 -7745.6519 8602.9805 -7747.875 8602.457 c
+-7747.8975 8602.457 -7747.9287 8602.4688 -7747.9375 8602.502 c
+-7747.9375 8602.5225 -7747.9258 8602.5547 -7747.8945 8602.5645 c
+-7747.8945 8602.5645 l
+f-7742.0273 8599.1406 m
+-7740.3496 8599.9688 -7738.499 8600.502 -7736.603 8600.3613 c
+-7736.5718 8600.3613 -7736.5513 8600.3389 -7736.5527 8600.3066 c
+-7736.5527 8600.2754 -7736.5742 8600.2539 -7736.6074 8600.2559 c
+-7738.481 8600.416 -7740.3198 8599.8604 -7741.9873 8599.0547 c
+-7742.0078 8599.0449 -7742.041 8599.0449 -7742.0503 8599.0781 c
+-7742.061 8599.0996 -7742.061 8599.1309 -7742.0273 8599.1406 c
+-7742.0273 8599.1406 l
+fu0.5 0.85 1 0.45 k
+-7895 8605.9082 m
+-7895.0254 8606.4883 -7894.5664 8607.1875 -7893.167 8607.9902 C
+-7892.8521 8608.0029 -7891.3945 8608.0234 -7889.0889 8608.0488 C
+-7889.0889 8605.8223 L
+-7891.1382 8605.8457 -7893.1177 8605.8867 -7895 8605.9082 C
+f-7894.5088 8604.9688 m
+-7889.0889 8604.8447 L
+-7889.0889 8603.8145 L
+-7892.644 8603.959 L
+-7893.8145 8604.3301 -7894.5088 8604.9688 V
+f0.5 0.85 1 0.32 k
+-7889.0889 8604.8252 m
+-7894.4746 8604.9434 L
+-7894.7695 8605.2148 -7894.9849 8605.5566 -7895 8605.9277 C
+-7893.1177 8605.9063 -7891.1382 8605.8848 -7889.0889 8605.8613 C
+-7889.0889 8604.8252 L
+f0.5 0.85 1 0.45 k
+-7784.1504 8604.6172 m
+-7862.3584 8605.541 -7889.1079 8605.8418 V
+-7889.1079 8608.0488 L
+-7872.8145 8608.2324 -7813.9902 8608.707 Y
+-7779.749 8607.6641 L
+-7780.457 8604.5684 L
+-7784.1504 8604.6172 L
+f0.5 0.85 1 0.12 k
+-7889.1079 8603.8145 m
+-7889.1079 8604.8447 L
+-7780.4258 8603 L
+-7780.3833 8600.8633 L
+-7813.6553 8600.7129 L
+-7889.1079 8603.8145 L
+fu0.065 0.052 0.039 0 k
+-7757.0728 8599.1465 m
+-7757.0366 8600.4258 L
+-7757.2954 8599.1172 L
+-7775.897 8603.6563 L
+-7776.9375 8603.2734 L
+-7776.8794 8603.6055 -7776.8398 8603.957 -7776.8306 8604.3223 c
+-7776.8242 8604.5283 -7776.8281 8604.7285 -7776.8398 8604.9258 C
+-7768.3862 8606.0986 -7758.9634 8601.6719 -7757.0366 8600.4258 C
+-7756.7402 8610.7559 L
+-7756.041 8610.8613 L
+-7755.8042 8603.207 L
+-7750.1816 8603.1543 L
+-7750.0898 8601.0137 -7750.0718 8599.0215 -7750.2407 8598.0352 C
+-7757.0728 8599.1465 L
+f0.4 0.7 1 0 k
+-7780.457 8604.5879 m
+-7780.4258 8602.9805 L
+-7889.1079 8604.8252 L
+-7889.1079 8605.8613 L
+-7862.3584 8605.5605 -7780.457 8604.5879 Y
+fUU0.025 0.02 0.015 0 k
+-7744.7344 8607.0293 m
+-7744.7344 8607.0625 -7744.7129 8607.082 -7744.6802 8607.082 c
+-7741.6714 8607.1133 -7739.4214 8606.9453 -7736.415 8606.8594 C
+-7736.4087 8606.7656 L
+-7739.3262 8606.8701 -7741.7607 8607.0078 -7744.6841 8606.9746 C
+-7744.7168 8606.9766 -7744.7358 8606.998 -7744.7344 8607.0293 C
+f-7736.3994 8606.7656 m
+-7736.4082 8606.7441 L
+-7736.4087 8606.7656 L
+-7736.4063 8606.7656 -7736.4033 8606.7656 -7736.3994 8606.7656 C
+f-7740.4487 8605.4238 m
+-7741.4458 8605.292 -7742.3394 8605.7656 -7743.2114 8606.1973 C
+-7743.2441 8606.208 -7743.2534 8606.2402 -7743.2422 8606.2715 C
+-7743.2305 8606.293 -7743.1982 8606.3027 -7743.1777 8606.291 c
+-7742.3262 8605.8301 -7741.4312 8605.4199 -7740.4678 8605.5195 c
+-7739.1079 8605.6621 -7737.9038 8606.375 -7736.5254 8606.4531 C
+-7736.4463 8606.3594 L
+-7738.04 8606.2656 -7738.8647 8605.623 -7740.4487 8605.4238 c
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894.75 8587 m
+-7894.75 8611 L
+-7884.75 8611 L
+-7884.75 8587 L
+-7894.75 8587 L
+n0 Ap
+0 O
+1 g
+-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 c
+-7887.5879 8589.2256 -7889.3198 8589.9346 -7890.7559 8591.0176 c
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 c
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.2319 8602.5996 -7893.3457 8604.0918 c
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+-7884.75 8589 L
+f0 R
+0 G
+1 J 1 j 0.5 w-7884.75 8608.6816 m
+-7887.7793 8607.7256 -7890.6074 8606.0674 -7893.3457 8604.0918 C
+S-7884.75 8603.0488 m
+-7887.8999 8600.6436 -7890.957 8597.9131 -7894.0942 8595.4639 C
+S-7890.7559 8591.0176 m
+-7888.6904 8592.1084 -7886.7017 8593.4668 -7884.75 8594.957 C
+S-7885.6982 8589.0479 m
+-7885.3809 8589.1309 -7885.063 8589.2148 -7884.75 8589.3145 C
+S-7890.7559 8591.0176 m
+-7889.3193 8589.9355 -7887.5879 8589.2256 -7885.6982 8589.0479 C
+S-7894.0942 8595.4639 m
+-7894.5122 8596.5645 -7894.75 8597.7529 -7894.75 8599 c
+-7894.75 8600.8623 -7894.231 8602.5996 -7893.3457 8604.0918 C
+S-7884.75 8589 m
+-7885.0703 8589 -7885.3857 8589.0186 -7885.6982 8589.0479 C
+S-7890.7559 8591.0176 m
+-7892.2529 8592.1465 -7893.4199 8593.6816 -7894.0942 8595.4639 C
+S-7893.3457 8604.0918 m
+-7891.6025 8607.0273 -7888.4102 8609 -7884.75 8609 C
+SU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7893.9521 8608.3125 m
+-7786.7954 8608.3125 L
+-7786.7954 8594.1855 L
+-7893.9521 8594.1855 L
+-7893.9521 8608.3125 L
+nu0 O
+0 0 0 1 k
+-7892.2832 8607.623 m
+-7892.8535 8610 -7892.8184 8606.0039 V
+-7893.0479 8602.8027 L
+-7893.6167 8600.4551 L
+-7893.4502 8598.123 L
+-7891.9502 8597.4551 -7875.2832 8596.123 V
+-7868.6167 8594.7891 -7859.6167 8594.7891 V
+-7794.3936 8595.4766 -7789.4912 8596.8848 v
+-7830.3882 8594.875 -7832.9688 8595.5117 v
+-7793.8569 8597.1602 -7790.8545 8598.4316 v
+-7828.79 8596.5469 -7832.167 8598.1777 v
+-7797.249 8599.9102 -7793.021 8601.5313 v
+-7799.7217 8600.8828 -7801.5127 8601.082 v
+-7798.3896 8601.5703 l
+-7803.4194 8601.502 l
+-7806.3218 8601.1289 l
+-7798.4521 8602.2422 -7797.9033 8602.8086 v
+-7794.3154 8602.1309 -7808.5186 8602.3848 v
+-7842.1177 8598.4551 -7892.2832 8607.623 V
+f/BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w-7893.9502 8597.123 m
+-7873.667 8595.2949 -7853.9727 8594.2207 v
+-7811.1514 8594.502 -7806.5737 8594.9004 v
+-7794.1631 8595.0313 -7786.7959 8596.0273 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7831.8369 8594.4082 m
+-7835.2959 8594.0273 -7861.2607 8594.2793 Y
+-7871.627 8594.1602 -7893.9502 8597.123 Y
+S/BBAccumRotation (5.805971) XT
+-7830.9873 8597.6641 m
+-7800.3608 8598.582 -7793.6606 8599.2324 v
+S/BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7839.6201 8602.2051 m
+-7804.3706 8603.6172 -7801.4058 8604.1406 v
+S/BBAccumRotation (5.805971) XT
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7843.8921 8610 L
+-7843.8921 8553.9756 L
+-7894 8553.9756 L
+-7894 8610 L
+nu0 O
+0.1 1 1 0 k
+-7856.9014 8575.5752 m
+-7858.7178 8569.0957 -7868.8247 8572.4658 Y
+-7868.791 8572.5303 L
+-7878.8999 8569.1611 -7880.7144 8575.6396 V
+-7886.6758 8593.0068 -7881.4922 8599.7451 V
+-7874.7529 8609.3369 -7870.6055 8609.3369 V
+-7867.0103 8609.2705 L
+-7862.8638 8609.2705 -7856.125 8599.6816 Y
+-7850.9409 8592.9424 -7856.9014 8575.5752 Y
+fu0 0 0 1 k
+-7861.3926 8553.9756 m
+-7862.1167 8555.4199 -7862.9238 8556.4756 V
+-7862.4058 8556.0635 -7861.5151 8555.1924 -7861.3926 8553.9756 C
+f-7875.064 8556.4854 m
+-7875.8711 8555.4307 -7876.5942 8553.9863 Y
+-7876.4727 8555.2021 -7875.582 8556.0732 -7875.064 8556.4854 C
+fU0 0.61 0.74 0 k
+-7860.5977 8578.4609 m
+-7861.9038 8573.7959 -7869.1816 8576.2217 Y
+-7869.1567 8576.2686 L
+-7876.436 8573.8428 -7877.7417 8578.5078 V
+-7882.0337 8591.0117 -7878.3018 8595.8633 V
+-7873.4487 8602.7686 -7870.4634 8602.7686 V
+-7867.875 8602.7227 L
+-7864.8887 8602.7227 -7860.0366 8595.8174 Y
+-7856.3042 8590.9639 -7860.5977 8578.4609 Y
+fu1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7864.6226 8581.2754 m
+-7863.813 8581.2754 -7863.1558 8580.6182 -7863.1558 8579.8096 c
+-7863.1558 8579 -7863.813 8578.3428 -7864.6226 8578.3428 c
+-7865.4321 8578.3428 -7866.0889 8579 -7866.0889 8579.8096 c
+-7866.0889 8580.6182 -7865.4321 8581.2754 -7864.6226 8581.2754 c
+b-7864.3638 8592.9971 m
+-7863.0806 8592.9971 -7862.0415 8592.1201 -7862.0415 8591.042 c
+-7862.0415 8589.9619 -7863.0806 8589.0869 -7864.3638 8589.0869 c
+-7865.645 8589.0869 -7866.6846 8589.9619 -7866.6846 8591.042 c
+-7866.6846 8592.1201 -7865.645 8592.9971 -7864.3638 8592.9971 c
+b-7863.834 8604.7861 m
+-7862.2817 8604.7861 -7861.0239 8604.1299 -7861.0239 8603.3213 c
+-7861.0239 8602.5117 -7862.2817 8601.8545 -7863.834 8601.8545 c
+-7865.3862 8601.8545 -7866.645 8602.5117 -7866.645 8603.3213 c
+-7866.645 8604.1299 -7865.3862 8604.7861 -7863.834 8604.7861 c
+b-7859.6104 8576.5264 m
+-7858.8687 8576.5264 -7858.2671 8575.8154 -7858.2671 8574.9365 c
+-7858.2671 8574.0596 -7858.8687 8573.3477 -7859.6104 8573.3477 c
+-7860.353 8573.3477 -7860.9546 8574.0596 -7860.9546 8574.9365 c
+-7860.9546 8575.8154 -7860.353 8576.5264 -7859.6104 8576.5264 c
+b-7858.0034 8598.083 m
+-7858.8818 8597.7354 -7859.1494 8596.335 -7858.603 8594.9541 c
+-7858.0566 8593.5752 -7856.9014 8592.7363 -7856.0234 8593.085 c
+-7855.145 8593.4326 -7854.877 8594.833 -7855.4233 8596.2139 c
+-7855.9702 8597.5947 -7857.125 8598.4316 -7858.0034 8598.083 c
+bu-7873.0566 8581.1592 m
+-7873.8662 8581.1592 -7874.5239 8580.502 -7874.5239 8579.6934 c
+-7874.5239 8578.8828 -7873.8662 8578.2266 -7873.0566 8578.2266 c
+-7872.248 8578.2266 -7871.5913 8578.8828 -7871.5913 8579.6934 c
+-7871.5913 8580.502 -7872.248 8581.1592 -7873.0566 8581.1592 c
+b-7873.3159 8592.8799 m
+-7874.5991 8592.8799 -7875.6382 8592.0049 -7875.6382 8590.9248 c
+-7875.6382 8589.8447 -7874.5991 8588.9697 -7873.3159 8588.9697 c
+-7872.0342 8588.9697 -7870.9951 8589.8447 -7870.9951 8590.9248 c
+-7870.9951 8592.0049 -7872.0342 8592.8799 -7873.3159 8592.8799 c
+b-7873.8457 8604.6709 m
+-7875.3975 8604.6709 -7876.6558 8604.0146 -7876.6558 8603.2041 c
+-7876.6558 8602.3936 -7875.3975 8601.7383 -7873.8457 8601.7383 c
+-7872.293 8601.7383 -7871.0352 8602.3936 -7871.0352 8603.2041 c
+-7871.0352 8604.0146 -7872.293 8604.6709 -7873.8457 8604.6709 c
+b-7878.0679 8576.4092 m
+-7878.811 8576.4092 -7879.4121 8575.6982 -7879.4121 8574.8213 c
+-7879.4121 8573.9443 -7878.811 8573.2334 -7878.0679 8573.2334 c
+-7877.3262 8573.2334 -7876.7241 8573.9443 -7876.7241 8574.8213 c
+-7876.7241 8575.6982 -7877.3262 8576.4092 -7878.0679 8576.4092 c
+b-7879.6758 8597.9678 m
+-7878.7983 8597.6201 -7878.5298 8596.2188 -7879.0762 8594.8379 c
+-7879.6226 8593.457 -7880.7778 8592.6201 -7881.6558 8592.9678 c
+-7882.5342 8593.3164 -7882.8032 8594.7178 -7882.2568 8596.0967 c
+-7881.7104 8597.4775 -7880.5552 8598.3154 -7879.6758 8597.9678 c
+bUU0 Ap
+0 0 0 1 k
+-7869.1318 8576.6553 m
+-7869.1318 8609.3145 l
+Fu-7853.3906 8562.5303 m
+-7854.0815 8561.8369 -7857.019 8562.7021 Y
+-7858.229 8562.874 -7858.0562 8565.2939 Y
+-7857.019 8567.3682 -7857.7104 8567.1943 Y
+-7858.2998 8567.1943 -7859.855 8567.1143 -7860.7822 8567.0635 C
+-7861.1226 8565.6689 -7862.6128 8564.4756 -7864.7217 8563.7695 C
+-7862.7578 8560.4775 -7864.5176 8559.7949 -7866.2935 8559.79 C
+-7866.3096 8559.7021 -7866.332 8559.6162 -7866.3599 8559.5332 C
+-7864.1089 8559.5791 -7863.6392 8557.2588 Y
+-7863.4048 8557.0635 -7863.1606 8556.7861 -7862.9238 8556.4756 C
+-7863.1416 8556.6475 -7863.2944 8556.7393 Y
+-7864.2583 8556.7393 -7865.8774 8558.4941 -7866.4966 8559.207 C
+-7866.9194 8558.4434 -7867.853 8557.9111 -7868.9434 8557.9111 c
+-7870.0698 8557.9111 -7871.0322 8558.4795 -7871.4312 8559.2852 C
+-7871.9985 8558.624 -7873.6968 8556.751 -7874.6943 8556.751 C
+-7874.8462 8556.6572 -7875.064 8556.4854 V
+-7874.8281 8556.7939 -7874.583 8557.0732 -7874.3481 8557.2686 C
+-7873.8638 8559.6563 -7871.5254 8559.5342 V
+-7871.5449 8559.5889 -7871.5674 8559.6436 -7871.5806 8559.7021 C
+-7874.9238 8559.6924 -7873.937 8562.3174 -7873.2104 8563.6602 C
+-7875.5918 8564.376 -7877.2646 8565.7012 -7877.5239 8567.25 C
+-7878.4473 8567.2998 -7879.6729 8567.3584 -7880.1802 8567.3584 C
+-7880.8726 8567.5313 -7879.835 8565.458 V
+-7879.6626 8563.0391 -7880.8726 8562.8662 V
+-7883.8096 8562.002 -7884.501 8562.6934 V
+-7885.1919 8563.5566 -7886.0562 8562.3467 V
+-7885.1919 8564.0752 -7883.291 8563.5566 V
+-7880.6982 8562.8662 -7881.3906 8564.5938 V
+-7881.9087 8568.0498 -7880.1802 8568.7402 V
+-7878.0342 8569.8545 -7876.2822 8570.0889 V
+-7875.9087 8570.4141 -7875.4639 8570.7109 -7874.958 8570.9766 C
+-7877.5562 8571.0469 -7880.2246 8571.9209 -7881.0752 8574.9561 C
+-7881.5151 8576.2432 -7882.0518 8578.2432 V
+-7883.1025 8578.8252 -7884.3022 8580.0078 -7885.541 8582.2627 C
+-7886.394 8585.4502 -7887.167 8580.7129 V
+-7888.3975 8577.6494 -7889.6504 8577.5381 V
+-7888.4702 8579.2871 -7888.9038 8580.416 V
+-7887.2998 8584.917 -7885.6138 8583.8994 V
+-7884.0986 8583.2197 -7882.688 8580.8154 V
+-7883.0698 8582.4971 -7883.4326 8584.417 -7883.6743 8586.3906 C
+-7884.4888 8586.3975 L
+-7886.3506 8585.4795 -7886.3262 8588.959 V
+-7887.1226 8592.9453 -7886.3594 8595.6826 V
+-7885.647 8598.1504 -7888.1274 8596.9307 V
+-7889.2842 8597.3242 -7889.9839 8596.7881 V
+-7892.3882 8595.4131 -7894 8597.124 V
+-7892.147 8596.8799 -7891.4482 8597.417 V
+-7889.9785 8597.5615 -7889.897 8598.1787 V
+-7886.9561 8598.8555 -7886.188 8598.0771 V
+-7884.417 8597.2139 -7885.1304 8594.3604 V
+-7885.8799 8586.4814 -7884.3198 8588.4053 V
+-7884.1182 8588.4219 -7883.8784 8588.5176 V
+-7884.1519 8592.4326 -7883.8018 8596.3252 -7881.9961 8598.8516 C
+-7885.4536 8591.333 -7880.2974 8576.3037 Y
+-7878.9609 8571.5303 -7873.127 8572.1016 -7870.145 8572.7344 C
+-7870.0718 8574.1299 -7869.8374 8575.9492 -7869.1318 8576.6553 C
+-7868.2134 8574.6963 -7868.2358 8573.0732 V
+-7867.0762 8572.7217 -7860.2817 8570.8447 -7857.4487 8574.3369 C
+-7858.4312 8571.8135 -7860.8262 8571.0186 -7863.2007 8570.9189 C
+-7862.667 8570.6318 -7862.2041 8570.3047 -7861.8257 8569.9502 C
+-7860.041 8569.7861 -7857.7104 8568.5771 Y
+-7855.9814 8567.8857 -7856.5015 8564.4307 Y
+-7857.1919 8562.7021 -7854.5991 8563.3936 Y
+-7852.7002 8563.9111 -7851.835 8562.1836 Y
+-7852.7002 8563.3936 -7853.3906 8562.5303 Y
+f-7847.9082 8596.9521 m
+-7848.6074 8597.4893 -7849.7632 8597.0938 Y
+-7852.2446 8598.3135 -7851.5327 8595.8467 Y
+-7850.769 8593.1104 -7851.564 8589.1221 Y
+-7851.541 8585.6445 -7853.4014 8586.5596 Y
+-7854.0342 8586.5557 L
+-7854.3198 8584.6123 -7854.7046 8582.7549 -7855.0898 8581.1699 C
+-7853.7129 8583.4199 -7852.2778 8584.0635 Y
+-7850.5913 8585.082 -7848.9878 8580.5791 Y
+-7849.4214 8579.4502 -7848.2417 8577.7021 Y
+-7849.4937 8577.8125 -7850.7246 8580.876 Y
+-7851.4976 8585.6152 -7852.3511 8582.4268 Y
+-7853.5776 8580.1904 -7854.769 8579.0098 -7855.814 8578.4229 C
+-7856.2026 8577.0635 -7856.4858 8576.2393 Y
+-7856.7002 8575.4727 -7857.0337 8574.8486 -7857.4487 8574.3369 C
+-7857.3799 8574.5127 -7857.3174 8574.6982 -7857.2632 8574.8916 C
+-7851.3022 8592.2588 -7856.4858 8598.9971 V
+-7863.2246 8608.5869 -7867.3721 8608.5869 V
+-7870.9663 8608.6514 L
+-7875.1138 8608.6514 -7881.853 8599.0615 Y
+-7881.9038 8598.9961 -7881.9463 8598.9219 -7881.9961 8598.8516 C
+-7881.7378 8599.4141 -7881.437 8599.9404 -7881.0752 8600.4092 C
+-7874.3359 8610 -7870.189 8610 V
+-7866.5942 8609.9346 L
+-7862.4482 8609.9346 -7855.709 8600.3447 Y
+-7853.5801 8597.5771 -7853.3306 8593.0176 -7853.7769 8588.6055 C
+-7853.6553 8588.5752 -7853.5698 8588.5684 Y
+-7852.0112 8586.6475 -7852.7598 8594.5244 Y
+-7853.4746 8597.3789 -7851.7026 8598.2402 Y
+-7850.9351 8599.0186 -7847.9946 8598.3428 Y
+-7847.9136 8597.7256 -7846.4434 8597.5811 Y
+-7845.7446 8597.0449 -7843.8921 8597.2881 Y
+-7845.5024 8595.5771 -7847.9082 8596.9521 Y
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894.0254 8610.0264 m
+-7838.0542 8610.0264 L
+-7838.0542 8548.5342 L
+-7894.0254 8548.5342 L
+-7894.0254 8610.0264 L
+nuu0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w-7867.5991 8586.7217 m
+-7867.3594 8597.5215 -7872.8794 8607.8398 v
+-7872.4009 8610 -7870.959 8610 v
+-7871.2002 8606.6406 -7870.2393 8606.1611 v
+-7865.9199 8594.1602 -7866.6382 8586.2402 v
+-7867.5991 8586.7217 l
+b-7867.5991 8586.7217 m
+-7869.2793 8592 -7881.0391 8593.2012 v
+-7885.3594 8593.6807 -7885.5991 8595.1211 v
+-7879.1206 8585.5195 -7878.1602 8585.7607 v
+-7891.3594 8580.001 -7894 8574.7197 v
+-7888.959 8577.6006 -7885.5991 8575.4404 v
+-7877.6802 8575.2012 -7872.6406 8577.3613 v
+-7868.8008 8579.2813 -7876.7202 8563.2012 v
+-7872.8794 8574.9609 -7869.2793 8548.5605 v
+-7868.3198 8553.8408 -7866.8799 8555.2813 v
+-7860.8799 8562.9609 -7861.8398 8565.1211 v
+-7862.3198 8568.9609 -7857.7598 8562.7207 v
+-7858 8572.3213 -7860.4009 8575.6807 v
+-7862.5591 8579.2813 -7856.5591 8577.1211 v
+-7850.5591 8575.2012 -7845.2793 8576.8809 v
+-7839.7598 8578.3203 -7838.0801 8575.4404 v
+-7849.8398 8587.9209 -7855.5991 8587.6807 v
+-7853.9194 8591.2813 l
+-7851.519 8596.0811 -7852 8597.2813 v
+-7867.2681 8587.8828 -7867.5991 8586.7217 v
+b-7867.5991 8586.7217 m
+-7864.959 8568.2402 -7867.5991 8560.5605 v
+-7869.998 8550.001 -7869.2793 8548.5605 v
+S-7866.1602 8575.4404 m
+-7860.1602 8570.6406 -7858.959 8565.3604 v
+S-7866.1602 8574.7197 m
+-7875.0391 8567.041 -7876.7202 8563.2012 v
+S-7838.0801 8575.4404 m
+-7839.2793 8577.6006 -7867.3594 8585.7607 y
+-7872.4009 8580.2422 -7883.9199 8577.8408 v
+-7891.5986 8576.8809 -7894 8574.7197 v
+S-7884.6382 8593.6807 m
+-7873.1191 8584.5615 -7867.3594 8585.7607 y
+-7853.1992 8592 -7852 8597.2813 v
+SUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7893.8496 8609.9961 m
+-7843.96 8609.9961 L
+-7843.96 8558.9258 L
+-7893.8496 8558.9258 L
+-7893.8496 8609.9961 L
+nu0 O
+0.025 0.1 0.475 0 k
+-7872.1504 8577.9043 m
+-7874.4766 8576.8125 -7876.6914 8576.4434 -7878.373 8576.9238 c
+-7879.0518 8577.1172 -7879.645 8577.4473 -7880.123 8577.9238 c
+-7880.6006 8578.4023 -7880.9297 8578.9951 -7881.123 8579.6729 c
+-7882.0088 8582.7715 -7880.0103 8587.6777 -7875.9233 8591.7666 c
+-7871.834 8595.8535 -7866.9297 8597.8516 -7863.8286 8596.9668 c
+-7863.1519 8596.7715 -7862.5586 8596.4424 -7862.0806 8595.9658 c
+-7861.603 8595.4883 -7861.2754 8594.8955 -7861.082 8594.2168 c
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.582 8585.21 -7864.791 8583.6133 -7866.2793 8582.123 c
+-7868.1504 8580.2539 -7870.1914 8578.8242 -7872.1504 8577.9043 c
+fu0.0035 0.014 0.0665 0 k
+-7871.2183 8576.9727 m
+-7873.8306 8576.0215 -7876.3975 8575.9688 -7878.373 8576.9238 C
+-7876.6914 8576.4434 -7874.4766 8576.8125 -7872.1504 8577.9043 c
+-7871.6191 8578.1543 -7871.0806 8578.4434 -7870.543 8578.7676 C
+-7868.8984 8578.0537 L
+-7869.667 8577.6172 -7870.4434 8577.2539 -7871.2183 8576.9727 c
+f0.015 0.06 0.285 0 k
+-7868.8984 8578.0537 m
+-7870.543 8578.7676 L
+-7869.0962 8579.6348 -7867.6426 8580.7607 -7866.2793 8582.123 c
+-7866.1538 8582.25 -7866.0327 8582.3779 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7866.3706 8579.7236 -7867.6191 8578.7813 -7868.8984 8578.0537 C
+fUu0.039 0.156 0.741 0 k
+-7859.687 8565.4043 m
+-7859.9746 8565.6914 -7871.2183 8576.9727 Y
+-7870.4434 8577.2539 -7869.667 8577.6172 -7868.8984 8578.0537 C
+-7855.4146 8564.5703 L
+-7857.061 8564.0996 -7858.6406 8564.3555 -7859.687 8565.4043 c
+f0.025 0.1 0.475 0 k
+-7855.4146 8564.5703 m
+-7868.8984 8578.0537 L
+-7867.584 8578.8027 -7866.2969 8579.7754 -7865.1143 8580.957 c
+-7865.084 8580.9863 -7865.0586 8581.0156 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7851.5264 8567.1328 -7851.7202 8566.9141 -7851.9302 8566.7012 c
+-7853.0103 8565.623 -7854.2305 8564.9082 -7855.4146 8564.5703 C
+fUu0.0115 0.046 0.2185 0 k
+-7845.9346 8574.3926 m
+-7843.5337 8571.9893 -7843.335 8568.0898 -7845.1382 8564.6973 C
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f0.015 0.06 0.285 0 k
+-7853.5337 8559.5957 m
+-7852.582 8558.9258 L
+-7855.2046 8558.3516 -7857.8306 8558.9141 -7859.6206 8560.7061 c
+-7858.1719 8559.2578 -7855.9082 8558.9307 -7853.5337 8559.5957 C
+f0.0295 0.118 0.5605 0 k
+-7853.5337 8559.5957 m
+-7855.9082 8558.9307 -7858.1719 8559.2578 -7859.6206 8560.7061 c
+-7861.019 8562.1055 -7861.3706 8564.2637 -7860.7954 8566.5469 C
+-7858.8672 8563.5449 -7855.4082 8564.5537 V
+-7853.585 8559.6309 L
+-7853.5337 8559.5957 L
+f*u
+0.048 0.192 0.912 0 k
+1 D
+-7845.9346 8574.3926 m
+-7847.2817 8575.7383 -7849.332 8576.1133 -7851.5234 8575.627 C
+-7861.6714 8585.7734 L
+-7861.7695 8585.5684 -7861.7695 8585.5684 -7861.6714 8585.7734 c
+-7860.2246 8588.8145 -7859.9702 8591.916 -7861.082 8594.2168 C
+-7860.5176 8592.2461 -7861.1226 8589.5449 -7862.6855 8586.7891 c
+-7863.5054 8585.3438 -7864.5918 8583.8848 -7865.9102 8582.5059 C
+-7865.2153 8580.8633 L
+-7865.1816 8580.8945 -7865.1465 8580.9238 -7865.1143 8580.957 c
+-7865.084 8580.9883 -7865.0566 8581.0176 -7865.0273 8581.0469 c
+-7865.0278 8581.0469 -7865.0278 8581.0469 -7865.0278 8581.0449 C
+-7851.3408 8567.3574 L
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+-7844.0938 8568.4961 -7843.8398 8572.2949 -7845.9346 8574.3926 c
+f*U
+0.0215 0.086 0.4085 0 k
+0 D
+-7852.582 8558.9258 m
+-7853.5337 8559.5957 L
+-7851.6846 8560.1113 -7849.7656 8561.2285 -7848.1138 8562.8828 c
+-7847.4063 8563.5889 -7846.7998 8564.3418 -7846.2954 8565.1182 C
+-7845.1382 8564.6973 L
+-7845.6553 8563.7246 -7846.3374 8562.793 -7847.1802 8561.9512 c
+-7848.7695 8560.3594 -7850.6758 8559.3428 -7852.582 8558.9258 C
+f0.0205 0.082 0.3895 0 k
+-7846.2954 8565.1182 m
+-7846.7998 8564.3418 -7847.4063 8563.5889 -7848.1138 8562.8828 c
+-7849.7656 8561.2285 -7851.6846 8560.1113 -7853.5337 8559.5957 C
+-7853.585 8559.6309 L
+-7855.4082 8564.5537 L
+-7854.2114 8564.9219 -7852.9878 8565.6436 -7851.9302 8566.7012 c
+-7851.7202 8566.9141 -7851.5264 8567.1328 -7851.3408 8567.3574 C
+-7846.3262 8565.1289 L
+-7846.2954 8565.1182 L
+fUu0.445 0.356 0.267 0 k
+-7893.8496 8609.9961 m
+-7871.957 8586.9688 L
+-7872.2007 8586.6494 -7872.5752 8586.6133 -7872.8887 8586.6592 C
+-7877.1802 8591.2891 -7888.3145 8603.4561 -7892.7266 8608.2793 C
+-7893.5649 8609.3516 -7894 8609.9932 -7893.8496 8609.9961 C
+f0.15 0.12 0.09 0 k
+-7893.834 8609.9961 m
+-7892.6606 8609.7031 -7871.6934 8588.0029 Y
+-7871.6934 8587.502 -7871.7993 8587.1758 -7871.957 8586.9688 C
+-7893.8496 8609.9961 L
+-7893.8442 8609.9961 -7893.8418 8610 -7893.834 8609.9961 c
+f0.2 0.16 0.12 0 k
+-7892.7266 8608.2793 m
+-7888.3145 8603.4561 -7877.1802 8591.2891 -7872.8887 8586.6592 C
+-7873.2002 8586.7041 -7873.4526 8586.8301 Y
+-7874.603 8587.1328 -7888.5742 8602.9619 -7892.7266 8608.2793 C
+fUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7892.9502 8609.2324 m
+-7843.0391 8609.2324 L
+-7843.0391 8545.1152 L
+-7892.9502 8545.1152 L
+-7892.9502 8609.2324 L
+nu0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w-7843.2358 8545.1152 m
+-7843.6064 8545.248 -7843.9858 8545.2832 -7844.3833 8545.2031 c
+-7844.4863 8545.168 l
+-7844.5254 8545.1602 -7844.5703 8545.1787 -7844.6025 8545.1992 c
+-7844.9434 8545.3926 l
+-7848.7129 8547.2959 -7852.0962 8549.8965 -7854.5 8553.4473 c
+-7855.9634 8555.5918 -7857.123 8557.8789 -7858.7993 8559.8564 c
+-7859.1729 8560.209 -7859.1758 8560.7725 -7858.834 8561.1309 c
+-7858.4951 8561.501 -7857.918 8561.5078 -7857.561 8561.165 c
+-7857.4038 8561.21 l
+-7857.2642 8561.1289 -7857.0742 8561.0703 -7857.0234 8560.957 c
+-7855.853 8558.2031 -7855.1895 8555.5137 -7853.4336 8553.1387 c
+-7851.1719 8550.0947 -7848.1777 8547.9941 -7845.0298 8546.0234 c
+-7844.3672 8545.6055 L
+-7844.4966 8545.6348 L
+-7843.7695 8545.6426 l
+-7843.791 8545.6113 -7843.8008 8545.5957 -7843.8223 8545.5645 C
+-7843.6064 8545.5234 -7843.377 8545.4746 -7843.1626 8545.4336 c
+-7843.0762 8545.4238 -7843.0186 8545.3389 -7843.0391 8545.2383 c
+-7843.0503 8545.1523 -7843.1382 8545.1084 -7843.2358 8545.1152 c
+-7843.2358 8545.1152 l
+b-7859.2222 8558.9951 m
+-7859.5742 8558.8066 -7859.9658 8558.6719 -7860.248 8558.3887 c
+-7866.4521 8552.1719 -7876.6802 8551.2734 -7884.0488 8557.6855 C
+-7884.1582 8557.7813 -7884.1582 8557.957 -7884.063 8558.0645 C
+-7881.0527 8556.9434 -7872.8838 8558.375 -7869.3223 8561.4121 C
+-7869.2534 8561.4668 -7869.1465 8561.4531 -7869.1055 8561.3711 C
+-7869.0503 8561.3047 -7869.0664 8561.1953 -7869.1328 8561.1563 C
+-7872.5625 8558.0859 -7877.0674 8556.29 -7881.6729 8556.748 C
+-7878.8535 8555.1855 -7875.6313 8554.4941 -7872.3984 8554.6885 c
+-7867.7144 8554.9717 -7863.4634 8557.1191 -7859.3711 8559.2793 c
+-7859.291 8559.3193 -7859.1978 8559.293 -7859.1553 8559.2109 C
+-7859.1016 8559.1309 -7859.1426 8559.0352 -7859.2222 8558.9951 c
+b-7868.647 8560.3359 m
+-7870.2266 8564.3613 -7872.3911 8568.3203 -7875.8018 8571.0762 c
+-7875.9648 8571.2119 -7875.9946 8571.4492 -7875.8711 8571.6055 c
+-7875.7344 8571.7676 -7875.5049 8571.7793 -7875.3481 8571.6563 c
+-7871.123 8569.5967 -7868.1904 8565.1309 -7868.1626 8560.4014 c
+-7868.1626 8560.4014 l
+-7868.1328 8560.2676 -7868.2354 8560.1348 -7868.3633 8560.1221 c
+-7868.5039 8560.1055 -7868.6318 8560.1973 -7868.647 8560.3359 c
+-7868.647 8560.3359 l
+b-7862.9414 8565.0176 m
+-7863.042 8565.1816 -7863.1152 8565.3838 -7863.2617 8565.4824 c
+-7866.0806 8567.3906 -7868.9785 8568.6309 -7871.8848 8570.1328 c
+-7872.0503 8570.209 -7872.1118 8570.418 -7872.0313 8570.5703 c
+-7871.9512 8570.7227 -7871.7559 8570.7793 -7871.5898 8570.7041 c
+-7868.439 8569.3232 -7864.313 8568.5 -7862.6729 8565.1797 c
+-7862.6289 8565.1113 -7862.6455 8565.0146 -7862.7266 8564.9648 c
+-7862.7959 8564.9199 -7862.897 8564.9492 -7862.9414 8565.0176 c
+-7862.9414 8565.0176 l
+b-7862.6602 8565.918 m
+-7862.4438 8566.4297 -7862.1431 8566.8896 -7862.0503 8567.4355 c
+-7861.2183 8572.2773 -7861.1152 8577.042 -7862.248 8581.6875 c
+-7862.248 8581.6875 l
+-7862.3418 8581.9531 -7862.2114 8582.2441 -7861.9438 8582.3389 c
+-7861.6777 8582.4336 -7861.3882 8582.3125 -7861.2935 8582.0479 c
+-7859.293 8576.8115 -7859.897 8570.7373 -7862.3711 8565.7832 c
+-7862.4063 8565.7002 -7862.498 8565.6689 -7862.582 8565.6914 c
+-7862.6641 8565.7275 -7862.6978 8565.835 -7862.6602 8565.918 c
+-7862.6602 8565.918 l
+b-7861.5352 8581.5938 m
+-7858.8984 8579.2275 -7856.6816 8576.252 -7855.853 8572.7363 c
+-7855.853 8572.7363 l
+-7855.7246 8572.1816 -7856.0742 8571.623 -7856.6416 8571.4902 c
+-7857.1992 8571.375 -7857.7578 8571.7246 -7857.8862 8572.2793 c
+-7858.5649 8575.5313 -7859.8711 8578.6729 -7861.7954 8581.3867 c
+-7861.7954 8581.3867 l
+-7861.8462 8581.4551 -7861.834 8581.5576 -7861.7695 8581.6201 c
+-7861.6992 8581.6699 -7861.5977 8581.6582 -7861.5352 8581.5938 c
+-7861.5352 8581.5938 l
+b-7846.3711 8574.1826 m
+-7847.7114 8569.8301 -7850.2598 8566.0693 -7853.689 8563.1533 C
+-7853.729 8563.0723 -7853.8242 8563.0322 -7853.9038 8563.0859 C
+-7853.9863 8563.127 -7854.0122 8563.2207 -7853.9722 8563.3018 C
+-7853.957 8563.7891 -7853.7144 8564.2334 -7853.4458 8564.5313 c
+-7848.4063 8570.1621 -7844.9902 8578.7197 -7847.3433 8585.9551 C
+-7847.0762 8580.4512 -7848.7241 8574.3008 -7852.1362 8569.6738 c
+-7853.1606 8568.2695 -7854.7422 8568.1211 -7856.3081 8568.2031 C
+-7856.4023 8568.1895 -7856.4834 8568.2432 -7856.4961 8568.3369 c
+-7856.5098 8568.4189 -7856.4551 8568.5137 -7856.3623 8568.5254 C
+-7853.1479 8569.7695 -7851.4878 8573.2246 -7850.084 8576.1943 c
+-7848.415 8579.7441 -7847.7017 8583.6387 -7848.0054 8587.5 C
+-7848.0454 8587.6777 -7848.1138 8589.3975 -7847.9775 8589.4102 C
+-7847.8306 8589.4395 -7847.709 8589.3438 -7847.6802 8589.1943 C
+-7847.645 8589.0449 -7844.6426 8579.7988 -7846.3711 8574.1826 c
+b-7854.4863 8561.4912 m
+-7853.3945 8557.6211 -7851.1094 8554.251 -7848.4824 8551.2383 c
+-7848.3306 8551.1045 -7848.3145 8550.8867 -7848.4502 8550.7354 c
+-7848.5752 8550.6006 -7848.8047 8550.582 -7848.957 8550.7178 c
+-7852.3306 8553.332 -7853.4487 8557.541 -7854.7954 8561.375 c
+-7854.7954 8561.375 l
+-7854.8262 8561.4648 -7854.7754 8561.5586 -7854.6982 8561.5869 c
+-7854.6094 8561.6191 -7854.5166 8561.5684 -7854.4863 8561.4912 c
+-7854.4863 8561.4912 l
+b-7848.5313 8586.1094 m
+-7848.5991 8586.0566 -7848.707 8586.083 -7848.748 8586.1504 C
+-7848.9634 8586.4746 -7850.6914 8588.5195 -7851.3926 8589.1406 c
+-7856.1719 8593.3945 -7859.5137 8597.9609 -7867.5391 8601.7227 c
+-7874.4512 8604.9639 -7877.1113 8607.5957 -7884.3862 8605.8262 c
+-7887.687 8605.0293 -7889.0313 8604.5313 -7890.4351 8599.4551 C
+-7891.9473 8593.2988 -7890.8672 8595.7832 -7891.084 8588.4385 c
+-7891.2222 8583.6973 -7894 8572.4551 -7881.5254 8558.2598 C
+-7881.4199 8558.1484 -7881.4336 8557.9961 -7881.5337 8557.9072 C
+-7881.6328 8557.8027 -7881.7959 8557.8164 -7881.8862 8557.916 C
+-7887.5786 8562.7168 -7891.0234 8569.6582 -7892.3145 8576.9424 c
+-7893.2871 8582.4668 -7892.9199 8587.25 -7892.666 8593.6367 c
+-7892.5688 8596.0938 -7893.6855 8603.0723 -7888.9102 8607.0625 c
+-7885.3926 8610 -7880.3911 8609.5469 -7876.3545 8608.1563 c
+-7870.6992 8606.2119 -7865.9727 8603.1465 -7860.8711 8599.6094 c
+-7857.2656 8597.125 -7849.2881 8587.2852 -7848.4785 8586.3262 C
+-7848.4351 8586.2588 -7848.4502 8586.1504 -7848.5313 8586.1094 C
+b-7883.0503 8573.3057 m
+-7882.168 8572.5029 -7881.7017 8573.8457 -7881.4297 8574.6016 c
+-7881.1626 8575.3574 -7880.189 8575.25 -7880.5127 8575.5732 c
+-7880.8369 8575.8975 -7880.8369 8575.9521 -7881.3232 8575.5195 c
+-7881.8086 8575.0879 -7881.8086 8575.7363 -7882.5649 8575.25 c
+-7883.3198 8574.7627 -7883.645 8573.8457 -7883.0503 8573.3057 c
+b-7875.6519 8577.9492 m
+-7875.3657 8577.5918 -7874.6802 8577.5723 -7874.4648 8577.8945 c
+-7874.25 8578.2197 -7873.3306 8578.2734 -7873.4937 8578.5967 c
+-7873.6543 8578.9219 -7873.6016 8579.1387 -7874.0874 8578.9219 c
+-7874.5737 8578.7051 -7874.4121 8579.2998 -7874.897 8579.084 c
+-7875.3833 8578.8672 -7875.8687 8578.2197 -7875.6519 8577.9492 c
+b-7867.6074 8583.0791 m
+-7867.1206 8582.7559 -7865.8794 8583.5117 -7866.4727 8583.5117 c
+-7867.0674 8583.5117 -7866.311 8584.2676 -7866.8521 8584.4834 c
+-7867.3906 8584.6992 -7867.2832 8584.4297 -7867.6074 8584.6445 c
+-7867.9297 8584.8613 -7868.3633 8585.2393 -7868.5239 8584.4297 c
+-7868.6855 8583.6191 -7868.3633 8583.6191 -7867.9849 8583.3496 c
+-7867.6074 8583.0791 -7867.6074 8583.0791 y
+b-7882.2402 8583.3496 m
+-7881.1074 8583.2422 -7881.8633 8583.998 -7881.269 8584.4834 c
+-7880.6738 8584.9697 -7879.918 8585.6172 -7880.729 8585.4004 c
+-7881.5391 8585.1855 -7882.9961 8585.6719 -7882.9434 8584.5381 c
+-7882.8887 8583.4033 -7882.6328 8583.3867 -7882.2402 8583.3496 c
+b-7876.5703 8591.6113 m
+-7876.1016 8591.3438 -7876.6802 8591.7197 -7876.0303 8591.6113 c
+-7875.3833 8591.5039 -7874.7886 8591.6113 -7875.2207 8591.8281 c
+-7875.6519 8592.0439 -7876.3008 8592.1523 -7876.4634 8591.9893 c
+-7876.625 8591.8281 -7876.9473 8591.8281 -7876.5703 8591.6113 c
+b-7867.0674 8591.1797 m
+-7867.4785 8590.1797 -7866.0962 8590.4238 -7865.4473 8590.7461 c
+-7864.7998 8591.0723 -7863.8262 8590.4775 -7864.4209 8590.9102 c
+-7865.0137 8591.3418 -7864.7998 8590.9102 -7865.3926 8591.2334 c
+-7865.9873 8591.5566 -7866.6895 8592.0977 -7867.0674 8591.1797 c
+b-7882.6738 8597.0664 m
+-7882.7222 8596.0752 -7881.8086 8596.957 -7881.269 8597.0117 c
+-7880.729 8597.0664 -7880.0801 8597.0664 -7880.2432 8597.2813 c
+-7880.4038 8597.498 -7880.459 8597.498 -7881.1626 8597.7129 c
+-7881.8633 8597.9297 -7882.6191 8598.1445 -7882.6738 8597.0664 c
+b-7883.1582 8591.6113 m
+-7884.0664 8591.9746 -7884.293 8591.8809 -7884.5625 8592.2051 c
+-7884.834 8592.5293 -7885.1558 8593.2314 -7885.5352 8592.0977 c
+-7885.9121 8590.9629 -7885.4282 8589.7764 -7885.0479 8589.9375 c
+-7884.6714 8590.0996 -7884.293 8590.7461 -7883.8618 8590.9629 c
+-7883.4297 8591.1797 -7882.6191 8591.3945 -7883.1582 8591.6113 c
+bUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7813 8610 L
+-7813 8505 L
+-7894 8505 L
+-7894 8610 L
+nuuu0 O
+0 0 0 1 k
+-7875.8057 8522.4258 m
+-7876.0742 8520.6621 -7877.1602 8519.291 -7878.5239 8519.3965 c
+-7879.8862 8519.502 -7880.707 8521.0234 -7880.7432 8522.8066 c
+-7880.748 8523.0693 -7880.6743 8524.2441 -7880.6304 8524.4775 C
+-7880.6382 8524.582 -7880.6191 8524.6738 -7880.6104 8524.7803 c
+-7880.5142 8526.0254 -7879.3574 8527.3604 -7877.9414 8527.25 c
+-7876.5249 8527.1406 -7875.4897 8525.8613 -7875.6367 8524.4727 c
+-7875.644 8524.4072 -7875.6958 8523.626 -7875.707 8523.5625 C
+-7875.6816 8523.2852 -7875.7598 8522.7256 -7875.8057 8522.4258 c
+f-7886.2646 8531.7334 m
+-7886.9946 8539.916 -7881.5015 8539.1191 v
+-7878.3682 8538.0186 -7879.4414 8535.1211 v
+-7879.6426 8533.752 -7881.7847 8532.498 v
+-7882.146 8532.25 -7882.7632 8531.1016 v
+-7883.1294 8529.5977 -7884.5186 8529.2979 v
+-7886.0762 8529.251 -7886.2646 8531.7334 v
+f-7860.7646 8540.4971 m
+F-7860.0762 8538.3408 m
+-7860.7847 8537.1934 -7863.8848 8537.6279 Y
+-7864.811 8537.6885 -7865.3799 8537.1113 Y
+-7867.8394 8533.0918 -7871.0386 8533.8857 -7871.4082 8533.9932 C
+-7871.4097 8533.9863 L
+-7874.999 8534.6045 -7875.2666 8539.6035 V
+-7875.4912 8540.3828 -7876.335 8540.7695 V
+-7879.2695 8541.8613 -7879.3481 8543.208 V
+-7879.8999 8545.1152 -7877.6006 8545.7422 V
+-7875.6792 8546.2568 -7873.7886 8543.8945 V
+-7872.6113 8542.6797 -7869.5762 8541.9395 V
+-7869.5728 8541.9531 L
+-7866.3594 8541.0459 -7864.6392 8541.5889 Y
+-7861.8521 8542.7676 -7860.4063 8541.4014 Y
+-7858.6826 8539.7559 -7860.0762 8538.3408 Y
+f-7873.9834 8521.8789 m
+-7874.5854 8520.2002 -7874.2822 8518.4775 -7873.0327 8517.9229 c
+-7871.7842 8517.3672 -7870.3384 8518.3164 -7869.4585 8519.8672 c
+-7869.3286 8520.0957 -7868.8359 8521.165 -7868.7632 8521.3906 C
+-7868.7065 8521.4785 -7868.6792 8521.5684 -7868.6362 8521.667 c
+-7868.1289 8522.8086 -7868.5122 8524.5303 -7869.8105 8525.1074 c
+-7871.1089 8525.6855 -7872.6279 8525.0527 -7873.1582 8523.7617 c
+-7873.1831 8523.7002 -7873.5078 8522.9883 -7873.5298 8522.9268 C
+-7873.6831 8522.6963 -7873.8809 8522.166 -7873.9834 8521.8789 c
+f-7859.7129 8524.9316 m
+-7855.1802 8531.7822 -7860.3911 8533.6943 v
+-7863.6714 8534.2168 -7864.103 8531.1572 v
+-7864.5786 8529.8564 -7863.29 8527.7354 v
+-7863.0903 8527.3447 -7863.0938 8526.04 v
+-7863.4858 8524.5449 -7862.4082 8523.6182 v
+-7861.0591 8522.8359 -7859.7129 8524.9316 v
+fUu-7834.7358 8574.1074 m
+-7834.3687 8572.3623 -7834.9048 8570.6963 -7836.2183 8570.3164 c
+-7837.5322 8569.9375 -7838.8345 8571.0752 -7839.4937 8572.7324 c
+-7839.5903 8572.9775 -7839.9326 8574.1025 -7839.9746 8574.3369 C
+-7840.0176 8574.4326 -7840.0322 8574.5244 -7840.0625 8574.6279 c
+-7840.4087 8575.8271 -7839.7935 8577.4805 -7838.4282 8577.875 c
+-7837.063 8578.2695 -7835.645 8577.4365 -7835.2969 8576.085 c
+-7835.2793 8576.0205 -7835.0552 8575.2705 -7835.0425 8575.207 C
+-7834.9214 8574.9551 -7834.7983 8574.4053 -7834.7358 8574.1074 c
+f-7848.2705 8578.6172 m
+-7851.8242 8586.0244 -7846.3999 8587.2061 v
+-7843.0801 8587.2754 -7843.0688 8584.1846 v
+-7842.7778 8582.8311 -7844.3433 8580.9072 v
+-7844.5942 8580.5459 -7844.7695 8579.2539 v
+-7844.5854 8577.7188 -7845.7793 8576.9492 v
+-7847.2222 8576.3594 -7848.2705 8578.6172 v
+f-7827.4648 8595.7695 m
+F-7826.063 8593.9912 m
+-7826.3247 8592.6689 -7829.3799 8591.9883 Y
+-7830.27 8591.7197 -7830.5986 8590.9795 Y
+-7831.4922 8586.3535 -7834.7666 8585.9746 -7835.1494 8585.9453 C
+-7835.1494 8585.9395 L
+-7838.7271 8585.2588 -7840.731 8589.8467 V
+-7841.2153 8590.4961 -7842.1416 8590.5625 V
+-7845.272 8590.5557 -7845.8169 8591.7891 V
+-7847.0039 8593.3809 -7845.0713 8594.7764 V
+-7843.4526 8595.9316 -7840.853 8594.3818 V
+-7839.3242 8593.6582 -7836.2222 8594.0293 V
+-7836.2231 8594.042 L
+-7832.896 8594.3213 -7831.4766 8595.4326 Y
+-7829.2793 8597.5146 -7827.4463 8596.7432 Y
+-7825.2554 8595.8057 -7826.063 8593.9912 Y
+f-7832.8374 8574.2354 m
+-7832.813 8572.4512 -7831.9258 8570.9453 -7830.5601 8570.8633 c
+-7829.1943 8570.7803 -7828.1743 8572.1768 -7827.895 8573.9385 c
+-7827.854 8574.1973 -7827.7666 8575.3711 -7827.7778 8575.6094 C
+-7827.7559 8575.7109 -7827.7617 8575.8037 -7827.7559 8575.9121 c
+-7827.6807 8577.1592 -7828.644 8578.6367 -7830.0625 8578.7217 c
+-7831.4814 8578.8066 -7832.6826 8577.6826 -7832.7246 8576.2871 c
+-7832.7271 8576.2217 -7832.7822 8575.4404 -7832.7798 8575.375 C
+-7832.8433 8575.1045 -7832.8423 8574.54 -7832.8374 8574.2354 c
+f-7821.0186 8581.5625 m
+-7819.1777 8589.5684 -7824.7271 8589.5303 v
+-7827.9834 8588.8691 -7827.3154 8585.8516 v
+-7827.3032 8584.4668 -7825.353 8582.9326 v
+-7825.0278 8582.6377 -7824.5742 8581.415 v
+-7824.417 8579.876 -7823.083 8579.3877 v
+-7821.5454 8579.1279 -7821.0186 8581.5625 v
+fUU1 Ap
+-7894 8610 m
+-7894 8505 L
+-7813 8505 L
+-7813 8610 L
+-7894 8610 L
+nUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8567.918 m
+-7895 8611 L
+-7808.2217 8611 L
+-7808.2217 8567.918 L
+-7895 8567.918 L
+nuu0 O
+0 0 0 1 k
+-7835.2217 8597.2363 m
+-7835.2217 8605.0742 L
+-7823.2217 8598.1445 L
+-7811.2217 8591.2168 L
+-7823.2217 8584.2891 L
+-7835.2217 8577.3613 L
+-7835.2217 8585.4824 L
+-7893.9351 8571.7168 L
+-7880.9878 8590.8027 L
+-7895 8611 L
+-7835.2217 8597.2363 L
+f0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7833.2217 8594.2363 m
+-7833.2217 8602.0742 L
+-7821.2217 8595.1445 L
+-7809.2217 8588.2168 L
+-7821.2217 8581.2891 L
+-7833.2217 8574.3613 L
+-7833.2217 8582.4824 L
+-7891.9351 8568.7168 L
+-7877.2754 8588.3594 L
+-7891.9351 8608 L
+-7833.2217 8594.2363 L
+bUUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8610 m
+-7766.877 8610 L
+-7766.877 8562.415 L
+-7894 8562.415 L
+-7894 8610 L
+nu*u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7867.793 8594.417 m
+-7867.8232 8594.2676 L
+-7869.9849 8588.3643 -7870.9438 8585.6377 -7871.2754 8584.2891 c
+-7871.3657 8584.2891 L
+-7871.6953 8585.6074 -7872.7754 8588.335 -7874.9673 8594.2676 c
+-7874.9966 8594.417 L
+-7867.793 8594.417 l
+f1 D
+-7878.1182 8602.9678 m
+-7879.6191 8606.5371 -7880.3994 8608.709 -7878.1182 8608.917 c
+-7878.1182 8609.9678 L
+-7880.6992 8609.9375 -7883.5806 8609.917 -7886.3418 8609.917 c
+-7890.0649 8609.917 -7892.5273 8609.9375 -7894 8609.9678 c
+-7894 8608.917 L
+-7892.1064 8608.709 -7891.0542 8606.5674 -7883.5513 8589.5029 c
+-7871.6953 8562.415 L
+-7869.8638 8562.415 L
+-7858.1582 8589.5029 L
+-7850.8047 8606.5078 -7849.7246 8608.709 -7847.8887 8608.917 c
+-7847.8887 8609.9678 L
+-7849.5142 8609.9375 -7851.916 8609.917 -7855.5767 8609.917 c
+-7858.5488 8609.917 -7861.6694 8609.9375 -7864.7026 8609.9678 c
+-7864.7026 8608.917 L
+-7862.481 8608.709 -7863.3218 8606.5078 -7864.7617 8602.9678 C
+-7878.1182 8602.9678 l
+f*U
+*u
+0 D
+-7823.0762 8578.0811 m
+-7823.0762 8574.4717 -7825.3535 8572.0947 -7829.1294 8572.0947 c
+-7830.2383 8572.0947 -7831.0767 8572.2158 -7831.5273 8572.2451 c
+-7831.5273 8584.5479 L
+-7830.8672 8584.6084 -7830.208 8584.6084 -7829.729 8584.6084 c
+-7828.2002 8584.6084 -7826.7026 8584.127 -7825.6841 8583.4053 c
+-7824.3945 8582.5332 -7823.0762 8580.7881 -7823.0762 8578.1416 C
+-7823.0762 8578.0811 l
+f1 D
+-7842.0806 8582.3926 m
+-7842.0806 8566.6445 -7842.0806 8564.4287 -7844.542 8564.2783 c
+-7844.542 8563.3184 L
+-7843.042 8563.2588 -7840.3174 8563.1992 -7837.5664 8563.1689 c
+-7835.6538 8563.1084 -7832.3945 8563.0186 -7830.1479 8562.9775 c
+-7826.582 8562.9775 -7823.585 8563.4258 -7821.0049 8564.2627 c
+-7816.353 8565.8477 -7811.9702 8569.8525 -7811.9702 8577.6602 c
+-7811.9702 8582.7432 -7814.4014 8586.3193 -7816.5034 8588.0605 c
+-7817.583 8589.0215 -7818.8135 8589.832 -7819.7744 8590.3125 c
+-7819.7744 8590.4629 L
+-7817.5234 8593.4912 -7815.6025 8596.0625 -7809.3906 8604.6426 c
+-7807.5 8607.0645 -7805.9102 8608.7383 -7804.7402 8608.9775 c
+-7804.7402 8610 L
+-7806.6602 8610 -7809 8609.8848 -7811.1294 8609.8848 c
+-7813.3511 8609.8848 -7814.8521 8610 -7816.4424 8610 c
+-7817.6729 8610 -7818.7241 8609.9404 -7819.5039 8609.2725 c
+-7823.0151 8603.8477 -7826.9121 8597.7559 -7830.1182 8592.7139 c
+-7830.5078 8592.7139 -7830.957 8592.7139 -7831.5273 8592.7139 c
+-7831.5273 8595.2852 L
+-7831.5273 8606.5264 -7831.437 8608.7686 -7829.1895 8608.9775 c
+-7829.1895 8609.9697 L
+-7830.6279 8609.9404 -7833.9194 8609.915 -7836.6992 8609.915 c
+-7839.9287 8609.915 -7842.8921 8609.9404 -7844.5122 8609.9697 c
+-7844.5122 8608.9775 L
+-7842.0518 8608.7686 -7842.0806 8606.5264 -7842.0806 8589.5918 C
+-7842.0806 8582.3926 l
+f*U
+*u
+0 D
+-7791.4561 8589.5928 m
+-7791.4561 8606.4941 -7791.4561 8608.6484 -7794.2832 8608.9775 C
+-7794.2832 8609.9697 l
+-7792.3887 8609.9404 -7789.0542 8609.915 -7785.7822 8609.915 c
+-7782.6294 8609.915 -7779.5688 8609.9404 -7777.2881 8609.9697 C
+-7777.2881 8608.9775 l
+-7780.2578 8608.9775 -7780.2881 8606.5244 -7780.2881 8589.5928 C
+-7780.2881 8572.1514 L
+-7772.8193 8572.1514 l
+-7769.999 8572.1514 -7768.5298 8572.96 -7767.8994 8575.2627 C
+-7766.9072 8575.2627 l
+-7766.9072 8570.4697 -7766.877 8566.415 -7766.877 8563.1709 c
+-7771.3486 8563.2012 -7776.748 8563.2314 -7782.0601 8563.2314 C
+-7789.7446 8563.2314 l
+-7794.5537 8563.2314 -7799.9966 8563.2012 -7804.9614 8563.1709 c
+-7804.9614 8566.3848 -7804.9326 8570.4697 -7804.9326 8575.2627 C
+-7803.9072 8575.2627 l
+-7803.3657 8573.1094 -7801.771 8572.1514 -7798.9438 8572.1514 C
+-7791.4561 8572.1514 l
+-7791.4561 8589.5928 L
+f*U
+UU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8593.9043 m
+-7856.7305 8585.3408 L
+-7895 8585.3408 L
+-7895 8593.9043 L
+-7856.7305 8593.9043 L
+f-7856.7305 8597.0967 m
+-7856.7305 8596.4229 L
+-7895 8596.4229 L
+-7895 8597.0967 L
+-7856.7305 8597.0967 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8611 m
+-7895 8572.7305 L
+-7856.7305 8572.7305 L
+-7856.7305 8611 L
+-7895 8611 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8589.8262 m
+-7856.7305 8598.3896 L
+-7869.3408 8598.3896 L
+-7869.3408 8611 L
+-7877.9038 8611 L
+-7877.9063 8589.8262 L
+-7877.9038 8589.8262 L
+-7877.9038 8589.8252 L
+-7856.7305 8589.8262 L
+f-7856.7305 8587.3076 m
+-7880.4233 8587.3076 L
+-7880.4233 8611 L
+-7881.0967 8611 L
+-7881.0977 8586.6328 L
+-7856.7305 8586.6328 L
+-7856.7305 8587.3076 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7895 8610.999 m
+-7895 8572.7285 L
+-7856.7305 8572.7285 L
+-7856.7305 8610.999 L
+-7895 8610.999 L
+n0 O
+1 0.14 0.09 0 k
+-7856.7305 8585.3389 m
+-7882.3896 8585.3389 L
+-7882.3896 8610.999 L
+-7873.8262 8611 L
+-7873.8262 8593.9033 L
+-7856.7305 8593.9033 L
+-7856.7305 8585.3389 L
+f-7856.7305 8596.4219 m
+-7871.3081 8596.4219 L
+-7871.3081 8611 L
+-7870.6338 8611 L
+-7870.6338 8597.0957 L
+-7856.7305 8597.0957 L
+-7856.7305 8596.4219 L
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.0625 8583.4609 m
+-7894.6025 8583.4609 L
+-7894.6025 8611 L
+-7867.0625 8611 L
+-7867.0625 8583.4609 L
+n0 O
+0 0.55 1 0.12 k
+-7866.8418 8596.7002 m
+-7895 8596.7002 L
+-7895 8597.8252 L
+-7866.8418 8597.8252 L
+-7866.8418 8596.7002 L
+fu0 0.55 1 0.3 k
+-7893.9814 8584.5215 m
+-7894.4102 8586.5254 -7893.1865 8590.1514 -7890.0874 8593.251 c
+-7886.9878 8596.3496 -7883.3457 8597.6602 -7881.3594 8597.1455 C
+-7881.3594 8597.1455 L
+-7880.875 8595.1895 -7882.1519 8591.5117 -7885.25 8588.4141 c
+-7888.3457 8585.3184 -7892.0122 8584.1064 -7893.9814 8584.5215 C
+f0 0.39 0.7 0.12 k
+-7893.9814 8609.9912 m
+-7894.4102 8607.9883 -7893.1865 8604.3613 -7890.0874 8601.2617 c
+-7886.9878 8598.1641 -7883.3457 8596.8535 -7881.3594 8597.3672 C
+-7881.3594 8597.3672 L
+-7880.875 8599.3242 -7882.1519 8603.001 -7885.25 8606.0996 c
+-7888.3457 8609.1953 -7892.0122 8610.4063 -7893.9814 8609.9912 C
+fUu0 0.55 1 0.3 k
+-7880.1782 8609.9912 m
+-7880.6074 8607.9883 -7879.3838 8604.3613 -7876.2842 8601.2617 c
+-7873.1855 8598.1641 -7869.543 8596.8535 -7867.5576 8597.3672 C
+-7867.5566 8597.3672 L
+-7867.0718 8599.3242 -7868.3496 8603.001 -7871.4473 8606.0996 c
+-7874.543 8609.1953 -7878.209 8610.4063 -7880.1782 8609.9912 C
+f0 0.39 0.7 0.12 k
+-7880.1782 8584.5215 m
+-7880.6074 8586.5254 -7879.3838 8590.1514 -7876.2842 8593.251 c
+-7873.1855 8596.3496 -7869.543 8597.6602 -7867.5576 8597.1455 C
+-7867.5566 8597.1455 L
+-7867.0718 8595.1895 -7868.3496 8591.5117 -7871.4473 8588.4141 c
+-7874.543 8585.3184 -7878.209 8584.1064 -7880.1782 8584.5215 C
+fUU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.085 m
+-7895 8583.085 L
+-7895 8610.624 L
+-7867.4609 8610.624 L
+-7867.4609 8583.085 L
+n0 O
+0 0.55 1 0.12 k
+-7881.7598 8601.3623 m
+-7881.7598 8611 L
+-7880.6343 8611 L
+-7880.6343 8601.3623 L
+-7881.7598 8601.3623 L
+f0 0.55 1 0.3 k
+-7885.4233 8596.876 m
+-7884.3096 8595.1553 -7880.8809 8593.457 -7876.4966 8593.457 c
+-7872.1152 8593.457 -7868.6138 8595.1064 -7867.5718 8596.874 C
+-7867.5718 8596.874 L
+-7868.6138 8598.6006 -7872.1152 8600.2979 -7876.4966 8600.2979 c
+-7880.875 8600.2979 -7884.3242 8598.5615 -7885.4233 8596.876 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7867.4609 8583.4609 m
+-7895 8583.4609 L
+-7895 8611 L
+-7867.4609 8611 L
+-7867.4609 8583.4609 L
+n0 O
+0 0.55 1 0.3 k
+-7885.4233 8597.252 m
+-7884.3096 8595.5313 -7880.8809 8593.833 -7876.4966 8593.833 c
+-7872.1152 8593.833 -7868.6138 8595.4824 -7867.5718 8597.25 C
+-7867.5718 8597.25 L
+-7868.6138 8598.9766 -7872.1152 8600.6738 -7876.4966 8600.6738 c
+-7880.875 8600.6738 -7884.3242 8598.9375 -7885.4233 8597.252 C
+fU%AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u800 Ar
+0 J 0 j 1 w 4 M []0 d%AI3_Note:0 D
+0 XR
+-7894 8609.9355 m
+-7680.4009 8609.9355 L
+-7680.4009 8602.1348 L
+-7894 8602.1348 L
+-7894 8609.9355 L
+n0 O
+0 0 0 1 k
+-7894 8606.0352 m
+-7883.9858 8608.5273 -7877.187 8609.875 -7865.2007 8609.9355 c
+-7852.2183 8610 -7787.2002 8609.9355 y
+-7722.1816 8610 -7709.2002 8609.9355 v
+-7697.2129 8609.875 -7690.415 8608.5273 -7680.4009 8606.0352 C
+-7690.415 8603.543 -7697.2129 8602.1953 -7709.2002 8602.1348 c
+-7722.1816 8602.0693 -7787.2002 8602.1348 y
+-7852.2183 8602.0693 -7865.2007 8602.1348 v
+-7877.187 8602.1953 -7883.9858 8603.543 -7894 8606.0352 C
+fU%AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050606060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101111111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262627272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313232323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+4344444445454646474747484849494A4A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
+2928282827272726262626252525242424232323232222222121212020201F1F1F1F1E1E1E1D1D1D
+1C1C1C1C1B1B1B1A1A1A191919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 0 k
+(C=0 M=0 Y=0 K=0) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+0 0.1 1 0 k
+(C=0 M=10 Y=100 K=0) Pc
+0 0.5 0 0 k
+(C=0 M=50 Y=0 K=0) Pc
+0 0.5 1 0 k
+(C=0 M=50 Y=100 K=0) Pc
+1 0.55 1 0 k
+(C=100 M=55 Y=100 K=0) Pc
+1 0.9 0.1 0 k
+(C=100 M=90 Y=10 K=0) Pc
+0.15 1 1 0 k
+(C=15 M=100 Y=100 K=0) Pc
+0.45 0.9 0 0 k
+(C=45 M=90 Y=0 K=0) Pc
+0.5 0.4 0.3 0 k
+(C=50 M=40 Y=30 K=0) Pc
+0.5 0.85 1 0 k
+(C=50 M=85 Y=100 K=0) Pc
+0.75 0.05 1 0 k
+(C=75 M=5 Y=100 K=0) Pc
+0.75 0.9 0 0 k
+(C=75 M=90 Y=0 K=0) Pc
+0.8 0.05 0 0 k
+(C=80 M=5 Y=0 K=0) Pc
+Bb
+2 (Black, White) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) -7895 8611 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 / 1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 / 1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (Calligraphic Brush Tool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool.aip)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(Layer 1) Ln
+0 A
+0 O
+0.0745 0.0157 0.0275 0 0.9294 0.9804 0.9569 Xa
+0 R
+0 0 0 1 K
+800 Ar
+0 J 1 j 2.8346 w 1 M []0 d%AI3_Note:0 D
+0 XR
+295.3364 737.0059 m
+444.1553 630.707 l
+153.604 630.707 l
+295.3364 737.0059 l
+b1 Ap
+0.0314 0.3059 0.2039 0.0039 0.9882 0.6902 0.6706 Xa
+217.3838 602.3608 m
+141.7314 602.3608 L
+141.7314 659.0542 L
+217.3838 659.0542 L
+217.3838 602.3608 L
+b0.3961 0.0941 0 0 0.6078 0.7765 0.949 Xa
+451.6768 602.3608 m
+373.29 602.3608 L
+373.29 659.0542 L
+451.6768 659.0542 L
+451.6768 602.3608 L
+b0 To
+1 0 0 1 388.2842 623.6211 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 1 k
+0 j 1 w 4 M%_ 0 50 XQ
+/_Helvetica 22.6772 21.1125 -5.1022 Tf
+0 Ts
+100 100 Tz
+0 Tt
+%_0 0 100 100 Xu
+%AI55J_GlyphSubst: GlyphSubstNone
+1 TA
+%_ 0 XL
+0 TY
+0 TV
+36 0 Xb
+XB
+0 0 5 TC
+100 100 200 TW
+25 TG
+0 0 0 Ti
+0 Ta
+0 1 2 2 3 Th
+0 Tq
+240 Tg
+0 0 Tl
+0 Tc
+0 Tw
+(Style) Tx 1 0 Tk
+(\r) TX
+TO
+0 To
+1 0 0 1 152.8174 623.6211 0 Tp
+0 Tv
+TP
+0 Tr
+(Logic) Tx 1 0 Tk
+(\r) TX
+TO
+0 Ap
+0.0745 0.0157 0.0275 0 0.9294 0.9804 0.9569 Xa
+0 R
+0 0 0 1 K
+1 j 2.8346 w 1 M295.3364 630.707 m
+295.3364 729.9199 l
+B1 Ap
+0.2431 0.0314 0.1765 0.0039 0.7569 0.8784 0.7765 Xa
+345.5557 602.3604 m
+242.2476 602.3604 L
+242.2476 659.0537 L
+345.5557 659.0537 L
+345.5557 602.3604 L
+b0 To
+1 0 0 1 252.8169 623.6206 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 1 k
+0 j 1 w 4 M(Content) Tx 1 0 Tk
+(\r) TX
+TO
+0 0.1 0.36 0 k
+0 R
+0 0 0 1 K
+1 j 2.8346 w 1 M373.29 701.5732 m
+218.9414 701.5732 L
+218.9414 758.2661 L
+373.29 758.2661 L
+373.29 701.5732 L
+b0 To
+1 0 0 1 229.6685 722.833 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 1 k
+0 j 1 w 4 M(Management) Tx 1 0 Tk
+(\r) TX
+TO
+LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/ASF_20_SRC_AUTO/misc/graphics/xml.apache.org-bars.psd b/ASF_20_SRC_AUTO/misc/graphics/xml.apache.org-bars.psd
new file mode 100644
index 0000000..68b4941
--- /dev/null
+++ b/ASF_20_SRC_AUTO/misc/graphics/xml.apache.org-bars.psd
Binary files differ
diff --git a/ASF_20_SRC_AUTO/mount-table.xml.sample b/ASF_20_SRC_AUTO/mount-table.xml.sample
new file mode 100644
index 0000000..dd0a61e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/mount-table.xml.sample
@@ -0,0 +1,31 @@
+<mount-table>
+ <!--
+ The mount table allows to mount directories external to the Cocoon webapp without
+ changing the main sitemap. To activate the mount-table, just copy or rename this file
+ to "mount-table.xml" to see it automatically activated.
+
+ Each mount below will direct requests starting with the given uri-prefix to the corresponding
+ sitemap. The syntax is exactly the same as the one of <map:mount>.
+
+ The mount-table is especially useful for two purposes:
+ - for all users, to mount into Cocoon external directories (demos, prototypes, projects) without
+ having to change the main Cocoon sitemap. This allows these mounts to "survive" a update to a
+ more recent version of Cocoon.
+
+ - for cocoon contributors, to mount the source of Cocoon examples instead of their copy placed in
+ build/webapp by the build process. This avoids many of the hassles related to editing a copy of
+ the sources, often leading to sync problems.
+ -->
+
+ <!--
+ example: mount the woody source samples at "woody-samples/"
+ (don't forget the / at the end of the path name)
+ -->
+ <mount uri-prefix="woody-samples/" src="../../src/blocks/woody/samples/"/>
+
+
+ <!-- example: mount a prototype located elsewhere on the filesystem at "proto/"
+ (kept commented as the path is not likely to exist on your filesystem) -->
+ <mount uri-prefix="proto/" src="file://c:/my/projects/prototype/"/>
+
+</mount-table>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-category.xlog b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-category.xlog
new file mode 100644
index 0000000..25f42f7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-category.xlog
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<!-- mind how xpatch oddly requires the file extension to
+ be equal to the root elm -->
+
+<xlog xpath="/logkit/categories"
+ unless="category[@name='apples']">
+
+ <category log-level="ERROR" name="apples">
+ <log-target id-ref="apples" />
+ <log-target id-ref="error" />
+ </category>
+
+</xlog>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-processor.xconf b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-processor.xconf
new file mode 100644
index 0000000..b0a6472
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-processor.xconf
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon/flow-interpreters"
+ unless="component-instance[@name='apples']">
+
+ <component-instance
+ class="org.apache.cocoon.components.flow.apples.ApplesProcessor"
+ name="apples" logger="apples">
+ <!--
+ <load-on-startup>resource://org/apache/cocoon/components/flow/javascript/fom/fom_system.js</load-on-startup>
+ <reload-scripts>true</reload-scripts>
+ <check-time>4000</check-time>
+ -->
+ </component-instance>
+
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-target.xlog b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-target.xlog
new file mode 100644
index 0000000..afa564a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples-target.xlog
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<xlog xpath="/logkit/targets"
+ unless="cocoon[@id='apples']">
+
+ <cocoon id="apples">
+ <filename>${context-root}/WEB-INF/logs/apples.log</filename>
+
+ <format type="cocoon">
+ %7.7{priority} %{time} [%{category}] (%{uri}) %{thread}/%{class:short}: %{message}\n%{throwable}
+ </format>
+ <append>false</append>
+ </cocoon>
+
+</xlog>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples.xsamples b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples.xsamples
new file mode 100644
index 0000000..6c9a59e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/conf/apples.xsamples
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Apples']">
+
+ <group name="Apples">
+ <sample name="Apples" href="apples/">
+ Apples (an alternative flow implementation) examples.
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleController.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleController.java
new file mode 100644
index 0000000..1657a99
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleController.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+import org.apache.cocoon.ProcessingException;
+
+
+/**
+ * AppleController declares the main processing interfaces for the stateful
+ * controller objects.
+ * <p>
+ * Implementations are advised to implement Avalon lifecycle interfaces.
+ */
+public interface AppleController {
+
+ /**
+ * Allows the AppleController implementation to make some business decissions
+ * in a given web application flow.
+ * <p>
+ * Typically those decissions will be based upon what it can find inside the
+ * passed {@link AppleRequest} and result into setting specific aspects of the
+ * {@link AppleResponse}
+ */
+ void process(AppleRequest req, AppleResponse res) throws ProcessingException;
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleHelper.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleHelper.java
new file mode 100644
index 0000000..02e6e4c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleHelper.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cocoon.components.flow.Interpreter.Argument;
+
+/**
+ * AppleHelper holds some static utility classes used in the Apples flow
+ * implementation.
+ */
+public class AppleHelper {
+
+ /**
+ * Translates a List of Interpreter.Argument objects into a classic
+ * {@link java.util.Map}
+ */
+ public static Map makeMapFromArguments(List params) {
+ Map retMap = new HashMap();
+ for (Iterator iter = params.iterator(); iter.hasNext();) {
+ Argument element = (Argument) iter.next();
+ retMap.put(element.name, element.value);
+ }
+ return retMap;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleRequest.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleRequest.java
new file mode 100644
index 0000000..4bf75af
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleRequest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+import java.util.Set;
+
+import org.apache.cocoon.environment.Request;
+
+/**
+ * AppleRequest defines the services an AppleController can collect
+ * from the current request.
+ */
+public interface AppleRequest {
+
+ /**
+ * @return the wrapped cocoon environment Request
+ */
+ public Request getCocoonRequest();
+
+
+ /**
+ * @return Set of String's listing all available sitemap-parameters passed.
+ */
+ public Set getSitemapParameterNames();
+
+ /**
+ * Finds a named parameter in the request.
+ * @param key of parameter to lookup
+ * @return the parameter-value
+ */
+ public String getSitemapParameter(String key);
+
+ /**
+ * Finds a named parameter in the request using the overloaded method
+ * {@link #getSitemapParameter(String)} but lets the returned value
+ * default to the second argument in case the delegation resulted into
+ * <code>null</code>
+ * @param key of parameter to lookup
+ * @param defaultValue return-value in case the lookup returned <code>null</code>
+ * @return the parameter-value or if that was null: the defaultValue passed.
+ */
+ public String getSitemapParameter(String key, String defaultValue);
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleResponse.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleResponse.java
new file mode 100644
index 0000000..50a5446
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/AppleResponse.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+
+
+/**
+ * AppleResponse defines the parts of the 'response' an AppleController can set.
+ */
+public interface AppleResponse {
+
+ public void sendPage(String uri, Object bizData);
+ public void redirectTo(String uri);
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java
new file mode 100644
index 0000000..811c886
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+import java.util.List;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.component.WrapperComponentManager;
+import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.components.LifecycleHelper;
+import org.apache.cocoon.components.flow.AbstractInterpreter;
+import org.apache.cocoon.components.flow.ContinuationsDisposer;
+import org.apache.cocoon.components.flow.InvalidContinuationException;
+import org.apache.cocoon.components.flow.WebContinuation;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+
+/**
+ * ApplesProcessor is the core Cocoon component that provides the 'Apples'
+ * flow implementation.
+ */
+public class ApplesProcessor extends AbstractInterpreter implements Serviceable, ContinuationsDisposer {
+
+
+ private ServiceManager serviceManager;
+
+
+ public void callFunction(
+ String className,
+ List params,
+ Redirector redirector)
+ throws Exception {
+
+ AppleController app = instantiateController(className);
+
+ WebContinuation wk = this.continuationsMgr.createWebContinuation(app, null, 0, this);
+
+ DefaultContext appleContext = new DefaultContext();
+ appleContext.put("continuation-id", wk.getId());
+
+ getLogger().debug("Pulling fresh apple through the lifecycle... | continuationid=" + wk.getId());
+
+ LifecycleHelper.setupComponent( app, getLogger(), appleContext,
+ this.serviceManager, new WrapperComponentManager(this.serviceManager),
+ null, null, true);
+
+ processApple(params, redirector, app, wk);
+ }
+
+
+
+ public void handleContinuation(
+ String continuationId,
+ List params,
+ Redirector redirector)
+ throws Exception {
+
+ WebContinuation wk =
+ this.continuationsMgr.lookupWebContinuation(continuationId);
+ if (wk == null) {
+ // Throw an InvalidContinuationException to be handled inside the
+ // <map:handle-errors> sitemap element.
+ throw new InvalidContinuationException(
+ "The continuation ID " + continuationId + " is invalid.");
+ }
+
+ AppleController app =
+ (AppleController) wk.getContinuation();
+
+ getLogger().debug("found apple from continuation: " + app);
+
+ // TODO access control checks? exception to be thrown for illegal access?
+ processApple(params, redirector, app, wk);
+
+ }
+
+
+ private AppleController instantiateController(String className)
+ throws Exception {
+
+ // TODO think about dynamic reloading of these beasts in future
+ // classloading stuf et al.
+
+ Class clazz = Class.forName(className);
+ Object o = clazz.newInstance();
+ return (AppleController) o;
+ }
+
+
+
+ private void processApple(
+ List params,
+ Redirector redirector,
+ AppleController app,
+ WebContinuation wk)
+ throws Exception {
+
+ Request cocoonRequest = ContextHelper.getRequest(this.avalonContext);
+ AppleRequest req = new DefaultAppleRequest(params, cocoonRequest);
+ DefaultAppleResponse res = new DefaultAppleResponse();
+ app.process(req, res);
+
+ if (res.isRedirect()) {
+ redirector.redirect(false, res.getURI());
+ } else {
+ String uri = res.getURI();
+ getLogger().debug("Apple forwards to " + uri + " with bizdata= " + res.getData() + " and continuationid= " + wk.getId());
+ this.forwardTo(uri, res.getData(), wk, redirector);
+ }
+
+ //TODO allow for AppleResponse to set some boolean saying the use case
+ // is completed and the continuation can be invalidated ?
+ }
+
+
+ public void disposeContinuation(WebContinuation webContinuation) {
+ AppleController app =
+ (AppleController) webContinuation.getContinuation();
+ if (app instanceof Disposable) {
+ ((Disposable)app).dispose();
+ }
+
+ }
+
+
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ super.service(serviceManager);
+ this.serviceManager = serviceManager;
+ }
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleRequest.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleRequest.java
new file mode 100644
index 0000000..575fa2b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleRequest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.cocoon.environment.Request;
+
+/**
+ * DefaultAppleRequest wraps the nested <map:paramater> 's and the
+ * active Cocoon Environment Request to implement the service of the
+ * {@link AppleRequest} interface.
+ */
+public class DefaultAppleRequest implements AppleRequest {
+
+ private final Map params;
+ private final Request cocoonRequest;
+
+ /**
+ * Constructs DefaultAppleRequest
+ * @param params the nested <code><map:parameter></code>'s from the sitemap
+ * @param request the active cocoon request
+ */
+ public DefaultAppleRequest(List params, Request request) {
+ this.params = AppleHelper.makeMapFromArguments(params);
+ this.cocoonRequest = request;
+ }
+
+
+ public Request getCocoonRequest() {
+ return cocoonRequest;
+ }
+
+
+ public Set getSitemapParameterNames() {
+ return this.params.keySet();
+ }
+
+
+ public String getSitemapParameter(String key, String defaultValue) {
+ String value = getSitemapParameter(key);
+ if (value == null) {
+ value = defaultValue;
+ }
+ return value;
+ }
+
+
+ public String getSitemapParameter(String key) {
+ return (String)this.params.get(key);
+ }
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleResponse.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleResponse.java
new file mode 100644
index 0000000..56a6405
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/DefaultAppleResponse.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples;
+
+
+/**
+ * DefaultAppleResponse provides a default implementation for the
+ * {@link AppleResponse}.
+ */
+public class DefaultAppleResponse implements AppleResponse {
+
+ private String uri;
+ private Object data;
+ private boolean redirect = false;
+
+ public void sendPage(String uri, Object bizData) {
+ this.uri = uri;
+ this.data = bizData;
+ this.redirect = false;
+ }
+
+ public void redirectTo(String uri) {
+ this.uri = uri;
+ this.redirect = true;
+ }
+
+ protected boolean isRedirect() {
+ return redirect;
+ }
+
+ protected String getURI() {
+ return uri;
+ }
+
+ protected Object getData() {
+ return data;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/BindingWoodyApple.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/BindingWoodyApple.java
new file mode 100644
index 0000000..58e8f08
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/BindingWoodyApple.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples.samples;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.flow.apples.AppleController;
+import org.apache.cocoon.components.flow.apples.AppleRequest;
+import org.apache.cocoon.components.flow.apples.AppleResponse;
+import org.apache.cocoon.woody.FormContext;
+import org.apache.cocoon.woody.FormManager;
+import org.apache.cocoon.woody.binding.Binding;
+import org.apache.cocoon.woody.binding.BindingManager;
+import org.apache.cocoon.woody.formmodel.Form;
+import org.apache.cocoon.xml.dom.DOMStreamer;
+import org.apache.excalibur.source.ModifiableSource;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.xml.dom.DOMParser;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+
+/**
+ * BindingWoodyApple
+ */
+public class BindingWoodyApple extends AbstractLogEnabled implements AppleController, Serviceable {
+
+ private static final boolean CONTINUE = false;
+ private static final boolean FINISHED = true;
+
+ private Form form;
+ private Binding binding;
+ private Document document;
+ private ServiceManager serviceManager;
+ private String formPipeURI;
+ private String validPipeURI;
+ private String backendURI;
+ private Map wrapperContextMap;
+ private State state;
+
+ private interface State {
+ public void processRequest(AppleRequest req, AppleResponse res) throws ProcessingException;
+ }
+
+ private final State initializationDelegate = new State() {
+ public void processRequest(AppleRequest req, AppleResponse res) throws ProcessingException {
+ BindingWoodyApple.this.processInitialization(req, res);
+ }
+ };
+
+ private final State validationDelegate = new State() {
+ public void processRequest(AppleRequest req, AppleResponse res) throws ProcessingException {
+ BindingWoodyApple.this.processValidation(req, res);
+ }
+ };
+
+ {
+ state = initializationDelegate;
+ }
+
+
+ public void process(AppleRequest req, AppleResponse res) throws ProcessingException {
+ this.state.processRequest(req, res);
+ }
+
+ protected void processInitialization(AppleRequest req, AppleResponse res) throws ProcessingException {
+
+ String formURI = req.getSitemapParameter("form-src");
+ String bindURI = req.getSitemapParameter("binding-src");
+ this.backendURI = req.getSitemapParameter("documentURI");
+ this.formPipeURI = req.getSitemapParameter("form-pipe");
+ this.validPipeURI = req.getSitemapParameter("valid-pipe");
+
+ FormManager formManager = null;
+ BindingManager binderManager = null;
+ SourceResolver resolver = null;
+ Source formSource = null;
+ Source bindSource = null;
+ Source documentSource = null;
+
+ try {
+ formManager = (FormManager) this.serviceManager.lookup(FormManager.ROLE);
+ binderManager = (BindingManager) this.serviceManager.lookup(BindingManager.ROLE);
+ resolver = (SourceResolver) this.serviceManager.lookup(SourceResolver.ROLE);
+
+ formSource = resolver.resolveURI(formURI);
+ this.form = formManager.createForm(formSource);
+
+ bindSource = resolver.resolveURI(bindURI);
+ this.binding = binderManager.createBinding(bindSource);
+
+ documentSource = resolver.resolveURI(this.backendURI);
+ this.document = loadDocumentFromSource(documentSource);
+ this.binding.loadFormFromModel(this.form, this.document);
+
+ this.getLogger().debug("apple initialisation finished .. ");
+ this.state = validationDelegate;
+
+ completeResult(res, this.formPipeURI, CONTINUE);
+ } catch (Exception e) {
+ throw new ProcessingException("Failed to initialize BindingWoodyApple. ", e);
+ } finally {
+ if (formManager != null) {
+ this.serviceManager.release(formManager);
+ }
+ if (binderManager != null) {
+ this.serviceManager.release(binderManager);
+ }
+ if (resolver != null) {
+ if (formSource != null) {
+ resolver.release(formSource);
+ }
+ if (bindSource != null) {
+ resolver.release(bindSource);
+ }
+ if (documentSource != null) {
+ resolver.release(documentSource);
+ }
+ this.serviceManager.release(resolver);
+ }
+ }
+ }
+
+ protected void processValidation(AppleRequest req, AppleResponse res) throws ProcessingException {
+
+ Source documentTarget = null;
+ SourceResolver resolver = null;
+
+ try {
+ FormContext formContext = new FormContext(req.getCocoonRequest(), Locale.US);
+
+ if (!this.form.process(formContext)) {
+ // form is not valid or there was just an event handled
+ completeResult(res, this.formPipeURI, CONTINUE);
+ } else {
+
+ resolver = (SourceResolver) this.serviceManager.lookup(SourceResolver.ROLE);
+ documentTarget = resolver.resolveURI(makeTargetURI(this.backendURI));
+
+ this.binding.saveFormToModel(this.form, this.document);
+ saveDocumentToSource(documentTarget, this.document);
+
+ completeResult(res, this.validPipeURI, FINISHED);
+ }
+
+ getLogger().debug("apple processing done .. ");
+ } catch (Exception e) {
+ throw new ProcessingException("Error processing BindingWoodyApple", e);
+ } finally {
+ if (resolver != null) {
+ if (documentTarget != null) {
+ resolver.release(documentTarget);
+ }
+ this.serviceManager.release(resolver);
+ }
+ }
+ }
+
+ private void completeResult(AppleResponse res, String uri, boolean finished) {
+ res.sendPage(uri, getContextMap());
+ // TODO think about transferring the fact that the use case has ended.
+ }
+
+ private Map getContextMap() {
+ if (this.wrapperContextMap == null) {
+ if (this.form != null) {
+ this.wrapperContextMap = new HashMap();
+ this.wrapperContextMap.put("woody-form", this.form);
+ }
+ }
+ return this.wrapperContextMap;
+ }
+
+
+ /**
+ * Translate source path into target path so we keep a clean source XML
+ *
+ * @param path
+ * @return
+ */
+ private String makeTargetURI(String path) {
+ final String sfx = ".xml";
+ final String newSfx = "-result.xml";
+ if (path.endsWith(sfx)) {
+ path = path.substring(0, path.length() - sfx.length());
+ }
+ return path + newSfx;
+ }
+
+
+ /**
+ * Saves (and serializes) the given Document to the path indicated by the
+ * specified Source.
+ *
+ * @param docTarget must be the ModifieableSource where the doc will be
+ * serialized to.
+ * @param doc org.w3c.dom.Document to save
+ * @throws ProcessingException
+ */
+ private void saveDocumentToSource(Source docTarget, Document doc)
+ throws ProcessingException {
+ DOMParser parser = null;
+ OutputStream os = null;
+ String uri = docTarget.getURI();
+
+ try {
+ parser =
+ (DOMParser) this.serviceManager.lookup(DOMParser.ROLE);
+ getLogger().debug("request to save file " + uri);
+ TransformerFactory tf = TransformerFactory.newInstance();
+
+ if (docTarget instanceof ModifiableSource
+ && tf.getFeature(SAXTransformerFactory.FEATURE)) {
+
+ ModifiableSource ws = (ModifiableSource) docTarget;
+ os = ws.getOutputStream();
+ SAXTransformerFactory stf = (SAXTransformerFactory) tf;
+ TransformerHandler th = stf.newTransformerHandler();
+ Transformer t = th.getTransformer();
+ t.setOutputProperty(OutputKeys.INDENT, "true");
+ t.setOutputProperty(OutputKeys.METHOD, "xml");
+ th.setResult(new StreamResult(os));
+
+ DOMStreamer streamer = new DOMStreamer(th);
+ streamer.stream(doc);
+ } else {
+ getLogger().error("Cannot not write to source " + uri);
+ }
+ } catch (Exception e) {
+ getLogger().error("Error parsing mock file " + uri, e);
+ throw new ProcessingException(
+ "Error parsing mock file " + uri,
+ e);
+ } finally {
+ if (parser != null) {
+ this.serviceManager.release(parser);
+ }
+ if (os != null) {
+ try {
+ os.flush();
+ os.close();
+ } catch (IOException e1) {
+ getLogger().warn(
+ "Failed to flush/close the outputstream. ",
+ e1);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Loads (and parses) the Document from the specified Source
+ *
+ * @param documentSrc
+ * @return
+ * @throws ProcessingException
+ */
+ private Document loadDocumentFromSource(Source documentSrc)
+ throws ProcessingException {
+ DOMParser parser = null;
+ try {
+ parser =
+ (DOMParser) this.serviceManager.lookup(DOMParser.ROLE);
+ getLogger().debug(
+ "request to load file " + documentSrc.getURI());
+ InputSource input = new InputSource(documentSrc.getURI());
+ return parser.parseDocument(input);
+ } catch (Exception e) {
+ throw new ProcessingException(
+ "failed to load file to bind to: ",
+ e);
+ } finally {
+ if (parser != null) {
+ this.serviceManager.release(parser);
+ }
+ }
+ }
+
+
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/CalculationApple.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/CalculationApple.java
new file mode 100644
index 0000000..75d255e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/CalculationApple.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples.samples;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.flow.apples.AppleController;
+import org.apache.cocoon.components.flow.apples.AppleRequest;
+import org.apache.cocoon.components.flow.apples.AppleResponse;
+
+/**
+ * CalculationApple shows an easy Apple example implementation for a Calculator.
+ * <p>
+ * It is explicitely designed to show the difference with flowscript by
+ * remembering the 'lookahead' information from the previous path that entered
+ * already the other data.
+ * <p>
+ * In other words this shows that Apples are not building a complete tree of
+ * continuations like flowscript is doing. But the initial argument of course was
+ * that some cases simply don't need it.
+ */
+public class CalculationApple extends AbstractLogEnabled implements AppleController {
+
+ BigDecimal inputA;
+ BigDecimal inputB;
+ String inputOp;
+ BigDecimal output;
+
+
+ public String toString() {
+ return "CalculationApple[ a=" + this.inputA + " | b=" + this.inputB
+ + " | op = " + this.inputOp + " | result = " + this.output + "]";
+ }
+
+ public void process(AppleRequest req, AppleResponse res) throws ProcessingException {
+ String changeTo = processRequest(req);
+ getLogger().debug(toString());
+ showNextState(res, changeTo);
+ }
+
+ private String processRequest(AppleRequest req) {
+ String changeRequest = req.getCocoonRequest().getParameter("change");
+
+ String newA = req.getCocoonRequest().getParameter("a");
+ if (newA != null) {
+ this.inputA = new BigDecimal(newA);
+ // explicitely do not set inputB and inputOp to null !
+ }
+ String newB = req.getCocoonRequest().getParameter("b");
+ if (newB != null) {
+ this.inputB = new BigDecimal(newB);
+ // explicitely do not set inputOp to null !
+ }
+ String newOp = req.getCocoonRequest().getParameter("operator");
+ if (newOp != null) {
+ this.inputOp = newOp;
+ }
+ //explicitely always do the calculation
+ calculate();
+
+ return changeRequest;
+ }
+
+
+ private void calculate() {
+ if (this.inputA == null || this.inputB == null) {
+ this.output = null;
+ } else if("plus".equals(this.inputOp)) {
+ this.output = this.inputA.add(this.inputB);
+ } else if("minus".equals(this.inputOp)) {
+ this.output = this.inputA.add(this.inputB.negate());
+ } else if("multiply".equals(this.inputOp)) {
+ this.output = this.inputA.multiply(this.inputB);
+ } else if("divide".equals(this.inputOp)) {
+ this.output = this.inputA.divide(this.inputB, BigDecimal.ROUND_HALF_EVEN);
+ } else { //not a valid operator
+ this.output = null;
+ }
+ }
+
+ private void showNextState(AppleResponse res, String changeTo) {
+ Object bizdata = buildBizData();
+
+ if (changeTo != null) {
+ res.sendPage("calc/get" + changeTo, bizdata);
+ } else if (this.inputA == null) {
+ res.sendPage("calc/getNumberA", null);
+ } else if (this.inputB == null) {
+ res.sendPage("calc/getNumberB", bizdata);
+ } else if (this.inputOp == null) {
+ res.sendPage("calc/getOperator", bizdata);
+ } else {
+ res.sendPage("calc/displayResult", bizdata);
+ }
+ }
+
+ private Object buildBizData() {
+ Map bizdata = new HashMap();
+ bizdata.put("a", this.inputA);
+ bizdata.put("b", this.inputB);
+ bizdata.put("operator", this.inputOp);
+ bizdata.put("result", this.output);
+ return bizdata;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/GuessGameApple.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/GuessGameApple.java
new file mode 100644
index 0000000..44c78ff
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/GuessGameApple.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples.samples;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.flow.apples.AppleController;
+import org.apache.cocoon.components.flow.apples.AppleRequest;
+import org.apache.cocoon.components.flow.apples.AppleResponse;
+
+/**
+ * GuessGameApple shows an easy Apples implementation for a number guessing game.
+ */
+public class GuessGameApple extends AbstractLogEnabled implements AppleController {
+
+ private final int random = (new Random()).nextInt(10) + 1;
+ private int guesses = 0;
+
+ public String toString() {
+ return "GuessGameApple[ random=" + this.random + " | guesses=" + this.guesses + "]";
+ }
+
+ public void process(AppleRequest req, AppleResponse res) throws ProcessingException {
+
+ String hint = "No hints yet.";
+ String targetURI = "guess/guess.jx";
+
+ int newGuess = -1;
+ String newGuessString = req.getCocoonRequest().getParameter("guess");
+
+ if (newGuessString != null) {
+ newGuess = Integer.parseInt(newGuessString);
+ this.guesses++;
+
+ if (this.random == newGuess) {
+ targetURI = "guess/success.jx";
+ } else {
+ if (this.random < newGuess) {
+ hint = "Try lower.";
+ } else {
+ hint = "Try higher.";
+ }
+ }
+ }
+
+ getLogger().debug(toString());
+
+ Map bizdata = new HashMap();
+ bizdata.put("random" , "" + this.random);
+ bizdata.put("guesses", "" + this.guesses);
+ bizdata.put("hint" , hint);
+
+ res.sendPage(targetURI, bizdata);
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/HanoiApple.java b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/HanoiApple.java
new file mode 100644
index 0000000..5cebd3a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/samples/HanoiApple.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.flow.apples.samples;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.flow.apples.AppleController;
+import org.apache.cocoon.components.flow.apples.AppleRequest;
+import org.apache.cocoon.components.flow.apples.AppleResponse;
+
+/**
+ * HanoiApple shows an apple maintaining the state of the fanous puzzle.
+ */
+public class HanoiApple extends AbstractLogEnabled implements AppleController {
+
+ public static final int NONE = -1;
+ public static final int SRC = 0;
+ public static final int AUX = 1;
+ public static final int DST = 2;
+
+ // full state of the puzzle is in the following variables
+ public Stack[] stacks;
+ public Object floatingDisk = null;
+ public int moves = 0;
+ public int puzzleSize = 0;
+
+
+ public String toString() {
+ return "HanoiApple[ stacks=" + this.stacks + " | floatingDisk=" + this.floatingDisk
+ + " | moves = " + this.moves + "]";
+ }
+
+
+ public void process(AppleRequest req, AppleResponse res) throws ProcessingException {
+
+ // processing
+ if (stacks == null) {
+ String requestSize = req.getCocoonRequest().getParameter("size");
+ if (requestSize != null) {
+ try {
+ int size = Integer.parseInt(requestSize);
+ intializeStacks(size);
+ } catch (NumberFormatException ignore) {
+ }
+ }
+ } else {
+ // decide selected column
+ String requestStack = req.getCocoonRequest().getParameter("stack");
+ if (requestStack != null) {
+ try {
+ int stackNdx = Integer.parseInt(requestStack);
+ if (this.floatingDisk != null) {
+ // we are in the middle of a move --> complete move if it is allowed
+ if ( this.stacks[stackNdx].size() == 0
+ || ((Integer)this.floatingDisk).intValue() < ((Integer)this.stacks[stackNdx].peek()).intValue()) {
+
+ this.stacks[stackNdx].push(this.floatingDisk);
+ this.floatingDisk = null;
+ this.moves++;
+ }
+ } else {
+ if (this.stacks[stackNdx].size() != 0) {
+ this.floatingDisk = this.stacks[stackNdx].pop();
+ }
+ }
+ } catch (RuntimeException ignore) {
+ //NUMBERFORMAT
+ //ARRAYINDEXOUTOFBOUNDS
+ }
+ }
+ }
+
+ getLogger().debug(toString());
+
+ //view generation
+ if (stacks == null) {
+ res.sendPage("hanoi/intro.jx", null);
+ } else {
+ Map bizdata = new HashMap();
+ bizdata.put("stacks" , this.stacks);
+ bizdata.put("moves" , "" + this.moves);
+ bizdata.put("floatingDisk", this.floatingDisk);
+ bizdata.put("nextMove" , this.floatingDisk==null ? "Lift it!" : "Drop it!");
+ bizdata.put("puzzleSize" , "" + this.puzzleSize);
+
+ res.sendPage("hanoi/hanoi.jx", bizdata);
+ }
+
+ }
+
+
+ private void intializeStacks(int size) {
+ if (size > 2) {
+ this.stacks = new Stack[3];
+ for (int i = 0; i < 3; i++) {
+ this.stacks[i] = new Stack();
+ }
+ for (int i = size; i > 0; i--) {
+ this.stacks[0].push(new Integer(i));
+ }
+ this.puzzleSize = size;
+ }
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/displayResult.xsp b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/displayResult.xsp
new file mode 100644
index 0000000..95d912c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/displayResult.xsp
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+
+<!--+
+ | CVS: $Id: displayResult.xsp,v 1.2 2003/11/18 01:21:56 crossley Exp $
+ | Author: Ovidiu Predescu "ovidiu@cup.hp.com"
+ | Date: March 23, 2002
+ +-->
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:jpath="http://apache.org/xsp/jpath/1.0">
+ <page>
+ <title>Calculator</title>
+ <content>
+ <form action="./calc.flow" method="post">
+ <para>a =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=NumberA"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="a"/></strong>
+ </a>
+ </para>
+ <para>b =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=NumberB"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="b"/></strong>
+ </a>
+ </para>
+ <para>Operator =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=Operator"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="operator"/></strong>
+ </a>
+ </para>
+
+ <para>Result = <strong><jpath:value-of select="result"/></strong></para>
+
+ <input type="submit" name="submit" value="Start over"/>
+ </form>
+ </content>
+ </page>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberA.xsp b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberA.xsp
new file mode 100644
index 0000000..2c8d171
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberA.xsp
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<!--+
+ | CVS: $Id: getNumberA.xsp,v 1.1 2003/08/29 22:22:05 mpo Exp $
+ | Author: Ovidiu Predescu "ovidiu@cup.hp.com"
+ | Date: March 23, 2002
+ +-->
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:jpath="http://apache.org/xsp/jpath/1.0">
+ <page>
+ <title>Calculator</title>
+ <content>
+ <para>
+ This sample is explicitely designed to provide an easy comparison grounds
+ against the same kind of application in flowScript. (check the Calculator
+ sample there too)
+ </para>
+ <para>
+ You should note especially how they handle continuation after pressing
+ the back-button. That should also explain why this approach chooses to
+ provide links to explicitely edit the previsouly entered values.
+ </para>
+ <form method="post">
+ <xsp:attribute name="action"><xsp:expr><jpath:continuation/>+".continue"</xsp:expr></xsp:attribute>
+ <para>Enter value of <strong>a</strong>: <input type="text" name="a"/></para>
+ <input type="submit" name="submit" value="Enter"/>
+ </form>
+ </content>
+ </page>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberB.xsp b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberB.xsp
new file mode 100644
index 0000000..741a4eb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getNumberB.xsp
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+
+<!--+
+ | CVS: $Id: getNumberB.xsp,v 1.3 2003/11/18 01:21:56 crossley Exp $
+ | Author: Ovidiu Predescu "ovidiu@cup.hp.com"
+ | Date: March 23, 2002
+ +-->
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:jpath="http://apache.org/xsp/jpath/1.0">
+ <page>
+ <title>Calculator</title>
+ <content>
+ <form method="post">
+ <xsp:attribute name="action"><xsp:expr><jpath:continuation/>+".continue"</xsp:expr></xsp:attribute>
+ <para>a =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=NumberA"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="a"/></strong>
+ </a>
+ </para>
+ <para>Enter value of <strong>b</strong>: <input type="text" name="b"/></para>
+ <input type="submit" name="submit" value="Enter"/>
+ </form>
+ </content>
+ </page>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getOperator.xsp b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getOperator.xsp
new file mode 100644
index 0000000..b390697
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/calc/getOperator.xsp
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+
+<!--+
+ | CVS: $Id: getOperator.xsp,v 1.3 2003/11/18 01:21:56 crossley Exp $
+ | Author: Ovidiu Predescu "ovidiu@cup.hp.com"
+ | Date: March 23, 2002
+ +-->
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:jpath="http://apache.org/xsp/jpath/1.0">
+ <page>
+ <title>Calculator</title>
+ <content>
+ <form method="post">
+ <xsp:attribute name="action"><xsp:expr><jpath:continuation/>+ ".continue"</xsp:expr></xsp:attribute>
+ <para>a =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=NumberA"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="a"/></strong>
+ </a>
+ </para>
+ <para>b =
+ <a>
+ <xsp:attribute name="href"><xsp:expr><jpath:continuation/>+".continue?change=NumberB"</xsp:expr></xsp:attribute>
+ <strong><jpath:value-of select="b"/></strong>
+ </a>
+ </para>
+ <para>Enter operator
+ <select name="operator">
+ <option>plus</option>
+ <option>minus</option>
+ <option>multiply</option>
+ <option>divide</option>
+ </select>
+ </para>
+ <input type="submit" name="submit" value="Do it!"/>
+ </form>
+ </content>
+ </page>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/guess.jx b/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/guess.jx
new file mode 100644
index 0000000..a5748a2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/guess.jx
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+
+<page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+
+ <title>Number Guessing Game</title>
+
+ <content>
+
+ <para>Guess the Number Between 1 and 10</para>
+ <para>${hint}</para>
+ <para>You've guessed ${guesses} times.</para>
+
+ <form method="post" action="${continuation.id}.continue">
+ <input type="text" name="guess"/>
+ <input type="submit" value="Guess!"/>
+ </form>
+
+ </content>
+
+</page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/success.jx b/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/success.jx
new file mode 100644
index 0000000..40f302b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/guess/success.jx
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+
+ <title>Number Guessing Game</title>
+
+ <content>
+
+ <para>Success!</para>
+ <para>The number was indeed: ${random}</para>
+ <para>It took you ${guesses} tries.</para>
+
+ <para/>
+
+ <para><a href="guess.flow">Play again</a></para>
+
+ </content>
+
+</page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.jx b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.jx
new file mode 100644
index 0000000..0b22c5d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.jx
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+
+ <title>Tower of Hanoi Puzzle</title>
+
+ <content>
+
+ <para>For some background on the puzzle, see:
+ <a href="http://www.cut-the-knot.org/recurrence/hanoi.shtml">http://www.cut-the-knot.org/recurrence/hanoi.shtml</a>
+ </para>
+
+ <para>You've currently used ${moves} moves.</para>
+
+
+ <para>The current state of the stacks is:</para>
+
+ <hn:hanoi height="${puzzleSize}" xmlns:hn="http://apache.org/cocoon/apples/samples/hanoi">
+ <hn:float size="${floatingDisk}"/>
+ <hn:stacks>
+ <jx:forEach var="stack" items="${stacks}">
+ <hn:stack>
+ <jx:forEach var="disc" items="${stack}">
+ <hn:disc size="${disc}" />
+ </jx:forEach>
+ </hn:stack>
+ </jx:forEach>
+ </hn:stacks>
+ </hn:hanoi>
+
+ </content>
+
+</page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.xsl b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.xsl
new file mode 100644
index 0000000..e182a77
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/hanoi.xsl
@@ -0,0 +1,185 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:hn="http://apache.org/cocoon/apples/samples/hanoi">
+
+
+
+
+ <xsl:template match="hn:hanoi">
+
+ <xsl:variable name="stacks" select="hn:stacks"/>
+ <xsl:variable name="height" select="@height"/>
+ <xsl:variable name="cols-per-stack" select="($height)*2 + 1"/>
+ <xsl:variable name="cols-total" select="($cols-per-stack)*3"/>
+ <xsl:variable name="on-the-move" select="boolean(hn:float/@size != '')"/>
+
+ <center>
+ <table border="0">
+ <!-- fixing col-widths row -->
+ <tr>
+ <xsl:call-template name="fix-cells" >
+ <xsl:with-param name="remaining" select="$cols-total" />
+ </xsl:call-template>
+ </tr>
+ <!-- /fixing col-widths row -->
+
+ <!-- title-row -->
+ <tr>
+ <td colspan="{$cols-total}">
+ <center>-- Towers of Hanoi Puzzle --</center>
+ <hr width="70%" />
+ </td>
+ </tr>
+ <!-- /title-row -->
+
+ <!-- moving-disc-row -->
+ <tr>
+ <td colspan="{$cols-total}"><center>Disc on the move:</center></td>
+ </tr>
+ <tr bgcolor="#ffffff" height="5px">
+ <td colspan="{$cols-per-stack}"/>
+ <xsl:call-template name="disc">
+ <xsl:with-param name="disc" select="hn:float" />
+ <xsl:with-param name="max_size" select="$height"/>
+ <xsl:with-param name="disc_color">#996633</xsl:with-param>
+ </xsl:call-template>
+ <td colspan="{$cols-per-stack}"/>
+ </tr>
+
+ <tr>
+ <td colspan="{$cols-total}"><hr width="70%"/></td>
+ </tr>
+ <!-- /moving-disc-row -->
+
+ <!-- stack-header-row -->
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$on-the-move" >
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=0">Drop It!</a></center></td>
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=1">Drop It!</a></center></td>
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=2">Drop It!</a></center></td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=0">Lift It!</a></center></td>
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=1">Lift It!</a></center></td>
+ <td colspan="{$cols-per-stack}"><center><a href="?stack=2">Lift It!</a></center></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ <!-- /stack-header-row -->
+
+
+ <!-- stack-rows -->
+ <xsl:call-template name="remaining-stack-rows">
+ <xsl:with-param name="remaining" select="$height"/>
+ <xsl:with-param name="max_size" select="$height"/>
+ <xsl:with-param name="cols-per-stack" select="$cols-per-stack"/>
+ <xsl:with-param name="stacks" select="$stacks"/>
+ </xsl:call-template>
+ <!-- /stack-rows -->
+
+ </table>
+ </center>
+ </xsl:template>
+
+
+ <xsl:template name="remaining-stack-rows">
+ <xsl:param name="remaining"/>
+ <xsl:param name="max_size"/>
+ <xsl:param name="cols-per-stack"/>
+ <xsl:param name="stacks"/>
+
+ <xsl:call-template name="stack-row">
+ <xsl:with-param name="row-number" select="$remaining"/>
+ <xsl:with-param name="max_size" select="$max_size"/>
+ <xsl:with-param name="cols-per-stack" select="$cols-per-stack"/>
+ <xsl:with-param name="stacks" select="$stacks"/>
+ </xsl:call-template>
+
+ <xsl:if test="$remaining > 1">
+ <xsl:call-template name="remaining-stack-rows">
+ <xsl:with-param name="remaining" select="$remaining - 1"/>
+ <xsl:with-param name="max_size" select="$max_size"/>
+ <xsl:with-param name="cols-per-stack" select="$cols-per-stack"/>
+ <xsl:with-param name="stacks" select="$stacks"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+
+ <xsl:template name="stack-row">
+ <xsl:param name="row-number"/>
+ <xsl:param name="max_size"/>
+ <xsl:param name="cols-per-stack"/>
+ <xsl:param name="stacks"/>
+
+ <tr height="5px" bgcolor="#ffffff">
+ <xsl:for-each select="$stacks/hn:stack">
+ <xsl:variable name="stack-ndx" select="position()"/>
+
+ <xsl:call-template name="disc">
+ <xsl:with-param name="disc" select="hn:disc[number($row-number)]" />
+ <xsl:with-param name="max_size" select="$max_size"/>
+ <xsl:with-param name="disc_color">#2C6D91</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </tr>
+ </xsl:template>
+
+
+
+ <xsl:template name="disc">
+ <xsl:param name="disc" />
+ <xsl:param name="max_size" />
+ <xsl:param name="disc_color" />
+
+ <xsl:variable name="size" select="$disc/@size" />
+
+ <xsl:choose>
+ <xsl:when test="$size > 0" >
+ <xsl:choose>
+ <xsl:when test="($max_size - $size) > 0" >
+ <td colspan="{$max_size - $size}" bgcolor="#ffffff"/>
+ <td colspan="{$size}" bgcolor="{$disc_color}"/>
+ <td bgcolor="#000000"/>
+ <td colspan="{$size}" bgcolor="{$disc_color}"/>
+ <td colspan="{$max_size - $size}" bgcolor="#ffffff"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <td colspan="{$size}" bgcolor="{$disc_color}"/>
+ <td bgcolor="#000000"/>
+ <td colspan="{$size}" bgcolor="{$disc_color}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <td colspan="{$max_size}" bgcolor="#ffffff"/>
+ <td bgcolor="#000000"/>
+ <td colspan="{$max_size}" bgcolor="#ffffff"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+
+ <xsl:template name="fix-cells">
+ <xsl:param name="remaining"/>
+
+ <td width="5px" />
+
+ <xsl:if test="$remaining > 1">
+ <xsl:call-template name="fix-cells">
+ <xsl:with-param name="remaining" select="$remaining - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/intro.jx b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/intro.jx
new file mode 100644
index 0000000..52ceb28
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/hanoi/intro.jx
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+
+ <title>Tower of Hanoi Puzzle</title>
+
+ <content>
+
+ <para>For some background on the puzzle, see:
+ <a href="http://www.cut-the-knot.org/recurrence/hanoi.shtml">http://www.cut-the-knot.org/recurrence/hanoi.shtml</a>
+ </para>
+
+ <para>To start the puzzle interaction you need to initilaize the number of discs: </para>
+
+ <form method="post" action="${continuation.id}.continue">
+
+ <select name="size">
+ <option>3</option>
+ <option selected="selected">4</option>
+ <option>5</option>
+ <option>6</option>
+ <option>7</option>
+ <option>8</option>
+ </select>
+
+ <input type="submit" value="Start!"/>
+
+ </form>
+
+ </content>
+
+</page>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/apples/samples/sitemap.xmap
new file mode 100644
index 0000000..8a4fff1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/sitemap.xmap
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--+
+ | Apples block samples sitemap
+ |
+ | CVS $Id: sitemap.xmap,v 1.5 2003/09/25 21:18:49 mpo Exp $
+ +-->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+ <map:components>
+ <map:generators default="file">
+ <map:generator name="woody" src="org.apache.cocoon.woody.generation.WoodyGenerator" logger="woody"/>
+ <map:generator name="jx" src="org.apache.cocoon.generation.JXTemplateGenerator" label="content,data" logger="sitemap.generator.jx"/>
+ </map:generators>
+ <map:transformers default="xalan">
+ <map:transformer name="woody" src="org.apache.cocoon.woody.transformation.WoodyTemplateTransformer" logger="woody"/>
+ <map:transformer name="i18n" src="org.apache.cocoon.transformation.I18nTransformer">
+ <catalogues default="other">
+ <catalogue id="other" name="OtherMessages" location="context://samples/woody/messages"/>
+ <catalogue id="woody" name="WoodyMessages" location="context://samples/woody/messages"/>
+ </catalogues>
+ <cache-at-startup>true</cache-at-startup>
+ </map:transformer>
+ </map:transformers>
+ <map:selectors default="browser">
+ <map:selector name="request-method" src="org.apache.cocoon.selection.RequestMethodSelector"/>
+ </map:selectors>
+ <map:actions/>
+ <map:pipes default="caching"/>
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view from-label="content" name="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="content" name="pretty-content">
+ <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+ <map:serialize type="html"/>
+ </map:view>
+
+ <map:view from-position="last" name="links">
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+
+
+ <map:resources>
+ <map:resource name="serialize-jx-screen" >
+ <map:transform src="context://samples/common/style/xsl/html/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="/samples/apples/{screen-src}"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
+ <map:serialize type="html" />
+ </map:resource>
+ </map:resources>
+
+
+ <map:flow language="apples"/>
+
+
+ <map:pipelines>
+ <map:pipeline>
+
+ <map:match pattern="">
+ <map:generate src="welcome.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="*.continue">
+ <map:call continuation="{1}"/>
+ </map:match>
+
+
+ <!--+
+ | Binding form sample, reuses pipelines stolen from woody
+ +-->
+
+ <map:match pattern="form2xml.flow">
+ <map:call function="org.apache.cocoon.components.flow.apples.samples.BindingWoodyApple">
+ <map:parameter name="form-src" value="context://samples/woody/forms/form2_model.xml"/>
+ <map:parameter name="binding-src" value="context://samples/woody/forms/form2_bind_xml.xml"/>
+ <map:parameter name="documentURI" value="context://samples/woody/forms/form2_data.xml"/>
+ <map:parameter name="form-pipe" value="/samples/woody/form2-display-pipeline"/>
+ <map:parameter name="valid-pipe" value="/samples/woody/form2-success-pipeline"/>
+ </map:call>
+ </map:match>
+
+
+ <!--+
+ | Calculator sample, uses stolen and modified xsp's from flowscript sample
+ +-->
+
+ <map:match pattern="calc.flow">
+ <map:call function="org.apache.cocoon.components.flow.apples.samples.CalculationApple"/>
+ </map:match>
+
+ <map:match pattern="calc/*">
+ <map:generate type="serverpages" src="calc/{1}.xsp"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="/samples/apples/calc/{1}.xsp"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+
+ <!--+
+ | Guess Game sample, borrowed setup from the uses stolen and modified xsp's from flowscript
+ +-->
+
+ <map:match pattern="guess.flow">
+ <map:call function="org.apache.cocoon.components.flow.apples.samples.GuessGameApple"/>
+ </map:match>
+
+
+ <!--+
+ | Tower of Hanoi Puzzle sample.
+ +-->
+
+ <map:match pattern="hanoi.flow">
+ <map:call function="org.apache.cocoon.components.flow.apples.samples.HanoiApple"/>
+ </map:match>
+
+
+ <!--+
+ | JX screen pipes
+ +-->
+
+ <map:match pattern="hanoi/hanoi.jx">
+ <map:generate type="jx" src="hanoi/hanoi.jx"/>
+ <map:transform src="hanoi/hanoi.xsl" />
+ <map:call resource="serialize-jx-screen">
+ <map:parameter name="screen-src" value="hanoi/hanoi.jx"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="*/*.jx">
+ <map:generate type="jx" src="{1}/{2}.jx"/>
+ <map:call resource="serialize-jx-screen">
+ <map:parameter name="screen-src" value="{1}/{2}.jx"/>
+ </map:call>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/apples/samples/welcome.xml b/ASF_20_SRC_AUTO/src/blocks/apples/samples/welcome.xml
new file mode 100644
index 0000000..807e65f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/apples/samples/welcome.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<samples xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <group name="Main examples page.">
+ <sample name="Back" href="..">to Cocoon examples main page</sample>
+ <note>
+ Apples is a new flow implementation for Cocoon that allows you to write your
+ deciding flow components (business logic) in pure OO Java.
+ Apples is currently still alpha software and under active development. Your
+ feedback is very much welcome on the Cocoon mailing lists.
+ </note>
+ <sample name="Apples Documentation" href="http://wiki.cocoondev.org/Wiki.jsp?page=Apples">
+ Currently there is no documentation available (not even on the Cocoon Wiki).</sample>
+ </group>
+
+ <group name="Apples Samples">
+ <sample name="Woody XML Binding." href="form2xml.flow">An Apple controlling a form for just editing an XML file.</sample>
+ <sample name="Calculation." href="calc.flow">Simplistic calculator implementation.</sample>
+ <sample name="Number Guessing." href="guess.flow">Number Guessing game.</sample>
+ <sample name="Tower of Hanoi puzzle." href="hanoi.flow">The popular mind puzzle.</sample>
+ </group>
+
+</samples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/conf/asciiart.xsamples b/ASF_20_SRC_AUTO/src/blocks/asciiart/conf/asciiart.xsamples
new file mode 100644
index 0000000..965a4ca
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/conf/asciiart.xsamples
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='ASCII Art']">
+
+ <group name="ASCII Art">
+ <sample name="ASCII Art" href="asciiart/">
+ Plain text files with character-based artwork and diagrams are presented
+ in various formats, e.g. plain text, JPEG, PNG
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtPad.java b/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtPad.java
new file mode 100644
index 0000000..cfcaef1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtPad.java
@@ -0,0 +1,905 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation.asciiart;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.regexp.RE;
+import org.apache.regexp.RESyntaxException;
+
+/**
+ * A drawing ascii art pad.
+ *
+ * @author huber@apache.org
+ * @since 18. Dezember 2002
+ * @version CVS $Id: AsciiArtPad.java,v 1.5 2004/03/05 13:01:38 bdelacretaz Exp $
+ */
+public class AsciiArtPad {
+
+ private int width;
+ private int height;
+
+ /**
+ * List of AsciiArt elements
+ */
+ private List pad;
+
+ private double xGrid;
+ private double yGrid;
+
+
+ /**
+ *Constructor for the AsciiArtPad object
+ */
+ public AsciiArtPad() {
+ pad = new ArrayList();
+ }
+
+
+ /**
+ *Constructor for the AsciiArtPad object
+ *
+ *@param w Description of the Parameter
+ *@param h Description of the Parameter
+ */
+ public AsciiArtPad(int w, int h) {
+ width = w;
+ height = h;
+
+ pad = new ArrayList();
+ }
+
+
+ /**
+ * Sets the width attribute of the AsciiArtPad object
+ *
+ *@param width The new width value
+ */
+ public void setWidth(int width) {
+ this.width = width;
+ }
+
+
+ /**
+ * Sets the height attribute of the AsciiArtPad object
+ *
+ *@param height The new height value
+ */
+ public void setHeight(int height) {
+ this.height = height;
+ }
+
+
+ /**
+ * Sets the xGrid attribute of the AsciiArtPad object
+ *
+ *@param xGrid The new xGrid value
+ */
+ public void setXGrid(double xGrid) {
+ this.xGrid = xGrid;
+ }
+
+
+ /**
+ * Sets the yGrid attribute of the AsciiArtPad object
+ *
+ *@param yGrid The new yGrid value
+ */
+ public void setYGrid(double yGrid) {
+ this.yGrid = yGrid;
+ }
+
+
+ /**
+ * Gets the width attribute of the AsciiArtPad object
+ *
+ *@return The width value
+ */
+ public int getWidth() {
+ return width;
+ }
+
+
+ /**
+ * Gets the height attribute of the AsciiArtPad object
+ *
+ *@return The height value
+ */
+ public int getHeight() {
+ return height;
+ }
+
+
+ /**
+ * Gets the xGrid attribute of the AsciiArtPad object
+ *
+ *@return The xGrid value
+ */
+ public double getXGrid() {
+ return xGrid;
+ }
+
+
+ /**
+ * Gets the yGrid attribute of the AsciiArtPad object
+ *
+ *@return The yGrid value
+ */
+ public double getYGrid() {
+ return yGrid;
+ }
+
+
+ /**
+ * Add a AsciiArtElement
+ *
+ *@param o the AsciiArtElement object
+ */
+ public void add(Object o) {
+ pad.add(o);
+ }
+
+
+ /**
+ * Iterator of AsciiArtPad
+ *
+ *@return Iterator iterating over all AsciiArtElements
+ */
+ public Iterator iterator() {
+ return pad.iterator();
+ }
+
+
+ /**
+ * An AsciiArtElement describing a line.
+ *
+ */
+ public static class AsciiArtLine implements AsciiArtElement {
+ double xStart;
+ double yStart;
+ double xEnd;
+ double yEnd;
+
+
+ /**
+ *Constructor for the AsciiArtLine object
+ *
+ *@param start Description of the Parameter
+ *@param end Description of the Parameter
+ */
+ public AsciiArtLine(AsciiArtCoordinate start, AsciiArtCoordinate end) {
+ xStart = start.getXDouble();
+ yStart = start.getYDouble();
+ xEnd = end.getXDouble();
+ yEnd = end.getYDouble();
+ }
+
+
+ /**
+ * Sets the xStart attribute of the AsciiArtLine object
+ *
+ *@param xStart The new xStart value
+ */
+ public void setXStart(double xStart) {
+ this.xStart = xStart;
+ }
+
+
+ /**
+ * Sets the yStart attribute of the AsciiArtLine object
+ *
+ *@param yStart The new yStart value
+ */
+ public void setYStart(double yStart) {
+ this.yStart = yStart;
+ }
+
+
+ /**
+ * Sets the xEnd attribute of the AsciiArtLine object
+ *
+ *@param xEnd The new xEnd value
+ */
+ public void setXEnd(double xEnd) {
+ this.xEnd = xEnd;
+ }
+
+
+ /**
+ * Sets the yEnd attribute of the AsciiArtLine object
+ *
+ *@param yEnd The new yEnd value
+ */
+ public void setYEnd(double yEnd) {
+ this.yEnd = yEnd;
+ }
+
+
+ /**
+ * Gets the xStart attribute of the AsciiArtLine object
+ *
+ *@return The xStart value
+ */
+ public double getXStart() {
+ return xStart;
+ }
+
+
+ /**
+ * Gets the yStart attribute of the AsciiArtLine object
+ *
+ *@return The yStart value
+ */
+ public double getYStart() {
+ return yStart;
+ }
+
+
+ /**
+ * Gets the xEnd attribute of the AsciiArtLine object
+ *
+ *@return The xEnd value
+ */
+ public double getXEnd() {
+ return xEnd;
+ }
+
+
+ /**
+ * Gets the yEnd attribute of the AsciiArtLine object
+ *
+ *@return The yEnd value
+ */
+ public double getYEnd() {
+ return yEnd;
+ }
+
+
+ /**
+ * Descriptive string
+ *
+ *@return String
+ */
+ public String toString() {
+ String s =
+ "[xStart:" + String.valueOf(xStart) + "]" +
+ "[yStart:" + String.valueOf(yStart) + "]" +
+ "[xEnd:" + String.valueOf(xEnd) + "]" +
+ "[yEnd:" + String.valueOf(yEnd) + "]";
+ return s;
+ }
+ }
+
+
+ /**
+ * An AsciiArtElement describing a rectangle.
+ *
+ */
+ public static class AsciiArtRect implements AsciiArtElement {
+ double xUpperLeft;
+ double yUpperLeft;
+ double xLowerRight;
+ double yLowerRight;
+
+
+ /**
+ *Constructor for the AsciiArtRect object
+ *
+ *@param upperLeft Description of the Parameter
+ *@param lowerRight Description of the Parameter
+ */
+ public AsciiArtRect(AsciiArtCoordinate upperLeft, AsciiArtCoordinate lowerRight) {
+ xUpperLeft = upperLeft.getXDouble();
+ yUpperLeft = upperLeft.getYDouble();
+ xLowerRight = lowerRight.getXDouble();
+ yLowerRight = lowerRight.getYDouble();
+ }
+
+
+ /**
+ * Sets the xUpperLeft attribute of the AsciiArtRect object
+ *
+ *@param xUpperLeft The new xUpperLeft value
+ */
+ public void setXUpperLeft(double xUpperLeft) {
+ this.xUpperLeft = xUpperLeft;
+ }
+
+
+ /**
+ * Sets the yUpperLeft attribute of the AsciiArtRect object
+ *
+ *@param yUpperLeft The new yUpperLeft value
+ */
+ public void setYUpperLeft(double yUpperLeft) {
+ this.yUpperLeft = yUpperLeft;
+ }
+
+
+ /**
+ * Sets the xLowerRight attribute of the AsciiArtRect object
+ *
+ *@param xLowerRight The new xLowerRight value
+ */
+ public void setXLowerRight(double xLowerRight) {
+ this.xLowerRight = xLowerRight;
+ }
+
+
+ /**
+ * Sets the yLowerRight attribute of the AsciiArtRect object
+ *
+ *@param yLowerRight The new yLowerRight value
+ */
+ public void setYLowerRight(double yLowerRight) {
+ this.yLowerRight = yLowerRight;
+ }
+
+
+ /**
+ * Gets the xUpperLeft attribute of the AsciiArtRect object
+ *
+ *@return The xUpperLeft value
+ */
+ public double getXUpperLeft() {
+ return xUpperLeft;
+ }
+
+
+ /**
+ * Gets the yUpperLeft attribute of the AsciiArtRect object
+ *
+ *@return The yUpperLeft value
+ */
+ public double getYUpperLeft() {
+ return yUpperLeft;
+ }
+
+
+ /**
+ * Gets the xLowerRight attribute of the AsciiArtRect object
+ *
+ *@return The xLowerRight value
+ */
+ public double getXLowerRight() {
+ return xLowerRight;
+ }
+
+
+ /**
+ * Gets the yLowerRight attribute of the AsciiArtRect object
+ *
+ *@return The yLowerRight value
+ */
+ public double getYLowerRight() {
+ return yLowerRight;
+ }
+
+
+ /**
+ * Gets the width attribute of the AsciiArtRect object
+ *
+ *@return The width value
+ */
+ public double getWidth() {
+ return Math.abs(xUpperLeft - xLowerRight);
+ }
+
+
+ /**
+ * Gets the height attribute of the AsciiArtRect object
+ *
+ *@return The height value
+ */
+ public double getHeight() {
+ return Math.abs(yUpperLeft - yLowerRight);
+ }
+
+
+ /**
+ * Descriptive string
+ *
+ *@return String
+ */
+ public String toString() {
+ String s =
+ "[xUpperLeft:" + String.valueOf(xUpperLeft) + "]" +
+ "[yUpperLeft:" + String.valueOf(yUpperLeft) + "]" +
+ "[xLowerRight:" + String.valueOf(xLowerRight) + "]" +
+ "[yLowerRight:" + String.valueOf(yLowerRight) + "]";
+ return s;
+ }
+ }
+
+
+ /**
+ * An AsciiArtElement describing a string of text.
+ *
+ */
+ public static class AsciiArtString implements AsciiArtElement {
+ private double x;
+ private double y;
+ private String s;
+
+
+ /**
+ *Constructor for the AsciiArtString object
+ *
+ *@param s Description of the Parameter
+ *@param aac Description of the Parameter
+ */
+ public AsciiArtString(AsciiArtCoordinate aac, String s) {
+ this.x = aac.getXDouble();
+ this.y = aac.getYDouble();
+ this.s = s;
+ }
+
+
+ /**
+ * Sets the x attribute of the AsciiArtString object
+ *
+ *@param x The new x value
+ */
+ public void setX(double x) {
+ this.x = x;
+ }
+
+
+ /**
+ * Sets the y attribute of the AsciiArtString object
+ *
+ *@param y The new y value
+ */
+ public void setY(double y) {
+ this.y = y;
+ }
+
+
+ /**
+ * Sets the s attribute of the AsciiArtString object
+ *
+ *@param s The new s value
+ */
+ public void setS(String s) {
+ this.s = s;
+ }
+
+
+ /**
+ * Gets the x attribute of the AsciiArtString object
+ *
+ *@return The x value
+ */
+ public double getX() {
+ return x;
+ }
+
+
+ /**
+ * Gets the y attribute of the AsciiArtString object
+ *
+ *@return The y value
+ */
+ public double getY() {
+ return y;
+ }
+
+
+ /**
+ * Gets the s attribute of the AsciiArtString object
+ *
+ *@return The s value
+ */
+ public String getS() {
+ return s;
+ }
+
+
+ /**
+ * Descriptive string
+ *
+ *@return String
+ */
+ public String toString() {
+ String s =
+ "[x:" + String.valueOf(x) + "]" +
+ "[y:" + String.valueOf(y) + "]" +
+ "[s:" + String.valueOf(this.s) + "]";
+ return s;
+ }
+ }
+
+
+ /**
+ * Helper class describing a coordinate of AsciiArtPad elements.
+ *
+ */
+ public static class AsciiArtCoordinate {
+ int x, y;
+ AsciiArtPad asciiArtPad;
+ double tx, ty;
+
+
+ /**
+ *Constructor for the AsciiArtCoordinate object
+ */
+ public AsciiArtCoordinate() { }
+
+
+ /**
+ *Constructor for the AsciiArtCoordinate object
+ *
+ *@param asciiArtPad Description of the Parameter
+ */
+ public AsciiArtCoordinate(AsciiArtPad asciiArtPad) {
+ setAsciiArtPad(asciiArtPad);
+ }
+
+
+ /**
+ *Constructor for the AsciiArtCoordinate object
+ *
+ *@param x Description of the Parameter
+ *@param y Description of the Parameter
+ */
+ public AsciiArtCoordinate(int x, int y) {
+ setXY(x, y);
+ }
+
+
+ /**
+ * Sets the asciiArtPad attribute of the AsciiArtCoordinate object
+ *
+ *@param asciiArtPad The new asciiArtPad value
+ */
+ public void setAsciiArtPad(AsciiArtPad asciiArtPad) {
+ this.asciiArtPad = asciiArtPad;
+ }
+
+
+ /**
+ * Sets the xY attribute of the AsciiArtCoordinate object
+ *
+ *@param tx The new transXY value
+ *@param ty The new transXY value
+ */
+ public void setTransXY(double tx, double ty) {
+ this.tx = tx;
+ this.ty = ty;
+ }
+
+
+ /**
+ * Sets the xY attribute of the AsciiArtCoordinate object
+ *
+ *@param x The new xY value
+ *@param y The new xY value
+ */
+ public void setXY(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+
+ /**
+ * Gets the xDouble attribute of the AsciiArtCoordinate object
+ *
+ *@return The xDouble value
+ */
+ public double getXDouble() {
+ return x * asciiArtPad.getXGrid() + tx;
+ }
+
+
+ /**
+ * Gets the yDouble attribute of the AsciiArtCoordinate object
+ *
+ *@return The yDouble value
+ */
+ public double getYDouble() {
+ return y * asciiArtPad.getYGrid() + ty;
+ }
+ }
+
+
+ /**
+ * Helper class containing the ascii text data,
+ * acting as input of an AsciiArtPad
+ *
+ */
+ public static class AsciiArt {
+ private String[] s;
+ private int w;
+ private int h;
+
+
+ /**
+ *Constructor for the AsciiArt object
+ *
+ *@param s Description of the Parameter
+ */
+ public AsciiArt(String[] s) {
+ this.s = s;
+ int length = s.length;
+ h = length;
+ w = 0;
+ for (int i = 0; i < length; i++) {
+ String line = s[i];
+ if (line != null && line.length() > w) {
+ w = line.length();
+ }
+ }
+ }
+
+
+ /**
+ * Gets the w attribute of the AsciiArt object
+ *
+ *@return The w value
+ */
+ public int getW() {
+ return w;
+ }
+
+
+ /**
+ * Gets the h attribute of the AsciiArt object
+ *
+ *@return The h value
+ */
+ public int getH() {
+ return h;
+ }
+
+
+ /**
+ * Gets the row attribute of the AsciiArt object
+ *
+ *@param r Description of the Parameter
+ *@return The row value
+ */
+ public String getRow(int r) {
+ String row = this.s[r];
+ return row;
+ }
+
+
+ /**
+ * Gets the column attribute of the AsciiArt object
+ *
+ *@param c Description of the Parameter
+ *@return The column value
+ */
+ public String getColumn(int c) {
+ StringBuffer column = new StringBuffer();
+
+ final String EMPTY_CHAR = " ";
+ for (int i = 0; i < s.length; i++) {
+ if (s[i] != null && c < s[i].length()) {
+ column.append(s[i].charAt(c));
+ } else {
+ column.append(EMPTY_CHAR);
+ }
+ }
+ return column.toString();
+ }
+ }
+
+
+ /**
+ * Builder of AsciiArtElements from an AsciiArt input.
+ *
+ */
+ public static class AsciiArtPadBuilder {
+ private AsciiArtPad asciiArtPad;
+ private AsciiArt aa;
+
+ final String EDGE_GROUP = "[+\\\\/]";
+ final String HLINE_GROUP = "[\\-~=+]";
+ final String VLINE_GROUP = "[|+]";
+
+ final String STRING_SUFFIX_GROUP = "[^\\-|~=\\/+ \\\\]";
+ //final String STRING_PREFIX_GROUP = "[a-zA-Z0-9_\\*;\\.#]";
+ final String STRING_PREFIX_GROUP = STRING_SUFFIX_GROUP;
+
+
+ /**
+ *Constructor for the AsciiArtPadBuilder object
+ *
+ *@param asciiArtPad Description of the Parameter
+ */
+ public AsciiArtPadBuilder(AsciiArtPad asciiArtPad) {
+ this.asciiArtPad = asciiArtPad;
+ }
+
+
+ /**
+ * Build AsciiArtElement from an asciiArt
+ *
+ *@param asciiArt Description of the Parameter
+ */
+ public void build(String[] asciiArt) {
+ aa = new AsciiArt(asciiArt);
+ asciiArtPad.setWidth(aa.getW());
+ asciiArtPad.setHeight(aa.getH());
+
+ // find asciiArt patterns
+ findRectPattern();
+ findCornerPattern();
+ findLinePattern();
+ findStringPattern();
+ }
+
+
+ /**
+ * Find rectangles in the AsciiArt.
+ * not implemented yet.
+ */
+ protected void findRectPattern() {
+ }
+
+
+ /**
+ * Find corners in the AsciiArt
+ */
+ protected void findCornerPattern() {
+ AsciiArtCoordinate aacStart = new AsciiArtCoordinate(this.asciiArtPad);
+ aacStart.setTransXY(0, asciiArtPad.getYGrid() / 2);
+ AsciiArtCoordinate aacEnd = new AsciiArtCoordinate(this.asciiArtPad);
+ aacEnd.setTransXY(0, asciiArtPad.getYGrid() / 2);
+
+ // hor line
+ try {
+ final RE reCorner = new RE(EDGE_GROUP);
+ for (int r = 0; r < aa.getH(); r++) {
+ String row = aa.getRow(r);
+ int startIndex = 0;
+ while (reCorner.match(row, startIndex)) {
+ String s = reCorner.getParen(0);
+ int mStart = reCorner.getParenStart(0);
+ int mEnd = reCorner.getParenEnd(0);
+
+ if (s.equals("\\")) {
+ aacStart.setXY(mStart, r - 1);
+ aacEnd.setXY(mStart + 1, r);
+ } else if (s.equals("/")) {
+ aacStart.setXY(mStart + 1, r - 1);
+ aacEnd.setXY(mStart, r);
+ } else {
+ aacStart.setXY(mStart, r);
+ aacEnd.setXY(mStart, r);
+ }
+ AsciiArtLine aal = new AsciiArtLine(aacStart, aacEnd);
+ this.asciiArtPad.add(aal);
+
+ if (startIndex >= mEnd) {
+ break;
+ }
+ startIndex = mEnd;
+ }
+ }
+ } catch (RESyntaxException rese) {
+ rese.printStackTrace();
+ }
+
+ }
+
+
+ /**
+ * Find lines in the AsciiArt
+ */
+ protected void findLinePattern() {
+ AsciiArtCoordinate aacStart = new AsciiArtCoordinate(this.asciiArtPad);
+ aacStart.setTransXY(0, asciiArtPad.getYGrid() / 2);
+ AsciiArtCoordinate aacEnd = new AsciiArtCoordinate(this.asciiArtPad);
+ aacEnd.setTransXY(0, asciiArtPad.getYGrid() / 2);
+
+ // hor line
+ try {
+ final RE reHorLine = new RE(HLINE_GROUP + "+");
+ for (int r = 0; r < aa.getH(); r++) {
+ String row = aa.getRow(r);
+ int startIndex = 0;
+ while (reHorLine.match(row, startIndex)) {
+ int mStart = reHorLine.getParenStart(0);
+ int mEnd = reHorLine.getParenEnd(0);
+
+ aacStart.setXY(mStart, r);
+ aacEnd.setXY(mEnd - 1, r);
+ AsciiArtLine aal = new AsciiArtLine(aacStart, aacEnd);
+ this.asciiArtPad.add(aal);
+
+ if (startIndex >= mEnd) {
+ break;
+ }
+ startIndex = mEnd;
+ }
+ }
+ } catch (RESyntaxException rese) {
+ rese.printStackTrace();
+ }
+
+ // ver line
+ try {
+ RE reVerLine = new RE(VLINE_GROUP + "+");
+ for (int c = 0; c < aa.getW(); c++) {
+ String col = aa.getColumn(c);
+ int startIndex = 0;
+ while (reVerLine.match(col, startIndex)) {
+ int mStart = reVerLine.getParenStart(0);
+ int mEnd = reVerLine.getParenEnd(0);
+
+ aacStart.setXY(c, mStart);
+ aacEnd.setXY(c, mEnd - 1);
+ AsciiArtLine aal = new AsciiArtLine(aacStart, aacEnd);
+ this.asciiArtPad.add(aal);
+
+ if (startIndex >= mEnd) {
+ break;
+ }
+ startIndex = mEnd;
+ }
+ }
+ } catch (RESyntaxException rese) {
+ rese.printStackTrace();
+ }
+ }
+
+
+ /**
+ * Find string text in the AsciiArt.
+ */
+ protected void findStringPattern() {
+ AsciiArtCoordinate aacStart = new AsciiArtCoordinate(this.asciiArtPad);
+ aacStart.setTransXY(0, 3 * asciiArtPad.getYGrid() / 4);
+ // string
+ try {
+ final RE reString = new RE(STRING_PREFIX_GROUP + STRING_SUFFIX_GROUP + "*");
+ for (int r = 0; r < aa.getH(); r++) {
+ String row = aa.getRow(r);
+ int startIndex = 0;
+ while (reString.match(row, startIndex)) {
+ String s = reString.getParen(0);
+ int mStart = reString.getParenStart(0);
+ int mEnd = reString.getParenEnd(0);
+
+ aacStart.setXY(mStart, r);
+ AsciiArtString aas = new AsciiArtString(aacStart, s);
+ this.asciiArtPad.add(aas);
+
+ if (startIndex >= mEnd) {
+ break;
+ }
+ startIndex = mEnd;
+ }
+ }
+ } catch (RESyntaxException rese) {
+ rese.printStackTrace();
+ }
+ }
+
+ }
+
+
+ /**
+ * Marker interface of objects addable to the AsciiArtPad
+ *
+ */
+ public static interface AsciiArtElement {
+ }
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtSVGGenerator.java b/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtSVGGenerator.java
new file mode 100644
index 0000000..b44802c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/java/org/apache/cocoon/generation/asciiart/AsciiArtSVGGenerator.java
@@ -0,0 +1,376 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation.asciiart;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.CascadingIOException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.generation.AbstractGenerator;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * A simple AsciiArt text SVG XML generator.
+ *
+ * @author <a href="mailto:huber@apache.org">Bernhard Huber</a>
+ * @version CVS $Id: AsciiArtSVGGenerator.java,v 1.5 2004/03/05 13:01:38 bdelacretaz Exp $
+ * @since Cocoon 2.1, 22 December 2002
+ */
+public class AsciiArtSVGGenerator
+ extends AbstractGenerator
+ implements CacheableProcessingComponent {
+
+ /**
+ * The input source
+ */
+ protected Source inputSource;
+
+ private AttributesImpl attributes = null;
+ private AsciiArtPad asciiArtPad;
+
+ //private String PREFIX = "svg";
+ private String PREFIX = "";
+ private String URI = "http://www.w3.org/2000/svg";
+
+ /** default SVG line attributes
+ */
+ private final String DEFAULT_LINE_ATTRIBUTE = "stroke:black; stroke-width:1.5";
+
+ /** default SVG text attribute
+ */
+ private final String DEFAULT_TEXT_ATTRIBUTE = "font-size: 12; font-family:Times Roman; fill:blue;";
+
+ private String lineAttribute = DEFAULT_LINE_ATTRIBUTE;
+ private String textAttribute = DEFAULT_TEXT_ATTRIBUTE;
+
+
+ final int DEFAULT_X_GRID = 10;
+ final int DEFAULT_Y_GRID = 12;
+ private int xGrid = DEFAULT_X_GRID;
+ private int yGrid = DEFAULT_Y_GRID;
+
+ /**
+ * Setup the AsciiArtSVG generator.
+ * Try to get the last modification date of the source for caching.
+ *
+ *@param resolver Cocoon's resolver
+ *@param objectModel Cocoon's objectModel
+ *@param src generator's src attribute
+ *@param par sitemap parameters
+ *@exception ProcessingException setup fails
+ *@exception SAXException sax generation fails
+ *@exception IOException general io fails
+ */
+ public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
+ throws ProcessingException, SAXException, IOException {
+ super.setup(resolver, objectModel, src, par);
+
+ try {
+ this.inputSource = resolver.resolveURI(src);
+ } catch (SourceException se) {
+ throw SourceUtil.handle("Error during resolving of '" + src + "'.", se);
+ }
+
+ // setup lineAttribute
+ lineAttribute = par.getParameter( "line-attribute", DEFAULT_LINE_ATTRIBUTE );
+ // setup textAttribute
+ textAttribute = par.getParameter( "text-attribute", DEFAULT_TEXT_ATTRIBUTE );
+
+ xGrid = par.getParameterAsInteger( "x-grid", DEFAULT_X_GRID );
+ yGrid = par.getParameterAsInteger( "y-grid", DEFAULT_Y_GRID );
+ }
+
+
+ /**
+ * Recycle this component.
+ * All instance variables are set to <code>null</code>.
+ */
+ public void recycle() {
+ if (null != this.inputSource) {
+ super.resolver.release(this.inputSource);
+ this.inputSource = null;
+ }
+ super.recycle();
+ }
+
+
+ /**
+ * Generate the unique key.
+ * This key must be unique inside the space of this component.
+ *
+ *@return The generated key hashes the src
+ */
+ public java.io.Serializable getKey() {
+ return this.inputSource.getURI();
+ }
+
+
+ /**
+ * Generate the validity object.
+ *
+ *@return The generated validity object or <code>null</code> if the
+ * component is currently not cacheable.
+ */
+ public SourceValidity getValidity() {
+ return this.inputSource.getValidity();
+ }
+
+
+ /**
+ * Generate XML data.
+ *
+ *@exception IOException Description of the Exception
+ *@exception SAXException Description of the Exception
+ *@exception ProcessingException Description of the Exception
+ */
+ public void generate()
+ throws IOException, SAXException, ProcessingException {
+ try {
+ if (this.getLogger().isDebugEnabled()) {
+ this.getLogger().debug("processing asciiart file " + super.source);
+ this.getLogger().debug("asciiart file resolved to " + this.inputSource.getURI());
+ }
+
+ // read the ascii art
+ String[] asciiArt = readAsciiArt();
+ // setup ascii art pad
+ asciiArtPad = new AsciiArtPad();
+ asciiArtPad.setXGrid(this.xGrid);
+ asciiArtPad.setYGrid(this.yGrid);
+
+ // build the ascii art
+ AsciiArtPad.AsciiArtPadBuilder builder = new AsciiArtPad.AsciiArtPadBuilder(asciiArtPad);
+ builder.build(asciiArt);
+ attributes = new AttributesImpl();
+
+ // start the document
+ this.contentHandler.startDocument();
+ this.contentHandler.startPrefixMapping(PREFIX, URI);
+
+ // generate root element
+ attributes.clear();
+ // set svg attributes
+ addAttribute("width", String.valueOf(asciiArtPad.getXGrid() * asciiArtPad.getWidth()));
+ addAttribute("height", String.valueOf(asciiArtPad.getYGrid() * asciiArtPad.getHeight()));
+ startElement("svg", attributes);
+
+ // generate svg g, and path elements
+ attributes.clear();
+ // set line attributes
+ addAttribute("style", this.lineAttribute);
+ startElement("g", attributes);
+ generateSVGLineElements();
+ endElement("g");
+
+ // generate svg g, and text elements
+ attributes.clear();
+ // set text attributes
+ addAttribute("style", this.textAttribute);
+ startElement("g", attributes);
+ generateSVGTextElements();
+ endElement("g");
+
+ // end root element, document
+ endElement("svg");
+ this.contentHandler.endPrefixMapping(PREFIX);
+ this.contentHandler.endDocument();
+ } catch (SAXException e) {
+ final Exception cause = e.getException();
+ if (cause != null) {
+ if (cause instanceof ProcessingException) {
+ throw (ProcessingException) cause;
+ }
+ if (cause instanceof IOException) {
+ throw (IOException) cause;
+ }
+ if (cause instanceof SAXException) {
+ throw (SAXException) cause;
+ }
+ throw new ProcessingException("Could not read resource "
+ + this.inputSource.getURI(), cause);
+ }
+ throw e;
+ }
+ }
+
+
+ /**
+ * Read the ascii art from the input source.
+ *
+ *@return String[] describing the ascii art
+ *@exception IOException reading the ascii art fails
+ */
+ protected String[] readAsciiArt() throws IOException {
+ InputStream is = null;
+ BufferedReader br = null;
+ try {
+ is = this.inputSource.getInputStream();
+ br = new BufferedReader(new InputStreamReader(is));
+ String line;
+ List lines = new ArrayList();
+ while ((line = br.readLine()) != null) {
+ lines.add(line);
+ }
+ String[] asciiArt = (String[]) lines.toArray(new String[0]);
+ return asciiArt;
+ } catch (SourceException se) {
+ throw new CascadingIOException("Cannot get input stream", se);
+ } finally {
+ if (is != null) {
+ is.close();
+ }
+ if (br != null) {
+ br.close();
+ }
+ }
+ }
+
+
+ /**
+ * Generate SVG path elements.
+ * The SVG path elements are generated from ascii art lines.
+ *
+ *@throws SAXException iff SAX generation fails.
+ */
+ protected void generateSVGLineElements() throws SAXException {
+ //NumberFormat nf = NumberFormat.getInstance(Locale.US);
+ //nf.setGroupingIsUsed( false );
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+ DecimalFormat df = new DecimalFormat("##0.0##", dfs);
+ Iterator i = asciiArtPad.iterator();
+ while (i.hasNext()) {
+ Object o = i.next();
+ if (o instanceof AsciiArtPad.AsciiArtLine) {
+ AsciiArtPad.AsciiArtLine aal = (AsciiArtPad.AsciiArtLine) o;
+ double mx = aal.getXStart();
+ double my = aal.getYStart();
+ double lx = aal.getXEnd();
+ double ly = aal.getYEnd();
+
+ attributes.clear();
+ addAttribute("d",
+ "M " + df.format(mx) + " " + df.format(my) + " " +
+ "L " + df.format(lx) + " " + df.format(ly));
+ startElement("path", attributes);
+ endElement("path");
+ }
+ }
+ }
+
+
+ /**
+ * Generate SVG text elements.
+ * The SVG text elements are generated from ascii art string.
+ *
+ *@throws SAXException iff SAX generation fails.
+ */
+ protected void generateSVGTextElements() throws SAXException {
+ //NumberFormat nf = NumberFormat.getInstance(Locale.US);
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+ DecimalFormat df = new DecimalFormat("##0.0##", dfs);
+ Iterator i = asciiArtPad.iterator();
+ while (i.hasNext()) {
+ Object o = i.next();
+ if (o instanceof AsciiArtPad.AsciiArtString) {
+ AsciiArtPad.AsciiArtString aas = (AsciiArtPad.AsciiArtString) o;
+ double x = aas.getX();
+ double y = aas.getY();
+ attributes.clear();
+ addAttribute("x", df.format(x));
+ addAttribute("y", df.format(y));
+ startElement("text", attributes);
+ characters(aas.getS());
+ endElement("text");
+ }
+ }
+ }
+
+
+ /**
+ * SAX startElement helper
+ *
+ *@param nodeName name of the element's name
+ *@param attributes of the node
+ *@throws SAXException iff SAX generation fails
+ */
+ protected void startElement(String nodeName, Attributes attributes) throws SAXException {
+ if (PREFIX.length() > 0) {
+ this.contentHandler.startElement(URI, nodeName, PREFIX + ":" + nodeName, attributes);
+ } else {
+ this.contentHandler.startElement(URI, nodeName, nodeName, attributes);
+ }
+ }
+
+
+ /**
+ * SAX character helper
+ *
+ *@param s Description of the Parameter
+ *@throws SAXException iff SAX generation fails
+ */
+ protected void characters(String s) throws SAXException {
+ if (s != null) {
+ char[] stringCharacters = s.toCharArray();
+ this.contentHandler.characters(stringCharacters, 0, stringCharacters.length);
+ }
+ }
+
+
+ /**
+ * SAX endElement helper
+ *
+ *@param nodeName name of the element's name
+ *@throws SAXException iff SAX generation fails
+ */
+ protected void endElement(String nodeName) throws SAXException {
+ if (PREFIX.length() > 0) {
+ this.contentHandler.endElement(URI, nodeName, PREFIX + ":" + nodeName);
+ } else {
+ this.contentHandler.endElement(URI, nodeName, nodeName);
+ }
+ }
+
+
+ /**
+ * Adds a feature to the Attribute attribute of the MailXMLSerializer
+ * object
+ *
+ *@param nodeName name of the attriute's name
+ *@param nodeValue value of the attribute
+ */
+ protected void addAttribute(String nodeName, String nodeValue) {
+ attributes.addAttribute("", nodeName, nodeName, "CDATA", nodeValue);
+ }
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-1.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-1.txt
new file mode 100644
index 0000000..e272b8a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-1.txt
@@ -0,0 +1,8 @@
+
+ +--------------+
+ | 1st quarter |
+ +------------+-+
+ | 2nd |
+ +-----+------+
+ | 3rd |
+ +-----+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-10.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-10.txt
new file mode 100644
index 0000000..3b0d51b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-10.txt
@@ -0,0 +1,472 @@
+| sitemap.xmap~
+| sitemap.xmap
+| ascii-art-10.txt
+|
++---voiceportal
+| | sitemap.xmap
+| | cocoon.xconf
+| |
+| +---images
+| | dot.gif
+| | cocoon-buttons-built-126.gif
+| | line.gif
+| | logo.gif
+| | note.gif
+| | separator.gif
+| | unisyslogo.gif
+| | void.gif
+| |
+| +---resources
+| | main.css
+| | simple.css
+| |
+| +---stylesheets
+| | document2html.xsl
+| | book2menu.xsl
+| | copyover.xsl
+| | filterlinks.xsl
+| | site2xhtml.xsl
+| |
+| \---xdocs
+| | book.xml
+| | resources.xml
+| | index.xml
+| | .nbattrs
+| |
+| +---test
+| | | test.xml
+| | | book.xml
+| | |
+| | \---test-report-html
+| | index.test-report-html
+| |
+| +---services
+| | services.xml
+| | a1net.xml
+| | book.xml
+| | mail.xml
+| | news.xml
+| | rootdocument.xml
+| | subscriber.xml
+| |
+| +---install
+| | applicationserver.xml
+| | book.xml
+| | development.xml
+| | install.xml
+| |
+| +---dtd
+| | ISOgrk1.pen
+| | ISOdia.pen
+| | book-cocoon-v10.dtd
+| | ISOlat1.pen
+| | ISOnum.pen
+| | ISOpub.pen
+| | ISOtech.pen
+| | README
+| | XMLSchema.dtd
+| | changes-v10.dtd
+| | catalog
+| | javadoc-v04draft.dtd
+| | characters.ent
+| | datatypes.dtd
+| | document-v10.dtd
+| | faq-v10.dtd
+| | specification-v10.dtd
+| | sitemap-v02.dtd
+| | svg-cocoon-v11.dtd
+| | svg10.dtd
+| | todo-v10.dtd
+| |
+| +---development
+| | | building.xml
+| | | book.xml
+| | | development.xml
+| | | ias-notes.xml
+| | |
+| | +---apidoc-client
+| | | index.apidoc-html
+| | |
+| | \---apidoc
+| | index.html.apidoc-html
+| | index.apidoc-html
+| |
+| +---design
+| | framework.xml
+| | book.xml
+| | design.xml
+| | voiceportal.xml
+| |
+| \---about
+| about.xml
+| book.xml
+|
++---mail
+| | sitemap.xmap
+| | sitemap.xmap~
+| |
+| +---stylesheets
+| | folder2document.xsl
+| | mailheader2document.xsl
+| | mailbody2document.xsl
+| | mailheaders2document.xsl
+| | folder2document.xsl~
+| | mailbody2document.xsl~
+| | mailheader2document.xsl~
+| | document2html.xsl
+| | extended-document2html.xsl
+| |
+| +---docs
+| \---mail-store
+| +---mktest01
+| | | folder.xml
+| | |
+| | +---test1
+| | | folder.xml
+| | |
+| | +---test
+| | | folder.xml
+| | |
+| | +---Trash
+| | | folder.xml
+| | |
+| | +---Sent Items
+| | | folder.xml
+| | |
+| | +---Sent
+| | | folder.xml
+| | |
+| | +---Papierkorb
+| | | folder.xml
+| | |
+| | +---Gesendet
+| | | folder.xml
+| | |
+| | +---Drafts
+| | | folder.xml
+| | |
+| | \---INBOX
+| | folder.xml
+| | mail-1.xml
+| | mail-2.xml
+| | mail-3.xml
+| | mail-4.xml
+| | mail-5.xml
+| | mail-6.xml
+| | mail-7.xml
+| | mail-8.xml
+| | mail-9.xml
+| | mail-10.xml
+| | mail-11.xml
+| | mail-12.xml
+| | mail-13.xml
+| | mail-14.xml
+| | mail-16.xml
+| | mail-17.xml
+| | mail-18.xml
+| | mail-19.xml
+| | mail-20.xml
+| | mail-21.xml
+| | mail-22.xml
+| | mail-23.xml
+| | mail-24.xml
+| | mail-25.xml
+| | mail-26.xml
+| | mail-27.xml
+| |
+| \---mktest02
+| | folder.xml
+| |
+| +---von_jornada
+| | folder.xml
+| |
+| +---test
+| | folder.xml
+| |
+| +---gumpf
+| | folder.xml
+| |
+| +---Trash
+| | folder.xml
+| |
+| +---Sent
+| | folder.xml
+| |
+| +---Gesendet
+| | folder.xml
+| |
+| +---á
+| | folder.xml
+| |
+| \---INBOX
+| folder.xml
+| mail-1.xml
+| mail-2.xml
+| mail-3.xml
+| mail-4.xml
+|
++---apache-docs
+| | sitemap.xmap~
+| | sitemap.xmap
+| |
+| +---imports
+| | index.html
+| | howto-i18n-xmlform.html
+| | cocoon-javadoc-tags.html
+| |
+| +---resources
+| | \---entities
+| | | ISOnum.pen
+| | | characters.ent
+| | | XMLSchema.dtd
+| | | javadoc-v04draft.dtd
+| | | datatypes.dtd
+| | | svg-cocoon-v11.dtd
+| | | ISOlat1.pen
+| | | svg10.dtd
+| | | document-v10.dtd
+| | | sitemap-v02.dtd
+| | | ISOgrk1.pen
+| | | changes-v10.dtd
+| | | ISOpub.pen
+| | | ISOtech.pen
+| | | ISOdia.pen
+| | | faq-v10.dtd
+| | | catalog
+| | | specification-v10.dtd
+| | | book-cocoon-v10.dtd
+| | | todo-v10.dtd
+| | | README
+| | |
+| | \---catalog-demo
+| | | testsys.xml
+| | | override.xml
+| | | testpub.xml
+| | | catalog-demo-v10.dtd
+| | |
+| | \---CVS
+| | Root
+| | Repository
+| | Entries
+| | netbeans.cmd.cache
+| |
+| +---stylesheets
+| | document2html.xsl~
+| | xhtml2document.xsl~
+| | filterlinks.xsl
+| | xhtml2document.xsl
+| | document2xhtml.xsl
+| | document2html.xsl
+| |
+| \---xdocs
+| index.xml
+| index.xml~
+| howto-i18n-xmlform.xml
+| cocoon-javadoc-tags.xml
+|
++---wiki
+| | sitemap.xmap~
+| | sitemap.xmap
+| |
+| +---grammars
+| | wiki.grm
+| | rgrm.grm
+| | java.rgrm
+| | wiki.rgrm
+| | mathexp.grm
+| | Copy of wiki.rgrm
+| | wiki.grm~
+| | wiki.grm.enhanced.notokay
+| | Copy of wiki.grm
+| |
+| +---misc
+| | samples.xml
+| | wiki.xsp
+| | test2.java
+| | test1.java
+| | matex.xsp
+| | java.css
+| | mathexp.xsp
+| | howtoconfigurecocoonlogging.xml~
+| | wiki-sample-2.xml
+| | Copy of howtoconfigurecocoonlogging.xml
+| | howtoconfigurecocoonlogging.xml
+| | wiki-sample-2-modified.xml
+| | wiki-sample-1.xml~
+| | wiki-sample-3.xml
+| | wiki-sample-1.xml
+| | wiki-sample-2-modified.xml~
+| |
+| \---stylesheets
+| | parsefragment.xsl
+| | wiki2html.xsl
+| | rgrm2grm.xsl
+| | java2html.xsl
+| | mathexp2html.xsl
+| | wiki2html.xsl~
+| |
+| \---system
+| error2html.xsl
+| directory2html.xsl
+| status2html.xsl
+| profile2html.xsl
+|
++---sourcelink
+| | sitemap.xmap
+| |
+| \---stylesheets
+| linkstatus2html.xsl
+|
++---quartalswein
+| | sitemap.xmap
+| | sitemap.xmap~
+| |
+| +---stylesheets
+| | site2wml.xsl
+| | site2html.xsl
+| | site2wml.xsl~
+| | filterlinks.xsl
+| | document2html.xsl~
+| | site2html.xsl~
+| |
+| +---docs
+| | +---top-col-1
+| | | index.xml~
+| | | index.xml
+| | |
+| | +---mid-col-1
+| | | index.xml
+| | | index.xml~
+| | |
+| | +---mid-col-2
+| | | q4-2002.xml
+| | | index.xml
+| | | news.xml
+| | | faq.xml
+| | | links.xml~
+| | | news.xml~
+| | | news-20021205.xml~
+| | | info.xml~
+| | | news-20021213.xml~
+| | | info.xml
+| | | news-20021213.xml
+| | | q4-2002.xml~
+| | | news-20021205.xml
+| | | index.xml~
+| | | faq.xml~
+| | |
+| | +---mid-col-3
+| | | info.xml
+| | | news.xml
+| | | index.xml
+| | | faq.xml~
+| | | index.xml~
+| | | news.xml~
+| | | faq.xml
+| | |
+| | \---bottom-col-1
+| | index.xml~
+| | index.xml
+| |
+| +---resources
+| | +---styles
+| | | main.css
+| | | main.css~
+| | |
+| | \---images
+| | built-with-cocoon.gif
+| |
+| \---pagesheets
+| cardpages.xml~
+| cardpages.xml
+| s2pages.xml
+|
++---csscolumnsite
+| | sitemap.xmap~
+| | about-as.wiki.txt
+| | sitemap.xmap
+| |
+| +---resources
+| | +---images
+| | | built-with-cocoon.gif
+| | | favicon.ico
+| | |
+| | \---styles
+| | main.css~
+| | main.css
+| |
+| +---docs
+| | +---bottom-col-1
+| | | index.xml~
+| | | index.xml
+| | |
+| | +---mid-col-4
+| | | faq.xml~
+| | | index.xml~
+| | | faq.xml
+| | | index.xml
+| | |
+| | +---mid-col-3
+| | | faq.xml~
+| | | index.xml~
+| | | faq.xml
+| | | index.xml
+| | |
+| | +---mid-col-2
+| | | changes.xml
+| | | faq.xml
+| | | index.xml
+| | | about.xml
+| | | plans.xml
+| | | csscolumnsite.xml~
+| | | sitemap-1.xml~
+| | | sitemap-tutorial.xml~
+| | | news.xml~
+| | | sitemap-tutorial.xml
+| | | faq.xml~
+| | | filterlinks-tutorial.xml~
+| | | index.xml~
+| | | filterlink-tutorial.xml~
+| | | wapchannel-tutorial.xml~
+| | | filterlink-tutorial.xml
+| | | changes.xml~
+| | | wapchannel-tutorial.xml
+| | | plans.xml~
+| | | csscolumnsite.xml
+| | |
+| | +---mid-col-1
+| | | index.xml~
+| | | index.xml
+| | |
+| | \---top-col-1
+| | index.xml~
+| | index.xml
+| |
+| +---stylesheets
+| | site2wml.xsl
+| | site2wml.xsl.save
+| | document2html.xsl~
+| | site2html.xsl~
+| | site2html.xsl.save
+| | filterlinks.xsl
+| | site2html.xsl
+| | site2wml.xsl~
+| |
+| \---pagesheets
+| wmlpages.xml
+| htmlpages.xml
+|
+\---asciiart
+ | sitemap.xmap
+ |
+ \---asciiart
+ ascii-art-7.txt
+ ascii-art-6.txt
+ ascii-art-8.txt
+ ascii-art-4.txt
+ ascii-art-5.txt
+ ascii-art-1.txt
+ ascii-art-2.txt
+ ascii-art-3.txt
+ ascii-art-6.txt~
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-2.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-2.txt
new file mode 100644
index 0000000..bd6e897
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-2.txt
@@ -0,0 +1,15 @@
+
+
+ +--------------+
+ | containerN |
+ +--------------+ |
+ | container2 | |
+ +-------------+ | |
+ | container1 | | |
+ | | | |
+ | +-------+ | | |
+ | | part | | | |
+ | +-------+ | |-+
+ | |-+
+ +-------------+
+
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-3.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-3.txt
new file mode 100644
index 0000000..a6578ca
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-3.txt
@@ -0,0 +1,33 @@
+ +==============+
+ | Mail_Header |
+ | +========+ |
+ | | Body | |
+ | +==+==+==+ |
+ | |a |a |a | |
+ | |1 |2 |3 | |
+ | +==+==+==+ |
+ +==============+
+
+
+ +--------+ +------+ +-------+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +---+----+ +--+---+ +---+---+
+ | | |
+ +----------+----------+
+ | | |
+ | | |
+ +---+----+ +--+---+ +---+---+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +--------+ +------+ +-------+
+ | | | | | |
+ +---+----+ +--+---+ +---+---+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-4.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-4.txt
new file mode 100644
index 0000000..1781239
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-4.txt
@@ -0,0 +1,12 @@
+
+ +----------------+
+ | header |
+ +---+--------+---+
+ | c | col2 | c |
+ | o | | o |
+ | l | | l |
+ | 1 | | 3 |
+ +---+--------+---+
+ | footer |
+ +----------------+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-5.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-5.txt
new file mode 100644
index 0000000..38c4e7c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-5.txt
@@ -0,0 +1,12 @@
+
+ +---stylesheets
+ +---docs
+ | +---top_col_1
+ | +---mid_col_1
+ | +---mid_col_2
+ | +---mid_col_3
+ | +---mid_col_4
+ | \---bottom_col_1
+ \---resources
+ |---styles
+ \---images
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-6.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-6.txt
new file mode 100644
index 0000000..5a30123
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-6.txt
@@ -0,0 +1,23 @@
+
+ +--------------+
+ | Organization |
+ +------+-------+
+ |
+ +----------+-----+----+----------+
+ | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | d1 | | d2 | | d3 | | d4 |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | | | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | | | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+ | | | | | | | |
+ +---+---+ +---+---+ +---+---+ +---+---+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-7.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-7.txt
new file mode 100644
index 0000000..ec1d7af
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-7.txt
@@ -0,0 +1,17 @@
+
+ +-----------------------------x
+ |------------------------ Jan
+ |---------------- Feb
+ |-------------------- Mar
+ |--------------------- Apr
+ |---------------- May
+ |--------------------- Jun
+ |-------------------------- Jul
+ |------------------- Aug
+ |--------------------- Sep
+ |------------------------- Oct
+ |---------------------------- Nov
+ |------+-----+-----+------+-- Dec
+ | | | | |
+ | 50 100 150 200
+ y
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-8.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-8.txt
new file mode 100644
index 0000000..9282300
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-8.txt
@@ -0,0 +1,15 @@
+
+
+ +------+------
+ | |
+ +-+-+ +-+-+
+ | a | | b |
+ +---+ +---+
+ | |
+ +------+------
+ | |
+ +---+ +---+
+ | X | | Y |
+ +-+-+ +-+-+
+ | |
+ +------+------
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-9.txt b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-9.txt
new file mode 100644
index 0000000..5325aa7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/data/ascii-art-9.txt
@@ -0,0 +1,122 @@
+| |
+| +---docs
+| \---mail-store
+| | |
+| | \---INBOX
+| | folder.xml
+| | mail-1.xml
+| | mail-2.xml
+| | mail-3.xml
+| | mail-4.xml
+| | mail-5.xml
+| | mail-6.xml
+| | mail-7.xml
+| | mail-8.xml
+| | mail-9.xml
+| | mail-10.xml
+| | mail-11.xml
+| | mail-12.xml
+| | mail-13.xml
+| | mail-14.xml
+| | mail-16.xml
+| | mail-17.xml
+| | mail-18.xml
+| | mail-19.xml
+| | mail-20.xml
+| | mail-21.xml
+| | mail-22.xml
+| | mail-23.xml
+| | mail-24.xml
+| | mail-25.xml
+| | mail-26.xml
+| | mail-27.xml
+| |
+| \---mktest02
+| | folder.xml
+| |
+| +---von_jornada
+| | folder.xml
+| |
+| +---test
+| | folder.xml
+| |
+| +---gumpf
+| | folder.xml
+| |
+| +---Trash
+| | folder.xml
+| |
+| +---Sent
+| | folder.xml
+| |
+| +---Gesendet
+| | folder.xml
+| |
+| |
+| \---INBOX
+| folder.xml
+| mail-1.xml
+| mail-2.xml
+| mail-3.xml
+| mail-4.xml
+|
++---apache-docs
+| | sitemap.xmap~
+| | sitemap.xmap
+| |
+| +---imports
+| | index.html
+| | howto-i18n-xmlform.html
+| | cocoon-javadoc-tags.html
+| |
+| +---resources
+| | \---entities
+| | | ISOnum.pen
+| | | characters.ent
+| | | XMLSchema.dtd
+| | | javadoc-v04draft.dtd
+| | | datatypes.dtd
+| | | svg-cocoon-v11.dtd
+| | | ISOlat1.pen
+| | | svg10.dtd
+| | | document-v10.dtd
+| | | sitemap-v02.dtd
+| | | ISOgrk1.pen
+| | | changes-v10.dtd
+| | | ISOpub.pen
+| | | ISOtech.pen
+| | | ISOdia.pen
+| | | faq-v10.dtd
+| | | catalog
+| | | specification-v10.dtd
+| | | book-cocoon-v10.dtd
+| | | todo-v10.dtd
+| | | README
+| | |
+| | \---catalog-demo
+| | | testsys.xml
+| | | override.xml
+| | | testpub.xml
+| | | catalog-demo-v10.dtd
+| | |
+| | \---CVS
+| | Root
+| | Repository
+| | Entries
+| | netbeans.cmd.cache
+| |
+| +---stylesheets
+| | document2html.xsl~
+| | xhtml2document.xsl~
+| | filterlinks.xsl
+| | xhtml2document.xsl
+| | document2xhtml.xsl
+| | document2html.xsl
+| |
+| \---xdocs
+| index.xml
+| index.xml~
+| howto-i18n-xmlform.xml
+| cocoon-javadoc-tags.xml
+|
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/dir2html.xsl b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/dir2html.xsl
new file mode 100644
index 0000000..75c9bd1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/dir2html.xsl
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:dir="http://apache.org/cocoon/directory/2.0">
+
+ <xsl:template match="dir:directory">
+ <samples name="ASCII Art Samples" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <group name="Main examples page.">
+ <sample name="Back" href="..">to Cocoon examples main page</sample>
+ </group>
+
+ <group name="Available ascii art TXT files">
+ <xsl:apply-templates select="dir:file" mode="txt"/>
+ </group>
+
+ <group name="ascii art in JPEG">
+ <xsl:apply-templates select="dir:file" mode="jpg"/>
+ </group>
+
+ <group name="ascii art in PNG">
+ <xsl:apply-templates select="dir:file" mode="png"/>
+ </group>
+ </samples>
+ </xsl:template>
+
+ <xsl:template match="dir:file" mode="txt">
+ <sample name="{@name}" href="{@name}">as text</sample>
+ </xsl:template>
+
+ <xsl:template match="dir:file" mode="jpg">
+ <sample name="{@name}" href="{@name}.jpg">as jpg</sample>
+ </xsl:template>
+
+ <xsl:template match="dir:file" mode="png">
+ <sample name="{@name}" href="{@name}.png">as png</sample>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/sitemap.xmap
new file mode 100644
index 0000000..a997f9d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/samples/sitemap.xmap
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+ <map:components>
+ <map:generators default="file">
+ <map:generator name="asciiart-svg" logger="sitemap.generator.asciiart-svg"
+ src="org.apache.cocoon.generation.asciiart.AsciiArtSVGGenerator"/>
+ </map:generators>
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view from-label="content" name="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="content" name="pretty-content">
+ <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+ <map:serialize type="html"/>
+ </map:view>
+
+ <map:view from-position="last" name="links">
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+ <map:pipeline>
+
+ <map:match pattern="">
+ <map:redirect-to uri="welcome"/>
+ </map:match>
+
+ <map:match pattern="welcome">
+ <map:generate type="directory" src="data">
+ <map:parameter name="include" value="\.txt$"/>
+ </map:generate>
+ <map:transform src="dir2html.xsl"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <!-- expects format xxxyyyzzt.txt.png -->
+ <map:match pattern="*.jpg">
+ <map:generate type="asciiart-svg" src="data/{1}"/>
+ <map:serialize type="svg2jpeg"/>
+ </map:match>
+
+ <!-- expects format xxxyyyzzt.txt.png -->
+ <map:match pattern="*.png">
+ <map:generate type="asciiart-svg" src="data/{1}"/>
+ <map:serialize type="svg2png"/>
+ </map:match>
+
+ <map:match pattern="*.txt">
+ <map:read src="data/{1}.txt" mime-type="text/plain"/>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/asciiart/test/org/apache/cocoon/generation/asciiart/AsciiArtPadTestCase.java b/ASF_20_SRC_AUTO/src/blocks/asciiart/test/org/apache/cocoon/generation/asciiart/AsciiArtPadTestCase.java
new file mode 100644
index 0000000..3ad9fe1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/asciiart/test/org/apache/cocoon/generation/asciiart/AsciiArtPadTestCase.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation.asciiart;
+
+import java.text.NumberFormat;
+import java.util.Iterator;
+import java.util.Locale;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+/**
+ * A Simple testcase of the AsciiArtPad.
+ *
+ * @author huber.at.apache.org
+ * @since 18. Dezember 2002
+ * @version CVS $Id: AsciiArtPadTestCase.java,v 1.2 2004/03/05 13:01:40 bdelacretaz Exp $
+ */
+public class AsciiArtPadTestCase extends TestCase {
+
+ private AsciiArtPad asciiArtPad;
+
+
+ /**
+ *Constructor for the AsciiArtPadTestCase object
+ *
+ *@param name Description of Parameter
+ *@since
+ */
+ public AsciiArtPadTestCase(String name) {
+ super(name);
+ }
+
+
+ /**
+ * The main program for the AsciiArtPadTestCase class
+ *
+ *@param args The command line arguments
+ *@exception Exception Description of the Exception
+ */
+ public static void main(final String[] args) throws Exception {
+ final String[] testCaseName = {AsciiArtPadTestCase.class.getName()};
+ TestRunner.main(testCaseName);
+ }
+
+
+ /**
+ * A unit test for JUnit
+ */
+ public void test0() {
+ }
+
+
+ /**
+ * A unit test for JUnit
+ *
+ *@exception Exception Description of the Exception
+ */
+ public void test1() throws Exception {
+ System.out.println("test1()");
+ String[] asciiArt = new String[]{
+ // 1
+ //01234567890123456789
+ "= =",
+ " +--------------+ ",
+ " | 1st quarter | ",
+ " +------------+-+ ",
+ " | 2nd | ",
+ " +-----+------+ ",
+ " | 3rd | ",
+ " +-----+ ",
+ "= =",
+ " +-------------+ ",
+ " | container | ",
+ " | | ",
+ " | +-------+ | ",
+ " | | part | | ",
+ " | +-------+ | ",
+ " | | ",
+ " +-------------+ ",
+ "= =",
+ " +==============+ ",
+ " | Mail_Header | ",
+ " | +========+ | ",
+ " | | Body | | ",
+ " | +========+ | ",
+ " | |a |a |a | | ",
+ " | |1 |2 |3 | | ",
+ " | +========+ | ",
+ " +==============+ ",
+ "= =",
+ " +----------------+",
+ " | header |",
+ " +----------------+",
+ " + c | col2 | c +",
+ " + o | | o +",
+ " + l | | l +",
+ " + 1 | | 3 +",
+ " +----------------+",
+ " | footer |",
+ " +----------------+",
+ "= =",
+ " +---stylesheets ",
+ " +---docs ",
+ " | +---top_col_1 ",
+ " | +---mid_col_1 ",
+ " | +---mid_col_2 ",
+ " | +---mid_col_3 ",
+ " | +---mid_col_4 ",
+ " | \\---bottom_col_1",
+ " \\---resources",
+ " |---styles",
+ " \\---images",
+ };
+
+ asciiArtPad = new AsciiArtPad();
+ asciiArtPad.setXGrid(10);
+ asciiArtPad.setYGrid(12);
+ AsciiArtPad.AsciiArtPadBuilder aapb = new AsciiArtPad.AsciiArtPadBuilder(asciiArtPad);
+ aapb.build(asciiArt);
+
+ Iterator i = asciiArtPad.iterator();
+ NumberFormat nf = NumberFormat.getInstance(Locale.US);
+ StringBuffer svg_lines = new StringBuffer();
+ StringBuffer svg_text = new StringBuffer();
+ while (i.hasNext()) {
+ Object o = i.next();
+ double x;
+ double y;
+ if (o instanceof AsciiArtPad.AsciiArtLine) {
+ AsciiArtPad.AsciiArtLine aal = (AsciiArtPad.AsciiArtLine) o;
+ x = aal.getXStart();
+ y = aal.getYStart();
+ svg_lines.append("<path d=\"");
+ svg_lines.append("M " + nf.format(x) + " " + nf.format(y));
+
+ x = aal.getXEnd();
+ y = aal.getYEnd();
+ svg_lines.append("L " + nf.format(x) + " " + nf.format(y));
+ svg_lines.append("\"/>\n");
+
+ } else if (o instanceof AsciiArtPad.AsciiArtString) {
+ AsciiArtPad.AsciiArtString aas = (AsciiArtPad.AsciiArtString) o;
+ x = aas.getX();
+ y = aas.getY();
+ svg_text.append("<text ");
+ svg_text.append("x=\"" + nf.format(x) + "\" y=\"" + nf.format(y) + "\">");
+ svg_text.append("<![CDATA[" + aas.getS() + "]]>");
+ svg_text.append("</text>\n");
+
+ } else {
+ System.out.println("o " + o.toString());
+ }
+ }
+ System.out.println("<!-- lines --> ");
+ System.out.println(svg_lines.toString());
+ System.out.println("<!-- text --> ");
+ System.out.println(svg_text.toString());
+ }
+
+
+ /**
+ *The JUnit setup method
+ *
+ *@exception Exception Description of Exception
+ *@since
+ */
+ protected void setUp() throws Exception {
+ asciiArtPad = null;
+ }
+
+
+ /**
+ * The teardown method for JUnit
+ *
+ *@exception Exception Description of the Exception
+ */
+ protected void tearDown() throws Exception {
+ asciiArtPad = null;
+ }
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-act.xmap b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-act.xmap
new file mode 100644
index 0000000..9b7a267
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-act.xmap
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/actions"
+ unless="action[@name='auth-protect']">
+
+ <map:action name="auth-protect"
+ src="org.apache.cocoon.webapps.authentication.acting.AuthAction"/>
+ <map:action name="auth-login"
+ src="org.apache.cocoon.webapps.authentication.acting.LoginAction"/>
+ <map:action name="auth-logout"
+ src="org.apache.cocoon.webapps.authentication.acting.LogoutAction"/>
+ <map:action name="auth-loggedIn"
+ src="org.apache.cocoon.webapps.authentication.acting.LoggedInAction"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-fw.xsamples b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-fw.xsamples
new file mode 100644
index 0000000..cc6f3f4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-fw.xsamples
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Authentication Framework']">
+
+ <group name="Authentication Framework">
+ <sample name="Authentication Framework" href="authentication-fw/login">
+ This is a demo of the authentication framework integrated into Cocoon.
+ </sample>
+ <sample name="Authentication Framework with Flow" href="authentication-fw/flow/login">
+ This is the same demo, but using flow instead of actions.
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-gen.xmap b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-gen.xmap
new file mode 100644
index 0000000..cfb7ebc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication-gen.xmap
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/generators"
+ unless="generator[@name='auth-conf']">
+
+ <map:generator name="auth-conf"
+ src="org.apache.cocoon.webapps.authentication.generation.ConfigurationGenerator"
+ label="content"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xconf b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xconf
new file mode 100644
index 0000000..b0b7ef8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xconf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon" unless="authentication-manager">
+
+ <!--+
+ + The authentication manager
+ +-->
+ <authentication-manager logger="core.authentication-manager">
+ </authentication-manager>
+
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xroles b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xroles
new file mode 100644
index 0000000..77e75c1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/authentication.xroles
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xroles xpath="/role-list" unless="role[@name='org.apache.cocoon.webapps.authentication.AuthenticationManager']">
+
+ <role name="org.apache.cocoon.webapps.authentication.AuthenticationManager"
+ shorthand="authentication-manager"
+ default-class="org.apache.cocoon.webapps.authentication.components.DefaultAuthenticationManager"/>
+
+</xroles>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/provider.xconf b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/provider.xconf
new file mode 100644
index 0000000..a26dba4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/conf/provider.xconf
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon/session-context-providers" unless="component-instance[@name='authentication']">
+ <component-instance class="org.apache.cocoon.webapps.authentication.context.AuthenticationContextProvider" name="authentication"/>
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java
new file mode 100644
index 0000000..d3614e4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication;
+
+/**
+ * The <code>Constants</code> used throughout the core of the authentication
+ * framework.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @version CVS $Id: AuthenticationConstants.java,v 1.5 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public interface AuthenticationConstants {
+
+ /** The name of the authentication context. */
+ String SESSION_CONTEXT_NAME = "authentication";
+
+ /** Logout mode: session is terminated immediately */
+ int LOGOUT_MODE_IMMEDIATELY = 0;
+
+ /** Logout mode: session is terminated if not used anymore (by the
+ * session or the authentication framework */
+ int LOGOUT_MODE_IF_UNUSED = 1;
+
+ /** Logout mode: session is terminated if the user is not authenticated
+ * to any handler anymore. */
+ int LOGOUT_MODE_IF_NOT_AUTHENTICATED = 2;
+}
+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationManager.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationManager.java
new file mode 100644
index 0000000..d29e5eb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/AuthenticationManager.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication;
+
+import java.io.IOException;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.webapps.session.context.SessionContext;
+import org.apache.excalibur.source.SourceParameters;
+
+
+
+/**
+ * This is the authentication manager.
+ * It is used to authenticate (login, logout) a user. Usually, this
+ * component should not be used from custom code. The provided
+ * actions perform all required tasks.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: AuthenticationManager.java,v 1.7 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public interface AuthenticationManager {
+
+ /** The Avalon Role */
+ String ROLE = AuthenticationManager.class.getName();
+
+ /**
+ * Is the current user authenticated for the given handler?
+ * @return Returns the corresponding handler if the user is authenticated.
+ */
+ UserHandler isAuthenticated(String handlerName)
+ throws ProcessingException;
+
+ /**
+ * Is the current user authenticated for the given handler?
+ * If the user is already authenticated, the {@link RequestState}
+ * is updated to the provided information (handler and application).
+ */
+ boolean checkAuthentication(Redirector redirector,
+ String handlerName,
+ String applicationName)
+ throws ProcessingException, IOException;
+
+ /**
+ * Try to login the user.
+ * If the authentication is successful, the user handler is returned.
+ * If not, <code>null</code> is returned.
+ */
+ UserHandler login(String handlerName,
+ String applicationName,
+ SourceParameters parameters)
+ throws ProcessingException;
+
+ /**
+ * Perform a logout of the user.
+ */
+ void logout(String handlerName,
+ int mode)
+ throws ProcessingException;
+
+ /**
+ * Get the current state of authentication
+ */
+ RequestState getState();
+
+ /**
+ * Create Application Context.
+ * This context is destroyed when the user logs out of the handler
+ */
+ SessionContext createApplicationContext(String name,
+ String loadURI,
+ String saveURI)
+ throws ProcessingException;
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/AuthAction.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/AuthAction.java
new file mode 100644
index 0000000..293e2bc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/AuthAction.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.acting;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.acting.ServiceableAction;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+
+/**
+ * This is the authentication action
+ * This action contains the complete configuration for the authentication
+ * Manager. During configuration the AuthenticationManager class gets this
+ * configuration to configure the instances properly.
+ * The main task of this action is to check if the user is authenticated
+ * using a handler. If not a redirect takes place.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: AuthAction.java,v 1.5 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class AuthAction
+extends ServiceableAction
+implements ThreadSafe {
+
+ public Map act(Redirector redirector,
+ SourceResolver resolver,
+ Map objectModel,
+ String source,
+ Parameters par)
+ throws Exception {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("BEGIN act resolver="+resolver+
+ ", objectModel="+objectModel+
+ ", source="+source+
+ ", par="+par);
+ }
+ String handlerName = null;
+ String applicationName = null;
+ AuthenticationManager authManager = null;
+ Map map = null;
+
+ try {
+ handlerName = par.getParameter("handler", null);
+ applicationName = par.getParameter("application", null);
+
+ authManager = (AuthenticationManager) this.manager.lookup( AuthenticationManager.ROLE );
+
+ // do authentication
+ if ( !authManager.checkAuthentication(redirector, handlerName, applicationName) ) {
+ // All events are ignored
+ // the sitemap.xsl ensures that only the redirect is processed
+ } else {
+ RequestState state = authManager.getState();
+ map = state.getHandler().getContext().getContextInfo();
+ }
+ } finally {
+ this.manager.release( authManager );
+ }
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("END act map="+map);
+ }
+ return map;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoggedInAction.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoggedInAction.java
new file mode 100644
index 0000000..cf49a55
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoggedInAction.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.acting;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.acting.ServiceableAction;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+
+/**
+ * This action tests if the user is logged in for a given handler.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: LoggedInAction.java,v 1.6 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class LoggedInAction
+extends ServiceableAction
+implements ThreadSafe {
+
+ public Map act(Redirector redirector,
+ SourceResolver resolver,
+ Map objectModel,
+ String source,
+ Parameters par)
+ throws Exception {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("BEGIN act resolver="+resolver+
+ ", objectModel="+objectModel+
+ ", source="+source+
+ ", par="+par);
+ }
+
+ Map map = null;
+ String handlerName = par.getParameter("handler", null);
+ AuthenticationManager authManager = null;
+
+ final boolean testNotLoggedIn = par.getParameterAsBoolean("negate-result", false);
+
+ try {
+ authManager = (AuthenticationManager) this.manager.lookup(AuthenticationManager.ROLE);
+ UserHandler handler = authManager.isAuthenticated(handlerName);
+ if ( testNotLoggedIn ) {
+ if ( handler == null ) {
+ map = EMPTY_MAP;
+ }
+ } else {
+ if ( handler != null ) {
+ map = EMPTY_MAP;
+ }
+ }
+ } finally {
+ this.manager.release( authManager);
+ }
+
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("END act map="+map);
+ }
+
+ return map;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoginAction.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoginAction.java
new file mode 100644
index 0000000..2fddd42
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LoginAction.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.acting;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.acting.ServiceableAction;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.excalibur.source.SourceParameters;
+
+/**
+ * This action logs the current user into a given handler. If the
+ * authentication is successful, a map is returned with the authentication
+ * information and a session is created (if it not already exists).
+ * If the authentication is not successful, the error information is stored
+ * into the temporary context.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: LoginAction.java,v 1.4 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class LoginAction
+extends ServiceableAction
+implements ThreadSafe {
+
+ public Map act(Redirector redirector,
+ SourceResolver resolver,
+ Map objectModel,
+ String source,
+ Parameters par)
+ throws Exception {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("BEGIN act resolver="+resolver+
+ ", objectModel="+objectModel+
+ ", source="+source+
+ ", par="+par);
+ }
+
+ final String handlerName = par.getParameter("handler", null);
+ if ( handlerName == null ) {
+ throw new ProcessingException("LoginAction requires at least the handler parameter.");
+ }
+
+ // build authentication parameters
+ SourceParameters authenticationParameters = new SourceParameters();
+ String[] enum = par.getNames();
+ if (enum != null) {
+ for(int i = 0; i < enum.length; i++) {
+ final String key = enum[i];
+ if ( key.startsWith("parameter_") ) {
+ authenticationParameters.setParameter( key.substring("parameter_".length()),
+ par.getParameter(key));
+ }
+ }
+
+ }
+
+ Map map = null;
+
+ // authenticate
+ AuthenticationManager authManager = null;
+ try {
+ authManager = (AuthenticationManager) this.manager.lookup(AuthenticationManager.ROLE);
+ UserHandler handler = authManager.login( handlerName,
+ par.getParameter("application", null),
+ authenticationParameters);
+ if ( handler != null) {
+ // success
+ map = handler.getContext().getContextInfo();
+
+ }
+ } finally {
+ this.manager.release( authManager);
+ }
+
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("END act map="+map);
+ }
+
+ return map;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LogoutAction.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LogoutAction.java
new file mode 100644
index 0000000..0c54a45
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/acting/LogoutAction.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.acting;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.acting.ServiceableAction;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.webapps.authentication.AuthenticationConstants;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+
+/**
+ * This action logs the current user out of a given handler
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: LogoutAction.java,v 1.7 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class LogoutAction
+extends ServiceableAction
+implements ThreadSafe {
+
+ public Map act(Redirector redirector,
+ SourceResolver resolver,
+ Map objectModel,
+ String source,
+ Parameters par)
+ throws Exception {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("BEGIN act resolver="+resolver+
+ ", objectModel="+objectModel+
+ ", source="+source+
+ ", par="+par);
+ }
+
+ int mode;
+ final String modeString = par.getParameter("mode", "if-not-authenticated");
+ if ( modeString.equals("if-not-authenticated") ) {
+ mode = AuthenticationConstants.LOGOUT_MODE_IF_NOT_AUTHENTICATED;
+ } else if ( modeString.equalsIgnoreCase("if-unused") ) {
+ mode = AuthenticationConstants.LOGOUT_MODE_IF_UNUSED;
+ } else if ( modeString.equalsIgnoreCase("immediately") ) {
+ mode = AuthenticationConstants.LOGOUT_MODE_IMMEDIATELY;
+ } else {
+ throw new ProcessingException("Unknown mode " + modeString);
+ }
+
+ // logout
+ AuthenticationManager authManager = null;
+ try {
+ authManager = (AuthenticationManager) this.manager.lookup(AuthenticationManager.ROLE);
+ RequestState state = authManager.getState();
+
+ final String handlerName = par.getParameter("handler",
+ (state == null ? null : state.getHandlerName()));
+ if ( null == handlerName ) {
+ throw new ProcessingException("LogoutAction requires at least the handler parameter.");
+ }
+ authManager.logout( handlerName , mode );
+ } finally {
+ this.manager.release( authManager );
+ }
+
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("END act map={}");
+ }
+
+ return EMPTY_MAP;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/Authenticator.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/Authenticator.java
new file mode 100644
index 0000000..a4b60f3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/Authenticator.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.components;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.excalibur.source.SourceParameters;
+import org.w3c.dom.Document;
+
+/**
+ * Verify if a user can be authenticated.
+ * An authenticator can implement all the usual component lifecycle interfaces
+ * and gets the information set.
+ * An authenticator must be implemented in a thread safe manner!
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: Authenticator.java,v 1.11 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public interface Authenticator {
+
+ /**
+ * This object describes the success or the failure of an attempt
+ * to authenticate a user.
+ * The boolean flag valid specifies a success (valid) or a failure
+ * (not valid).
+ * The document result contains in the case of a success the
+ * authentication xml that is store in the session.
+ * In the case of a failure, the result can contain information
+ * about the failure (or the document can be null).
+ * If in the case of a failure the result contains information,
+ * the xml must follow this format:
+ * <root>
+ * <failed/>
+ * if data is available data is included, otherwise:
+ * <data>No information</data>
+ * If exception message contains info, it is included into failed
+ * </root>
+ * The root element is removed and the contained elements are stored
+ * into the temporary context.
+ */
+ public static class AuthenticationResult {
+
+ public final boolean valid;
+ public final Document result;
+
+ public AuthenticationResult(final boolean valid,
+ final Document result) {
+ this.valid = valid;
+ this.result = result;
+ }
+
+ }
+
+ /**
+ * Try to authenticate the user.
+ * @return A AuthenticationResult that is either valid (authentication
+ * successful) or invalid (authentication failed.
+ * @throws ProcessingException Only if an error occurs
+ */
+ AuthenticationResult authenticate(HandlerConfiguration configuration,
+ SourceParameters parameters)
+ throws ProcessingException;
+
+ /**
+ * This notifies the authenticator that a user logs out of the given
+ * handler.
+ * After the authenticator is notified, the AuthenticationManager
+ * removes the authentication context, eventually the session etc.
+ */
+ void logout(UserHandler handler);
+}
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultAuthenticationManager.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultAuthenticationManager.java
new file mode 100644
index 0000000..110ba5b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultAuthenticationManager.java
@@ -0,0 +1,573 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.components;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.components.SitemapConfigurable;
+import org.apache.cocoon.components.SitemapConfigurationHolder;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.util.ClassUtils;
+import org.apache.cocoon.webapps.authentication.AuthenticationConstants;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.configuration.ApplicationConfiguration;
+import org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration;
+import org.apache.cocoon.webapps.authentication.context.AuthenticationContext;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.webapps.authentication.user.UserState;
+import org.apache.cocoon.webapps.session.ContextManager;
+import org.apache.cocoon.webapps.session.SessionConstants;
+import org.apache.cocoon.webapps.session.SessionManager;
+import org.apache.cocoon.webapps.session.context.SessionContext;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.source.SourceUtil;
+import org.apache.excalibur.xml.xpath.XPathProcessor;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+/**
+ * This is the basis authentication component.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: DefaultAuthenticationManager.java,v 1.23 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public class DefaultAuthenticationManager
+extends AbstractLogEnabled
+implements AuthenticationManager,
+ SitemapConfigurable,
+ Serviceable,
+ Disposable,
+ ThreadSafe,
+ Contextualizable,
+ Component {
+
+ /** The name of the session attribute storing the user status */
+ public final static String SESSION_ATTRIBUTE_USER_STATUS = DefaultAuthenticationManager.class.getName() + "/UserStatus";
+
+ /** The manager for the authentication handlers */
+ protected SitemapConfigurationHolder holder;
+
+ /** The Service Manager */
+ protected ServiceManager manager;
+
+ /** The Source Resolver */
+ protected SourceResolver resolver;
+
+ /** The context */
+ protected Context context;
+
+ /** Instantiated authenticators */
+ protected Map authenticators = new HashMap();
+
+ /** The xpath processor */
+ protected XPathProcessor xpathProcessor;
+
+ /** This is the key used to store the current request state in the request object */
+ private static final String REQUEST_STATE_KEY = RequestState.class.getName();
+
+ /**
+ * Set the sitemap configuration containing the handlers
+ */
+ public void configure(SitemapConfigurationHolder holder)
+ throws ConfigurationException {
+ this.holder = holder;
+ }
+
+ /**
+ * Get the handler configuration for the current sitemap
+ */
+ private Map getHandlerConfigurations()
+ throws ProcessingException {
+ Map configs = (Map) this.holder.getPreparedConfiguration();
+ if ( null == configs ) {
+ // prepare the configs
+ SourceResolver resolver = null;
+ try {
+ resolver = (SourceResolver) this.manager.lookup( SourceResolver.ROLE );
+ configs = DefaultHandlerManager.prepareHandlerConfiguration(resolver,
+ ContextHelper.getObjectModel(this.context),
+ this.holder);
+ } catch (ServiceException se) {
+ throw new ProcessingException("Unable to lookup source resolver.", se);
+ } catch (ConfigurationException ce) {
+ throw new ProcessingException("Configuration error.", ce);
+ } finally {
+ this.manager.release( resolver );
+ }
+ }
+ return configs;
+ }
+
+ /**
+ * Get the handler configuration
+ * @param name The handler name
+ * @return The configuration or null.
+ */
+ private HandlerConfiguration getHandlerConfiguration(String name)
+ throws ProcessingException {
+ final Map configs = this.getHandlerConfigurations();
+ HandlerConfiguration c = null;
+ if ( configs != null) {
+ c = (HandlerConfiguration)configs.get( name );
+ }
+ return c;
+ }
+
+ private Request getRequest() {
+ return ContextHelper.getRequest(this.context);
+ }
+
+ private Session getSession(boolean create) {
+ return this.getRequest().getSession(create);
+ }
+
+ private UserState getUserState() {
+ final Session session = this.getSession( false );
+ UserState status = null;
+ if ( session != null) {
+ status = (UserState) session.getAttribute(SESSION_ATTRIBUTE_USER_STATUS);
+ }
+ return status;
+ }
+
+ private UserState createUserState() {
+ UserState status = this.getUserState();
+ if ( status == null ) {
+ final Session session = this.getSession(true);
+ status = new UserState();
+ session.setAttribute(SESSION_ATTRIBUTE_USER_STATUS, status);
+ }
+ return status;
+ }
+
+ private UserHandler getUserHandler(String name) {
+ final UserState status = this.getUserState();
+ if ( status != null ) {
+ return status.getHandler( name );
+ }
+ return null;
+ }
+
+ private void updateUserState() {
+ final Session session = this.getSession(true);
+ Object status = session.getAttribute(SESSION_ATTRIBUTE_USER_STATUS);
+ session.setAttribute(SESSION_ATTRIBUTE_USER_STATUS, status);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Manager#authenticate(java.lang.String, java.lang.String, org.apache.excalibur.source.SourceParameters)
+ */
+ public UserHandler login(String handlerName,
+ String applicationName,
+ SourceParameters parameters)
+ throws ProcessingException {
+ HandlerConfiguration config = this.getHandlerConfiguration( handlerName );
+ if ( config == null ) {
+ throw new ProcessingException("Unknown handler to authenticate: " + handlerName);
+ }
+ // are we already logged in?
+ UserHandler handler = this.getUserHandler( handlerName );
+ if ( handler != null ) {
+ throw new ProcessingException("User is already authenticated using handler: " + handlerName);
+ }
+
+ Authenticator authenticator = this.lookupAuthenticator( config );
+ try {
+ Authenticator.AuthenticationResult result = authenticator.authenticate( config, parameters );
+ if ( result != null && result.valid ) {
+ AuthenticationContext authContext = new AuthenticationContext(this.context, this.xpathProcessor);
+ handler = new UserHandler(config, authContext);
+ // store the authentication data in the context
+ authContext.init(result.result);
+ } else if ( result != null ) {
+ // now set the failure information in the temporary context
+ ContextManager contextManager = null;
+ try {
+ contextManager = (ContextManager) this.manager.lookup( ContextManager.ROLE );
+ SessionContext temp = contextManager.getContext( SessionConstants.TEMPORARY_CONTEXT );
+
+ final DocumentFragment fragment = result.result.createDocumentFragment();
+ final Node root = result.result.getDocumentElement();
+ root.normalize();
+ Node child;
+ boolean appendedNode = false;
+ while (root.hasChildNodes() ) {
+ child = root.getFirstChild();
+ root.removeChild(child);
+ // Leave out empty text nodes before any other node
+ if (appendedNode
+ || child.getNodeType() != Node.TEXT_NODE
+ || child.getNodeValue().trim().length() > 0) {
+ fragment.appendChild(child);
+ appendedNode = true;
+ }
+ }
+ temp.appendXML("/", fragment);
+ } catch ( ServiceException se ) {
+ throw new ProcessingException("Unable to lookup session manager.", se);
+ } finally {
+ this.manager.release( contextManager );
+ }
+
+ }
+
+ } finally {
+ this.releaseAuthenticator( authenticator, config );
+ }
+
+ if ( handler != null ) {
+ // create UserStatus
+ final UserState status = this.createUserState();
+
+ status.addHandler( handler );
+ this.updateUserState();
+
+ // update RequestState
+ RequestState state = new RequestState( handler, applicationName);
+ this.setState( state );
+ state.initialize( this.resolver );
+
+ // And now load applications
+ Iterator applications = handler.getHandlerConfiguration().getApplications().values().iterator();
+
+ while ( applications.hasNext() ) {
+ ApplicationConfiguration appHandler = (ApplicationConfiguration)applications.next();
+ if ( !appHandler.getLoadOnDemand() ) {
+ handler.getContext().loadApplicationXML( appHandler, this.resolver );
+ }
+ }
+ }
+
+ return handler;
+ }
+
+ /**
+ * Release the used authenticator
+ */
+ protected void releaseAuthenticator(Authenticator authenticator, HandlerConfiguration config) {
+ // all authenticators are released on dispose
+ }
+
+ /**
+ * The authenticator used to authenticate a user
+ */
+ protected Authenticator lookupAuthenticator(HandlerConfiguration config)
+ throws ProcessingException {
+ final String name = config.getAuthenticatorClassName();
+ Authenticator authenticator = (Authenticator) this.authenticators.get(name);
+ if ( authenticator == null ) {
+ synchronized (this) {
+ authenticator = (Authenticator) this.authenticators.get(name);
+ if ( authenticator == null ) {
+ try {
+ authenticator = (Authenticator) ClassUtils.newInstance(name);
+ ContainerUtil.enableLogging( authenticator, this.getLogger() );
+ ContainerUtil.contextualize( authenticator, this.context);
+ ContainerUtil.service( authenticator, this.manager );
+ ContainerUtil.initialize( authenticator );
+ this.authenticators.put(name, authenticator);
+
+ } catch (Exception e ) {
+ throw new ProcessingException("Unable to initialize authenticator from class " + name, e);
+ }
+ }
+ }
+ }
+ return authenticator;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Manager#checkAuthentication(org.apache.cocoon.environment.Redirector, java.lang.String, java.lang.String)
+ */
+ public boolean checkAuthentication(Redirector redirector,
+ String handlerName,
+ String applicationName)
+ throws IOException, ProcessingException {
+ HandlerConfiguration config = this.getHandlerConfiguration( handlerName );
+ if ( config == null ) {
+ throw new ProcessingException("Unknown handler to check: " + handlerName);
+ }
+ // are we already logged in?
+ UserHandler handler = this.getUserHandler( handlerName );
+ final boolean authenticated = ( handler != null );
+ if ( !authenticated ) {
+ if (redirector != null) {
+ // create parameters
+ SourceParameters parameters = config.getRedirectParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ final Request request = this.getRequest();
+ String resource = request.getRequestURI();
+ if (request.getQueryString() != null) {
+ resource += '?' + request.getQueryString();
+ }
+
+ parameters.setSingleParameterValue("resource", resource);
+ final String redirectURI = config.getRedirectURI();
+ redirector.globalRedirect(false, SourceUtil.appendParameters(redirectURI, parameters));
+ }
+ } else {
+ // update state
+ RequestState state = new RequestState( handler, applicationName );
+ this.setState( state );
+ state.initialize( this.resolver );
+ }
+
+ return authenticated;
+ }
+
+ public String getForwardingURI(String handlerName) throws ProcessingException {
+ HandlerConfiguration config = this.getHandlerConfiguration( handlerName );
+ SourceParameters parameters = config.getRedirectParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ final Request request = this.getRequest();
+ String resource = request.getRequestURI();
+ if (request.getQueryString() != null) {
+ resource += '?' + request.getQueryString();
+ }
+
+ parameters.setSingleParameterValue("resource", resource);
+ final String redirectURI = config.getRedirectURI();
+ return SourceUtil.appendParameters(redirectURI, parameters);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Manager#isAuthenticated(java.lang.String)
+ */
+ public UserHandler isAuthenticated(String handlerName)
+ throws ProcessingException {
+ return this.getUserHandler( handlerName );
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Manager#logout(java.lang.String, java.lang.String)
+ */
+ public void logout(String handlerName, int mode)
+ throws ProcessingException {
+ HandlerConfiguration config = this.getHandlerConfiguration( handlerName );
+ if ( config == null ) {
+ throw new ProcessingException("Unknown handler to logout: " + handlerName);
+ }
+ // are we logged in?
+ UserHandler handler = this.getUserHandler( handlerName );
+ // we don't throw an exception if we are already logged out!
+ if ( handler != null ) {
+
+ // Do we save something on logout?
+ /*
+
+ if ( config.saveOnLogout()
+ && config.getSaveResource() != null) {
+ final AuthenticationContext authContext = handler.getContext();
+ try {
+ // This might not work, because of the missing state
+ authContext.saveXML("/authentication",
+ null,
+ ContextHelper.getObjectModel(this.context),
+ this.resolver, this.manager);
+ } catch (Exception ignore) {
+ // we don't want to stop the logout process
+ // because of errors during save
+ this.getLogger().error("Exception while saving authentication information.", ignore);
+ }
+ }
+ // save applications (if configured)
+ Iterator iter = config.getApplications().values().iterator();
+ while ( iter.hasNext() ) {
+ ApplicationConfiguration appConfig = (ApplicationConfiguration) iter.next();
+ if ( appConfig.saveOnLogout()
+ && appConfig.getSaveResource() != null ) {
+ // ???
+ }
+ }
+ */
+ // notify the authenticator
+ try {
+ this.lookupAuthenticator(config).logout(handler);
+ } catch (Exception ignore) {
+ // we really ignore any exception!
+ }
+
+ List applicationContexts = handler.getApplicationContexts();
+ if ( applicationContexts != null ) {
+ ContextManager contextManager = null;
+
+ try {
+ contextManager = (ContextManager)this.manager.lookup(ContextManager.ROLE);
+
+ Iterator i = applicationContexts.iterator();
+ while ( i.hasNext() ) {
+ final String current = (String)i.next();
+ contextManager.deleteContext( current );
+ }
+ } catch (ServiceException ce) {
+ throw new ProcessingException("Unable to create session context.", ce);
+ } finally {
+ this.manager.release( contextManager);
+ }
+ }
+
+ UserState status = this.getUserState();
+ status.removeHandler( handlerName );
+ this.updateUserState();
+
+ // handling of session termination
+ SessionManager sessionManager = null;
+ try {
+ sessionManager = (SessionManager)this.manager.lookup( SessionManager.ROLE );
+
+ if ( mode == AuthenticationConstants.LOGOUT_MODE_IMMEDIATELY ) {
+ sessionManager.terminateSession(true);
+ } else if ( mode == AuthenticationConstants.LOGOUT_MODE_IF_UNUSED ) {
+ if ( !status.hasHandler()) {
+ sessionManager.terminateSession( false );
+ }
+
+ } else if ( mode == AuthenticationConstants.LOGOUT_MODE_IF_NOT_AUTHENTICATED) {
+ if ( !status.hasHandler()) {
+ sessionManager.terminateSession( true );
+ }
+ } else {
+ throw new ProcessingException("Unknown logout mode: " + mode);
+ }
+
+ } catch (ServiceException se) {
+ throw new ProcessingException("Unable to lookup session manager.", se);
+ } finally {
+ this.manager.release( sessionManager );
+ }
+ }
+
+ }
+
+ /**
+ * Serviceable
+ */
+ public void service(ServiceManager manager)
+ throws ServiceException {
+ this.manager = manager;
+ this.resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+ this.xpathProcessor = (XPathProcessor)this.manager.lookup(XPathProcessor.ROLE);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ Iterator iter = this.authenticators.values().iterator();
+ while ( iter.hasNext() ) {
+ final Authenticator authenticator = (Authenticator) iter.next();
+ ContainerUtil.dispose( authenticator );
+ }
+ if ( this.manager != null) {
+ this.manager.release( this.resolver );
+ this.manager.release(this.xpathProcessor);
+ this.resolver = null;
+ this.xpathProcessor = null;
+ this.manager = null;
+ }
+ }
+
+ /**
+ * Get the current state of authentication
+ */
+ public RequestState getState() {
+ return getRequestState(this.context);
+ }
+
+ public static RequestState getRequestState(Context context) {
+ final Request req = ContextHelper.getRequest(context);
+ return (RequestState)req.getAttribute( REQUEST_STATE_KEY);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+ */
+ public void contextualize(Context context) throws ContextException {
+ this.context = context;
+ }
+
+ protected void setState(RequestState status) {
+ final Request req = ContextHelper.getRequest(this.context);
+ if ( status != null ) {
+ req.setAttribute( REQUEST_STATE_KEY, status);
+ } else {
+ req.removeAttribute( REQUEST_STATE_KEY );
+ }
+ }
+
+ /**
+ * Create Application Context.
+ * This context is destroyed when the user logs out of the handler
+ */
+ public SessionContext createApplicationContext(String name,
+ String loadURI,
+ String saveURI)
+ throws ProcessingException {
+ RequestState state = this.getState();
+ UserHandler handler = state.getHandler();
+
+ SessionContext context = null;
+
+ if ( handler != null ) {
+ ContextManager contextManager = null;
+ try {
+ contextManager = (ContextManager)this.manager.lookup(ContextManager.ROLE);
+ // create new context
+ context = contextManager.createContext(name, loadURI, saveURI);
+ handler.addApplicationContext( name );
+
+ } catch (ServiceException ce) {
+ throw new ProcessingException("Unable to create session context.", ce);
+ } catch (IOException ioe) {
+ throw new ProcessingException("Unable to create session context.", ioe);
+ } catch (SAXException saxe) {
+ throw new ProcessingException("Unable to create session context.", saxe);
+ } finally {
+ manager.release( contextManager);
+ }
+ } else {
+ throw new ProcessingException("No handler defined. Unable to create application context.");
+ }
+
+ return context;
+ }
+
+}
+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultHandlerManager.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultHandlerManager.java
new file mode 100644
index 0000000..49573d6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/DefaultHandlerManager.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.components;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.ChainedConfiguration;
+import org.apache.cocoon.components.SitemapConfigurationHolder;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration;
+import org.apache.excalibur.source.SourceResolver;
+
+
+/**
+ * This is a utility class managing the authentication handlers
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: DefaultHandlerManager.java,v 1.5 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class DefaultHandlerManager {
+
+ /**
+ * Get the current handler configuration
+ */
+ static public Map prepareHandlerConfiguration(SourceResolver resolver,
+ Map objectModel,
+ SitemapConfigurationHolder holder)
+ throws ConfigurationException {
+ Map configs = (Map)holder.getPreparedConfiguration();
+ if ( null == configs ) {
+ ChainedConfiguration chainedConfig = holder.getConfiguration();
+ configs = prepare( resolver, objectModel, holder, chainedConfig );
+ }
+ return configs;
+ }
+ /**
+ * Prepare the handler configuration
+ */
+ static private Map prepare(SourceResolver resolver,
+ Map objectModel,
+ SitemapConfigurationHolder holder,
+ ChainedConfiguration conf)
+ throws ConfigurationException {
+ // test for handlers
+ boolean found = false;
+ Configuration[] handlers = null;
+ Configuration handlersWrapper = conf.getChild("handlers", false);
+ if ( null != handlersWrapper ) {
+ handlers = handlersWrapper.getChildren("handler");
+ if ( null != handlers && handlers.length > 0) {
+ found = true;
+ }
+ }
+
+ Map values = null;
+ final ChainedConfiguration parent = conf.getParent();
+ if ( null != parent ) {
+ values = prepare( resolver, objectModel, holder, parent );
+ if ( found ) {
+ values = new HashMap( values );
+ }
+ } else if ( found ){
+ values = new HashMap(10);
+ } else {
+ values = Collections.EMPTY_MAP;
+ }
+
+ if ( found ) {
+ for(int i=0; i<handlers.length;i++) {
+ // check unique name
+ final String name = handlers[i].getAttribute("name");
+ if ( null != values.get(name) ) {
+ throw new ConfigurationException("Handler names must be unique: " + name);
+ }
+
+ addHandler( resolver, objectModel, handlers[i], values );
+ }
+ }
+ holder.setPreparedConfiguration( conf, values );
+
+ return values;
+ }
+
+ /**
+ * Add one handler configuration
+ */
+ static private void addHandler(SourceResolver resolver,
+ Map objectModel,
+ Configuration configuration,
+ Map values)
+ throws ConfigurationException {
+ // get handler name
+ final String name = configuration.getAttribute("name");
+
+ // create handler
+ HandlerConfiguration currentHandler = new HandlerConfiguration(name);
+
+ try {
+ currentHandler.configure(resolver, ObjectModelHelper.getRequest(objectModel), configuration);
+ } catch (ProcessingException se) {
+ throw new ConfigurationException("Exception during configuration of handler: " + name, se);
+ } catch (org.xml.sax.SAXException se) {
+ throw new ConfigurationException("Exception during configuration of handler: " + name, se);
+ } catch (java.io.IOException se) {
+ throw new ConfigurationException("Exception during configuration of handler: " + name, se);
+ }
+ values.put( name, currentHandler );
+ }
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/PipelineAuthenticator.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/PipelineAuthenticator.java
new file mode 100644
index 0000000..84feb5e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/PipelineAuthenticator.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.components;
+
+import java.io.IOException;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.webapps.session.MediaManager;
+import org.apache.cocoon.xml.XMLUtils;
+import org.apache.cocoon.xml.dom.DOMUtil;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.source.SourceResolver;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
+
+/**
+ * Verify if a user can be authenticated.
+ * This is a helper class that could be made pluggable if required.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: PipelineAuthenticator.java,v 1.13 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public class PipelineAuthenticator
+ extends AbstractLogEnabled
+ implements Serviceable, ThreadSafe, Disposable, Authenticator {
+
+ /** The service manager */
+ protected ServiceManager manager;
+
+ /** The source resolver */
+ protected SourceResolver resolver;
+
+ /**
+ * Check the fragment if it is valid
+ */
+ private boolean isValidAuthenticationFragment(Document authenticationFragment)
+ throws ProcessingException {
+ // calling method is synced
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("BEGIN isValidAuthenticationFragment fragment="
+ + XMLUtils.serializeNodeToXML(authenticationFragment));
+ }
+ boolean isValid = false;
+
+ // authenticationFragment must only have exactly one child with
+ // the name authentication
+ if (authenticationFragment.hasChildNodes() == true
+ && authenticationFragment.getChildNodes().getLength() == 1) {
+ Node child = authenticationFragment.getFirstChild();
+
+ if (child.getNodeType() == Node.ELEMENT_NODE
+ && child.getNodeName().equals("authentication") == true) {
+
+ // now authentication must have one child ID
+ if (child.hasChildNodes() == true) {
+ NodeList children = child.getChildNodes();
+ boolean found = false;
+ int i = 0;
+ int l = children.getLength();
+
+ while (found == false && i < l) {
+ child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE
+ && child.getNodeName().equals("ID") == true) {
+ found = true;
+ } else {
+ i++;
+ }
+ }
+
+ // now the last check: ID must have a TEXT child
+ if (found == true) {
+ child.normalize(); // join text nodes
+ if (child.hasChildNodes() == true &&
+ child.getChildNodes().getLength() == 1 &&
+ child.getChildNodes().item(0).getNodeType() == Node.TEXT_NODE) {
+ String value = child.getChildNodes().item(0).getNodeValue().trim();
+ if (value.length() > 0) isValid = true;
+ }
+ }
+ }
+
+ }
+ }
+ if (this.getLogger().isDebugEnabled()) {
+ this.getLogger().debug("END isValidAuthenticationFragment valid=" + isValid);
+ }
+ return isValid;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Authenticator#authenticate(org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration, org.apache.excalibur.source.SourceParameters)
+ */
+ public AuthenticationResult authenticate(HandlerConfiguration configuration,
+ SourceParameters parameters)
+ throws ProcessingException {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("start authenticator using handler " + configuration.getName());
+ }
+
+ final String authenticationResourceName = configuration.getAuthenticationResource();
+ final SourceParameters authenticationParameters = configuration.getAuthenticationResourceParameters();
+ if (parameters != null) {
+ parameters.add(authenticationParameters);
+ } else {
+ parameters = authenticationParameters;
+ }
+
+ Document doc = null;
+ String exceptionMsg = null;
+
+ // invoke the source
+ try {
+ Source source = null;
+ try {
+ source = SourceUtil.getSource(authenticationResourceName, null,
+ parameters, this.resolver);
+ doc = SourceUtil.toDOM(source);
+ } catch (SAXException se) {
+ throw new ProcessingException(se);
+ } catch (SourceException se) {
+ throw SourceUtil.handle(se);
+ } catch (IOException e) {
+ throw new ProcessingException(e);
+ } finally {
+ this.resolver.release(source);
+ }
+ } catch (ProcessingException local) {
+ this.getLogger().error("authenticator: " + local.getMessage(), local);
+ exceptionMsg = local.getMessage();
+ }
+
+ // test if authentication was successful
+ boolean isValid = false;
+ AuthenticationResult result = null;
+ if (doc != null) {
+ isValid = this.isValidAuthenticationFragment( doc );
+
+ if ( isValid ) {
+ if (this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Authenticator: User authenticated using handler '"
+ + configuration.getName() + "'");
+ }
+
+ MediaManager mediaManager = null;
+ String mediaType;
+ try {
+ mediaManager = (MediaManager)this.manager.lookup( MediaManager.ROLE );
+ mediaType = mediaManager.getMediaType();
+ } catch (ServiceException se) {
+ throw new ProcessingException("Unable to lookup media manager.", se);
+ } finally {
+ this.manager.release( mediaManager );
+ }
+ synchronized (configuration) {
+ // add special nodes to the authentication block:
+ // useragent, type and media
+ Element specialElement;
+ Text specialValue;
+ Element authNode;
+
+ authNode = (Element)doc.getFirstChild();
+
+ specialElement = doc.createElementNS(null, "type");
+ specialValue = doc.createTextNode("cocoon.authentication");
+ specialElement.appendChild(specialValue);
+ authNode.appendChild(specialElement);
+
+ specialElement = doc.createElementNS(null, "media");
+ specialValue = doc.createTextNode(mediaType);
+ specialElement.appendChild(specialValue);
+ authNode.appendChild(specialElement);
+
+ result = new AuthenticationResult(true, doc);
+
+ } // end sync
+ }
+ }
+
+ if ( !isValid ) {
+ if (this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Authenticator: Failed authentication using handler '"
+ + configuration.getName()+ "'");
+ }
+ // get the /authentication/data Node if available
+ Node data = null;
+
+ if (doc != null) {
+ data = DOMUtil.getFirstNodeFromPath(doc,
+ new String[] {"authentication","data"},
+ false);
+ }
+ doc = DOMUtil.createDocument();
+
+ // now create the following xml:
+ // <root>
+ // <failed/>
+ // if data is available data is included, otherwise:
+ // <data>No information</data>
+ // If exception message contains info, it is included into failed
+ // </root>
+ final Element root = doc.createElementNS(null, "root");
+ doc.appendChild(root);
+ Element element = doc.createElementNS(null, "failed");
+ root.appendChild(element);
+
+ if (exceptionMsg != null) {
+ Text text = doc.createTextNode(exceptionMsg);
+ element.appendChild(text);
+ }
+
+ if (data == null) {
+ element = doc.createElementNS(null, "data");
+ root.appendChild(element);
+ Text text = doc.createTextNode("No information available");
+ element.appendChild(text);
+ } else {
+ root.appendChild(doc.importNode(data, true));
+ }
+
+ result = new AuthenticationResult(false, doc);
+ }
+
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("end authenticator");
+ }
+
+ return result;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ this.resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ if ( this.manager != null ){
+ this.manager.release( this.resolver );
+ this.manager = null;
+ this.resolver = null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.webapps.authentication.components.Authenticator#logout(org.apache.cocoon.webapps.authentication.user.UserHandler)
+ */
+ public void logout(UserHandler handler) {
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("logout using handler " + handler.getHandlerName());
+ }
+
+ final HandlerConfiguration configuration = handler.getHandlerConfiguration();
+ final String logoutResourceName = configuration.getLogoutResource();
+ if (logoutResourceName != null) {
+ final SourceParameters parameters = configuration.getAuthenticationResourceParameters();
+
+ // invoke the source
+ Source source = null;
+ try {
+ // This allows arbitrary business logic to be called. Whatever is returned
+ // is ignored.
+ source = SourceUtil.getSource(logoutResourceName, null, parameters, this.resolver);
+ SourceUtil.toDOM(source);
+ } catch (Exception ignore) {
+ this.getLogger().error("logout: " + ignore.getMessage(), ignore);
+ } finally {
+ this.resolver.release(source);
+ }
+ }
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/ApplicationConfiguration.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/ApplicationConfiguration.java
new file mode 100644
index 0000000..e3dffd2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/ApplicationConfiguration.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.configuration;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.source.SourceResolver;
+import org.xml.sax.SAXException;
+
+/**
+ * This object stores information about an application configuration
+ * inside a handler configuration.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: ApplicationConfiguration.java,v 1.3 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class ApplicationConfiguration
+implements java.io.Serializable {
+
+ /** The unique name of the handler */
+ private String name;
+
+ /** The load resource (optional) */
+ private String loadResource;
+
+ /** The save resource (optional) */
+ private String saveResource;
+
+ /** The load resource parameters (optional) */
+ private SourceParameters loadResourceParameters;
+
+ /** The save resource parameters (optional) */
+ private SourceParameters saveResourceParameters;
+
+ /** Is the application loaded on demand */
+ private boolean loadOnDemand = false;
+
+ /** The corresponding handler */
+ private HandlerConfiguration handler;
+
+ /** The configuration fragments */
+ private Map configurations;
+
+ /** Save the context on logout */
+ private boolean saveOnLogout = false;
+
+ /**
+ * Construct a new application handler
+ */
+ public ApplicationConfiguration(HandlerConfiguration handler, String name)
+ throws ProcessingException {
+ this.handler = handler;
+ this.name = name;
+ if (name.indexOf('_') != -1
+ || name.indexOf(':') != -1
+ || name.indexOf('/') != -1) {
+ throw new ProcessingException("application name must not contain one of the characters ':','_' or '/'.");
+ }
+ this.configurations = new HashMap(3, 2);
+ }
+
+ /**
+ * Configure an application
+ */
+ public void configure(SourceResolver resolver, Configuration appconf)
+ throws ProcessingException, SAXException, IOException, ConfigurationException {
+ Configuration child = null;
+
+ // test for loadondemand attribute
+ this.loadOnDemand = appconf.getAttributeAsBoolean("loadondemand", false);
+
+ // get load resource (optinal)
+ child = appconf.getChild("load", false);
+ if (child != null) {
+ this.loadResource = child.getAttribute("uri");
+ this.loadResourceParameters = SourceParameters.create(child);
+ }
+
+ // get save resource (optional)
+ child = appconf.getChild("save", false);
+ if (child != null) {
+ this.saveResource = child.getAttribute("uri");
+ this.saveResourceParameters = SourceParameters.create(child);
+ this.saveOnLogout = child.getAttributeAsBoolean("saveOnLogout", false);
+ }
+
+ // get configurations (optional)
+ Configuration[] configurations = appconf.getChildren("configuration");
+ if (configurations != null) {
+ for(int i = 0; i < configurations.length; i++) {
+ child = configurations[i];
+ String value = child.getAttribute("name");
+ if (this.getConfiguration(value) != null) {
+ throw new ConfigurationException("Configuration names must be unique for application " + this.name + ": " + value);
+ }
+ this.configurations.put(value, child);
+ }
+ }
+ }
+
+ /**
+ * Get the application name.
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * Get the handler
+ */
+ public HandlerConfiguration getHandler() {
+ return this.handler;
+ }
+
+ /**
+ * Get the load resource
+ */
+ public String getLoadResource() {
+ return this.loadResource;
+ }
+
+ /**
+ * Get the save resource
+ */
+ public String getSaveResource() {
+ return this.saveResource;
+ }
+
+ /**
+ * Get the load resource parameters
+ */
+ public SourceParameters getLoadResourceParameters() {
+ return this.loadResourceParameters;
+ }
+
+ /**
+ * Get the save resource parameters
+ */
+ public SourceParameters getSaveResourceParameters() {
+ return this.saveResourceParameters;
+ }
+
+ /** Should we save on logout? */
+ public boolean saveOnLogout() {
+ return this.saveOnLogout;
+ }
+
+ public boolean getLoadOnDemand() {
+ return loadOnDemand;
+ }
+
+ /**
+ * Get the configuration
+ */
+ public Configuration getConfiguration(String name) {
+ return (Configuration)this.configurations.get(name);
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/HandlerConfiguration.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/HandlerConfiguration.java
new file mode 100644
index 0000000..1b124a4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/HandlerConfiguration.java
@@ -0,0 +1,286 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.configuration;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.webapps.authentication.components.PipelineAuthenticator;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.source.SourceResolver;
+import org.xml.sax.SAXException;
+
+/**
+ * The authentication Handler.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: HandlerConfiguration.java,v 1.5 2004/03/05 13:01:40 bdelacretaz Exp $
+*/
+public final class HandlerConfiguration
+implements java.io.Serializable {
+
+ /** The unique name of the handler */
+ private final String name;
+
+ /** The redirect-to URI */
+ private String redirectURI;
+
+ /** The redirect parameters */
+ private SourceParameters redirectParameters;
+
+ /** The authentication resource */
+ private String authenticationResource;
+
+ /** The logout resource */
+ private String logoutResource;
+
+ /** The class name of the authenticator to use */
+ private String authenticatorClass;
+
+ /** The authentication resource parameters */
+ private SourceParameters authenticationResourceParameters;
+
+ /** The load resource (optional) */
+ private String loadResource;
+
+ /** The load resource (optional) parameters */
+ private SourceParameters loadResourceParameters;
+
+ /** The save resource (optional) */
+ private String saveResource;
+
+ /** The save resource (optional) parameters */
+ private SourceParameters saveResourceParameters;
+
+ /** The Application Configurations */
+ private Map applications = new Hashtable(3, 2);
+
+ /** The configuration fragments */
+ private Map configurations;
+
+ /** Save the context on logout */
+ private boolean saveOnLogout = false;
+
+ /**
+ * Create a new handler object.
+ */
+ public HandlerConfiguration(String name) {
+ this.name = name;
+ this.configurations = new HashMap(3, 2);
+ }
+
+ /**
+ * Configure
+ */
+ public void configure(SourceResolver resolver,
+ Request request,
+ Configuration conf)
+ throws ProcessingException, SAXException, IOException, ConfigurationException {
+ // get login (required)
+ Configuration child = conf.getChild("redirect-to", false);
+ if (child == null)
+ throw new ConfigurationException("Handler '"+this.name+"' needs a redirect-to URI.");
+ this.redirectURI = child.getAttribute("uri");
+ if ( this.redirectURI.startsWith("cocoon:") ) {
+ final int pos = this.redirectURI.indexOf('/');
+ if ( pos != -1 && this.redirectURI.length() > pos) {
+ if (this.redirectURI.charAt(pos+1) == '/') {
+ this.redirectURI = this.redirectURI.substring(pos+2).trim();
+ this.redirectURI = request.getContextPath()+"/"+this.redirectURI;
+ } else {
+ this.redirectURI = this.redirectURI.substring(pos+1).trim();
+ }
+ }
+ }
+
+ this.redirectParameters = SourceParameters.create(child);
+
+ // get load resource (required)
+ child = conf.getChild("authentication", false);
+ if (child == null) {
+ throw new ConfigurationException("Handler '"+this.name+"' needs authentication configuration");
+ }
+ this.authenticatorClass = child.getAttribute("authenticator", PipelineAuthenticator.class.getName());
+ if ( PipelineAuthenticator.class.getName().equals(authenticatorClass)) {
+ this.authenticationResource = child.getAttribute("uri");
+ } else {
+ // the uri attribute is optional for other authenticators
+ this.authenticationResource = child.getAttribute("uri", null);
+ }
+ // optinal logout resource
+ this.logoutResource = child.getAttribute("logout-uri", null);
+ this.authenticationResourceParameters = SourceParameters.create(child);
+
+ // get load resource (optional)
+ child = conf.getChild("load", false);
+ if (child != null) {
+ this.loadResource = child.getAttribute("uri");
+ this.loadResourceParameters = SourceParameters.create(child);
+ }
+
+ // get save resource (optional)
+ child = conf.getChild("save", false);
+ if (child != null) {
+ this.saveResource = child.getAttribute("uri");
+ this.saveResourceParameters = SourceParameters.create(child);
+ this.saveOnLogout = child.getAttributeAsBoolean("saveOnLogout", false);
+ }
+
+ // And now: Applications
+ child = conf.getChild("applications", false);
+ if (child != null) {
+ Configuration[] appConfs = child.getChildren("application");
+ Configuration appconf;
+
+ if (appConfs != null) {
+ for(int i = 0; i < appConfs.length; i++) {
+ appconf = appConfs[i];
+
+ // get name
+ String appName = appconf.getAttribute("name");
+
+ // test if handler is unique
+ if (this.applications.get(appName) != null) {
+ throw new ConfigurationException("Application names must be unique: " + appName);
+ }
+
+ // create handler
+ ApplicationConfiguration apphandler = new ApplicationConfiguration(this, appName);
+
+ // store handler
+ this.applications.put(appName, apphandler);
+
+ // configure
+ apphandler.configure(resolver, appconf);
+ }
+ }
+ }
+
+ // get configurations (optional)
+ Configuration[] configurations = conf.getChildren("configuration");
+ if (configurations != null) {
+ for(int i = 0; i < configurations.length; i++) {
+ child = configurations[i];
+ String value = child.getAttribute("name");
+ if (this.getConfiguration(value) != null) {
+ throw new ConfigurationException("Configuration names must be unique for application " + this.name + ": " + value);
+ }
+ this.configurations.put(value, child);
+ }
+ }
+
+ }
+
+
+ /**
+ * Get the handler name.
+ */
+ public String getName() { return name; }
+
+ /**
+ * Get the redirect URI
+ */
+ public String getRedirectURI() {
+ return this.redirectURI;
+ }
+
+ /**
+ * Get the redirect parameters
+ */
+ public SourceParameters getRedirectParameters() {
+ return this.redirectParameters;
+ }
+
+ /**
+ * Get the authentication resource
+ */
+ public String getAuthenticationResource() {
+ return this.authenticationResource;
+ }
+
+ /**
+ * Get the authentication resource
+ */
+ public SourceParameters getAuthenticationResourceParameters() {
+ return this.authenticationResourceParameters;
+ }
+
+ /**
+ * Get the logout resource
+ */
+ public String getLogoutResource() {
+ return this.logoutResource;
+ }
+
+ /** Get the save resource */
+ public String getSaveResource() {
+ return this.saveResource; }
+
+
+ /** Get the load resource */
+ public String getLoadResource() {
+ return this.loadResource;
+ }
+
+ /** Should we save on logout? */
+ public boolean saveOnLogout() {
+ return this.saveOnLogout;
+ }
+
+ /** Get the save resource */
+ public SourceParameters getSaveResourceParameters() {
+ return this.saveResourceParameters;
+ }
+
+ /** Get the load resource parameters */
+ public SourceParameters getLoadResourceParameters() {
+ return this.loadResourceParameters;
+ }
+
+ /**
+ * Get the applications map
+ */
+ public Map getApplications() {
+ return applications;
+ }
+
+ /**
+ * Get the configuration
+ */
+ public Configuration getConfiguration(String name) {
+ return (Configuration)this.configurations.get(name);
+ }
+
+ /**
+ * toString()
+ */
+ public String toString() {
+ return "authentication handler '" + this.name + "' (" + super.toString() + ')';
+ }
+
+ /**
+ * Return the authenticator class
+ */
+ public String getAuthenticatorClassName() {
+ return this.authenticatorClass;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContext.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContext.java
new file mode 100644
index 0000000..fc40e46
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContext.java
@@ -0,0 +1,867 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.context;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.CascadingRuntimeException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.webapps.authentication.AuthenticationConstants;
+import org.apache.cocoon.webapps.authentication.components.DefaultAuthenticationManager;
+import org.apache.cocoon.webapps.authentication.configuration.ApplicationConfiguration;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.webapps.session.context.SessionContext;
+import org.apache.cocoon.webapps.session.context.SimpleSessionContext;
+import org.apache.cocoon.xml.dom.DOMUtil;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.xml.xpath.XPathProcessor;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * This is the implementation for the authentication context
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: AuthenticationContext.java,v 1.15 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public class AuthenticationContext
+implements SessionContext {
+
+ protected String name;
+ protected UserHandler handler;
+ protected SessionContext authContext;
+ protected String handlerName;
+ protected boolean initialized;
+ protected Context context;
+ protected XPathProcessor xpathProcessor;
+
+ /** Constructor */
+ public AuthenticationContext(Context context, XPathProcessor processor) {
+ this.context = context;
+ this.xpathProcessor = processor;
+ }
+
+ /**
+ * Initialize the context. This method has to be called right after
+ * the constructor.
+ */
+ public void init(UserHandler handler) {
+ this.name = AuthenticationConstants.SESSION_CONTEXT_NAME;
+
+ this.handler = handler;
+ this.handlerName = this.handler.getHandlerName();
+ try {
+ this.authContext = new SimpleSessionContext(this.xpathProcessor);
+ } catch (ProcessingException pe) {
+ throw new CascadingRuntimeException("Unable to create simple context.", pe);
+ }
+ }
+
+ protected RequestState getState() {
+ return DefaultAuthenticationManager.getRequestState( this.context );
+ }
+
+ public void init(Document doc)
+ throws ProcessingException {
+ if ( initialized ) {
+ throw new ProcessingException("The context can only be initialized once.");
+ }
+ this.authContext.setNode("/", doc.getFirstChild());
+ }
+
+ /** Set the name of the context.
+ * This method must be invoked in the init phase.
+ * In addition a load and a save resource can be provided.
+ */
+ public void setup(String value, String load, String save) {
+ // this is not used, everything is set in the constructor
+ }
+
+ /**
+ * Get the name of the context
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * Get a document fragment.
+ * If the node specified by the path exist, its content is returned
+ * as a DocumentFragment.
+ * If the node does not exists, <CODE>null</CODE> is returned.
+ */
+ public DocumentFragment getXML(String path)
+ throws ProcessingException {
+ if (path == null) {
+ throw new ProcessingException("getXML: Path is required");
+ }
+ if (!path.startsWith("/")) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ DocumentFragment frag = null;
+
+ if ( path.equals("/") ) {
+ // get all: first authentication then application
+ frag = this.authContext.getXML("/authentication");
+
+ if (frag != null) {
+ // now add root node authentication
+ Node root = frag.getOwnerDocument().createElementNS(null, "authentication");
+ Node child;
+ while (frag.hasChildNodes()) {
+ child = frag.getFirstChild();
+ frag.removeChild(child);
+ root.appendChild(child);
+ }
+ frag.appendChild(root);
+ }
+
+ if (applicationName != null) {
+ // join
+ DocumentFragment appFrag = this.authContext.getXML("/applications/" + applicationName);
+ if (appFrag != null) {
+ // now add root node application
+ Node root = appFrag.getOwnerDocument().createElementNS(null, "application");
+ Node child;
+ while (appFrag.hasChildNodes() ) {
+ child = appFrag.getFirstChild();
+ appFrag.removeChild(child);
+ root.appendChild(child);
+ }
+ appFrag.appendChild(root);
+
+ if (frag == null) {
+ frag = appFrag;
+ } else {
+ while (appFrag.hasChildNodes() ) {
+ child = appFrag.getFirstChild();
+ appFrag.removeChild(child);
+ child = frag.getOwnerDocument().importNode(child, true);
+ frag.appendChild(child);
+ }
+ }
+ }
+ }
+
+ } else if (path.startsWith("/authentication") ) {
+ frag = this.authContext.getXML(path);
+
+ } else if (path.equals("/application") || path.startsWith("/application/") ) {
+ if (applicationName != null) {
+ String appPath;
+ if (path.equals("/application")) {
+ appPath ="/";
+ } else {
+ appPath = path.substring("/application".length());
+ }
+ frag = this.authContext.getXML("/applications/" + applicationName + appPath);
+ }
+ } else {
+ frag = this.authContext.getXML(path);
+ }
+
+ return frag;
+ }
+
+ /**
+ * Set a document fragment at the given path.
+ * The implementation of this method is context specific.
+ * Usually all children of the node specified by the path are removed
+ * and the children of the fragment are inserted as new children.
+ * If the path is not existent it is created.
+ */
+ public void setXML(String path, DocumentFragment fragment)
+ throws ProcessingException {
+ if (path == null) {
+ throw new ProcessingException("setXML: Path is required");
+ }
+ if (!path.startsWith("/")) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ if ( path.equals("/") ) {
+ // set all is not allowed with "/"
+ throw new ProcessingException("Path '/' is not allowed");
+
+ } else if ( path.startsWith("/authentication") ) {
+
+ this.cleanParametersCache();
+ this.authContext.setXML(path, fragment);
+
+ } else if (path.equals("/application")
+ || path.startsWith("/application/") ) {
+
+ if (applicationName == null) {
+ throw new ProcessingException("Application is required");
+ }
+ String appPath;
+ if (path.equals("/application")) {
+ appPath = "/";
+ } else {
+ appPath = path.substring("/application".length());
+ }
+ this.authContext.setXML("/applications/" + applicationName + appPath, fragment);
+
+ } else {
+ this.authContext.setXML(path, fragment);
+ }
+ }
+
+ /**
+ * Append a document fragment at the given path.
+ * The implementation of this method is context specific.
+ * Usually the children of the fragment are appended as new children of the
+ * node specified by the path.
+ * If the path is not existent it is created and this method should work
+ * in the same way as setXML.
+ */
+ public void appendXML(String path, DocumentFragment fragment)
+ throws ProcessingException {
+ if (path == null) {
+ throw new ProcessingException("appendXML: Path is required");
+ }
+ if (!path.startsWith("/") ) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ if ( path.equals("/") ) {
+ // set all is not allowed with "/"
+ throw new ProcessingException("Path '/' is not allowed");
+
+ } else if ( path.startsWith("/authentication") ) {
+
+ this.cleanParametersCache();
+ this.authContext.appendXML(path, fragment);
+
+ } else if (path.equals("/application")
+ || path.startsWith("/application/") ) {
+
+ if (applicationName == null) {
+ throw new ProcessingException("Application is required");
+ }
+ String appPath;
+ if (path.equals("/application") ) {
+ appPath = "/";
+ } else {
+ appPath = path.substring("/application".length());
+ }
+ this.authContext.appendXML("/applications/" + applicationName + appPath, fragment);
+
+ } else {
+ this.authContext.appendXML(path, fragment);
+ }
+ }
+
+ /**
+ * Remove some content from the context.
+ * The implementation of this method is context specific.
+ * Usually this method should remove all children of the node specified
+ * by the path.
+ */
+ public void removeXML(String path)
+ throws ProcessingException {
+ if (path == null) {
+ throw new ProcessingException("removeXML: Path is required");
+ }
+ if (!path.startsWith("/") ) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ if (path.equals("/") ) {
+ this.cleanParametersCache();
+ this.authContext.removeXML("/");
+
+ } else if (path.startsWith("/authentication") ) {
+
+ this.cleanParametersCache();
+ this.authContext.removeXML(path);
+
+ } else if (path.equals("/application")
+ || path.startsWith("/application/") ) {
+ if (applicationName == null) {
+ throw new ProcessingException("removeXML: Application is required for path " + path);
+ }
+ String appPath;
+ if (path.equals("/application") ) {
+ appPath = "/";
+ } else {
+ appPath = path.substring("/application".length());
+ }
+ this.authContext.removeXML("/applications/" + applicationName + appPath);
+ } else {
+ this.authContext.removeXML(path);
+ }
+ }
+
+ /**
+ * Set a context attribute.
+ * Attributes over a means to store any data (object) in a session
+ * context. If <CODE>value</CODE> is <CODE>null</CODE> the attribute is
+ * removed. If already an attribute exists with the same key, the value
+ * is overwritten with the new one.
+ */
+ public void setAttribute(String key, Object value)
+ throws ProcessingException {
+ this.authContext.setAttribute(key, value);
+ }
+
+ /**
+ * Get the value of a context attribute.
+ * If the attribute is not available return <CODE>null</CODE>.
+ */
+ public Object getAttribute(String key)
+ throws ProcessingException {
+ return this.authContext.getAttribute(key);
+ }
+
+ /**
+ * Get the value of a context attribute.
+ * If the attribute is not available the return the
+ * <CODE>defaultObject</CODE>.
+ */
+ public Object getAttribute(String key, Object defaultObject)
+ throws ProcessingException {
+ return this.authContext.getAttribute(key, defaultObject);
+ }
+
+ /**
+ * Get a copy of the first node specified by the path.
+ * If the node does not exist, <CODE>null</CODE> is returned.
+ */
+ public Node getSingleNode(String path)
+ throws ProcessingException {
+ throw new ProcessingException("This method is not supported by the authenticaton session context.");
+ }
+
+ /**
+ * Get a copy of all nodes specified by the path.
+ */
+ public NodeList getNodeList(String path)
+ throws ProcessingException {
+ throw new ProcessingException("This method is not supported by the authenticaton session context.");
+ }
+
+ /**
+ * Set the value of a node. The node is copied before insertion.
+ */
+ public void setNode(String path, Node node)
+ throws ProcessingException {
+ throw new ProcessingException("This method is not supported by the authenticaton session context.");
+ }
+
+ /**
+ * Get the value of this node.
+ * This is similiar to the xsl:value-of function.
+ * If the node does not exist, <code>null</code> is returned.
+ */
+ public String getValueOfNode(String path)
+ throws ProcessingException {
+ throw new ProcessingException("This method is not supported by the authenticaton session context.");
+ }
+
+ /**
+ * Set the value of a node.
+ * All children of the node are removed beforehand and one single text
+ * node with the given value is appended to the node.
+ */
+ public void setValueOfNode(String path, String value)
+ throws ProcessingException {
+ throw new ProcessingException("This method is not supported by the authenticaton session context.");
+ }
+
+ /**
+ * Stream the XML directly to the handler.
+ * This streams the contents of getXML() to the given handler without
+ * creating a DocumentFragment containing a copy of the data.
+ * If no data is available (if the path does not exist) <code>false</code> is
+ * returned, otherwise <code>true</code>.
+ */
+ public boolean streamXML(String path, ContentHandler contentHandler,
+ LexicalHandler lexicalHandler)
+ throws SAXException, ProcessingException {
+ if (path == null) {
+ throw new ProcessingException("streamXML: Path is required");
+ }
+ if (!path.startsWith("/") ) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ if (path.equals("/") ) {
+ // get all: first authentication then application
+ contentHandler.startElement("", "authentication", "authentication", new AttributesImpl());
+ this.authContext.streamXML("/authentication", contentHandler, lexicalHandler);
+ contentHandler.endElement("", "authentication", "authentication");
+
+ if (applicationName != null) {
+ contentHandler.startElement("", "application", "application", new AttributesImpl());
+ this.authContext.streamXML("/applications/" + applicationName, contentHandler, lexicalHandler);
+ contentHandler.endElement("", "application", "application");
+ }
+ return true;
+
+ } else if (path.startsWith("/authentication") ) {
+ return this.authContext.streamXML(path, contentHandler, lexicalHandler);
+
+ } else if (path.equals("/application") || path.startsWith("/application/") ) {
+ if (applicationName != null) {
+ String appPath;
+ if (path.equals("/application") ) {
+ appPath ="/";
+ } else {
+ appPath = path.substring("/application".length());
+ }
+ return this.authContext.streamXML("/applications/" + applicationName + appPath, contentHandler, lexicalHandler);
+ }
+ } else {
+ return this.authContext.streamXML(path, contentHandler, lexicalHandler);
+ }
+ return false;
+ }
+
+ /**
+ * Try to load XML into the context.
+ * If the context does not provide the ability of loading,
+ * an exception is thrown.
+ */
+ public void loadXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws SAXException, ProcessingException, IOException {
+ if (!path.startsWith("/") ) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+ if (path.equals("/") ) {
+ // load all: first authentication then application
+ this.loadAuthenticationXML("/authentication",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ if (applicationName != null) {
+ this.loadApplicationXML("/",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ }
+
+ } else if (path.startsWith("/authentication") ) {
+ this.loadAuthenticationXML(path,
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+
+ } else if (path.equals("/application") && applicationName != null) {
+ this.loadApplicationXML("/",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ } else if (path.startsWith("/application/") && applicationName != null) {
+ this.loadApplicationXML(path.substring(12), // start path with '/'
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ } else {
+ throw new ProcessingException("loadXML: Path is not valid: " + path);
+ }
+ }
+
+ /**
+ * Try to save XML from the context.
+ * If the context does not provide the ability of saving,
+ * an exception is thrown.
+ */
+ public void saveXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws SAXException, ProcessingException, IOException {
+ if (!path.startsWith("/") ) path = '/' + path;
+
+ final String applicationName = this.getState().getApplicationName();
+
+ if (path.equals("/") ) {
+ // save all: first authentication then application
+ this.saveAuthenticationXML("/authentication",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ if (applicationName != null) {
+ this.saveApplicationXML("/",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ }
+
+ } else if (path.startsWith("/authentication") ) {
+ this.saveAuthenticationXML(path,
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+
+ } else if (path.equals("/application") && applicationName != null) {
+ this.saveApplicationXML("/",
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ } else if (path.startsWith("/application/") && applicationName != null) {
+ this.saveApplicationXML(path.substring(12), // start path with '/'
+ parameters,
+ objectModel,
+ resolver,
+ manager);
+ } else {
+ throw new ProcessingException("saveXML: Path is not valid: " + path);
+ }
+ }
+
+ /**
+ * Clean the parameters cache
+ */
+ private void cleanParametersCache()
+ throws ProcessingException {
+ this.authContext.setAttribute("cachedmap" , null);
+ this.authContext.setAttribute("cachedpar" , null);
+ }
+
+ /**
+ * Save Authentication
+ */
+ private void saveAuthenticationXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws ProcessingException {
+ String authSaveResource = this.handler.getHandlerConfiguration().getSaveResource();
+ SourceParameters authSaveResourceParameters = this.handler.getHandlerConfiguration().getSaveResourceParameters();
+
+ if (authSaveResource == null) {
+ throw new ProcessingException("The context " + this.name + " does not support saving.");
+ }
+
+ synchronized(this.authContext) {
+ DocumentFragment fragment = this.getXML(path);
+ if (fragment == null) {
+ // create empty fake fragment
+ fragment = DOMUtil.createDocument().createDocumentFragment();
+ }
+ if (parameters != null) {
+ parameters = (SourceParameters)parameters.clone();
+ parameters.add(authSaveResourceParameters);
+ } else if (authSaveResourceParameters != null) {
+ parameters = (SourceParameters)authSaveResourceParameters.clone();
+ }
+ parameters = this.createParameters(parameters,
+ path,
+ false);
+ SourceUtil.writeDOM(authSaveResource,
+ null,
+ parameters,
+ fragment,
+ resolver,
+ "xml");
+ } // end synchronized
+ }
+
+ /**
+ * Save Authentication
+ */
+ private void loadAuthenticationXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws ProcessingException {
+ String authLoadResource = this.handler.getHandlerConfiguration().getLoadResource();
+ SourceParameters authLoadResourceParameters = this.handler.getHandlerConfiguration().getLoadResourceParameters();
+
+ if (authLoadResource == null) {
+ throw new ProcessingException("The context " + this.name + " does not support loading.");
+ }
+
+ synchronized(this.authContext) {
+
+ if (parameters != null) {
+ parameters = (SourceParameters)parameters.clone();
+ parameters.add(authLoadResourceParameters);
+ } else if (authLoadResourceParameters != null) {
+ parameters = (SourceParameters)authLoadResourceParameters.clone();
+ }
+ parameters = this.createParameters(parameters,
+ path,
+ false);
+ DocumentFragment frag;
+
+ frag = SourceUtil.readDOM(authLoadResource,
+ null,
+ parameters,
+ resolver);
+
+ this.setXML(path, frag);
+
+ } // end synchronized
+ }
+
+ /**
+ * Load XML of an application
+ */
+ private void loadApplicationXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws ProcessingException {
+ final String applicationName = this.getState().getApplicationName();
+
+ final ApplicationConfiguration conf = (ApplicationConfiguration)this.handler.getHandlerConfiguration().getApplications().get( applicationName );
+ String loadResource = conf.getLoadResource();
+ SourceParameters loadResourceParameters = conf.getLoadResourceParameters();
+ if (loadResource == null) {
+ throw new ProcessingException("The context " + this.name + " does not support loading.");
+ }
+ // synchronized
+ synchronized (this.authContext) {
+
+ if (parameters != null) {
+ parameters = (SourceParameters)parameters.clone();
+ parameters.add(loadResourceParameters);
+ } else if (loadResourceParameters != null) {
+ parameters = (SourceParameters)loadResourceParameters.clone();
+ }
+ parameters = this.createParameters(parameters,
+ path,
+ true);
+ DocumentFragment fragment;
+ fragment = SourceUtil.readDOM(loadResource,
+ null,
+ parameters,
+ resolver);
+ this.authContext.setXML("/applications/" + applicationName + '/', fragment);
+
+ } // end synchronized
+
+ }
+
+ /**
+ * Save XML of an application
+ */
+ private void saveApplicationXML(String path,
+ SourceParameters parameters,
+ Map objectModel,
+ SourceResolver resolver,
+ ServiceManager manager)
+ throws ProcessingException {
+ final String applicationName = this.getState().getApplicationName();
+ final ApplicationConfiguration conf = (ApplicationConfiguration)this.handler.getHandlerConfiguration().getApplications().get( applicationName );
+ String saveResource = conf.getSaveResource();
+ SourceParameters saveResourceParameters = conf.getSaveResourceParameters();
+
+ if (saveResource == null) {
+ throw new ProcessingException("The context " + this.name + " does not support saving.");
+ }
+ // synchronized
+ synchronized (this.authContext) {
+
+ if (parameters != null) {
+ parameters = (SourceParameters)parameters.clone();
+ parameters.add(saveResourceParameters);
+ } else if (saveResourceParameters != null) {
+ parameters = (SourceParameters)saveResourceParameters.clone();
+ }
+ parameters = this.createParameters(parameters,
+ path,
+ true);
+ DocumentFragment fragment = this.getXML("/application" + path);
+ if (fragment == null) {
+ // create empty fake fragment
+ fragment = DOMUtil.createDocument().createDocumentFragment();
+ }
+
+ SourceUtil.writeDOM(saveResource,
+ null,
+ parameters,
+ fragment,
+ resolver,
+ "xml");
+
+ } // end synchronized
+
+ }
+
+ /**
+ * Build parameters for loading and saving of application data
+ */
+ private SourceParameters createParameters(SourceParameters parameters,
+ String path,
+ boolean appendAppInfo)
+ throws ProcessingException {
+ if (parameters == null) parameters = new SourceParameters();
+
+ final String applicationName = this.getState().getApplicationName();
+
+ // add all elements from inside the handler data
+ this.addParametersFromAuthenticationXML("/data",
+ parameters);
+
+ // add all top level elements from authentication
+ this.addParametersFromAuthenticationXML("",
+ parameters);
+
+ // add application and path
+ parameters.setSingleParameterValue("handler", this.handlerName);
+ if ( appendAppInfo ) {
+ if (applicationName != null) parameters.setSingleParameterValue("application", applicationName);
+ }
+ if (path != null) parameters.setSingleParameterValue("path", path);
+
+ return parameters;
+ }
+
+ /**
+ * Convert the authentication XML of a handler to parameters.
+ * The XML is flat and consists of elements which all have exactly one text node:
+ * <parone>value_one<parone>
+ * <partwo>value_two<partwo>
+ * A parameter can occur more than once with different values.
+ */
+ private void addParametersFromAuthenticationXML(String path,
+ SourceParameters parameters)
+ throws ProcessingException {
+ final DocumentFragment fragment = this.authContext.getXML("/authentication" + path);
+ if (fragment != null) {
+ NodeList childs = fragment.getChildNodes();
+ if (childs != null) {
+ Node current;
+ for(int i = 0; i < childs.getLength(); i++) {
+ current = childs.item(i);
+
+ // only element nodes
+ if (current.getNodeType() == Node.ELEMENT_NODE) {
+ current.normalize();
+ NodeList valueChilds = current.getChildNodes();
+ String key;
+ StringBuffer valueBuffer;
+ String value;
+
+ key = current.getNodeName();
+ valueBuffer = new StringBuffer();
+ for(int m = 0; m < valueChilds.getLength(); m++) {
+ current = valueChilds.item(m); // attention: current is reused here!
+ if (current.getNodeType() == Node.TEXT_NODE) { // only text nodes
+ if (valueBuffer.length() > 0) valueBuffer.append(' ');
+ valueBuffer.append(current.getNodeValue());
+ }
+ }
+ value = valueBuffer.toString().trim();
+ if (key != null && value != null && value.length() > 0) {
+ parameters.setParameter(key, value);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public Map getContextInfo()
+ throws ProcessingException {
+ Map map = (Map)this.authContext.getAttribute( "cachedmap" );
+ if (map == null) {
+ map = new HashMap(20);
+ Parameters pars = this.createParameters(null, null, false).getFirstParameters();
+ String[] names = pars.getNames();
+ if (names != null) {
+ String key;
+ String value;
+ for(int i=0;i<names.length;i++) {
+ key = names[i];
+ value = pars.getParameter(key, null);
+ if (value != null) map.put(key, value);
+ }
+ }
+ this.authContext.setAttribute("cachedmap", map);
+ }
+ return map;
+ }
+
+ public SourceParameters getContextInfoAsParameters()
+ throws ProcessingException {
+ SourceParameters pars = (SourceParameters)this.authContext.getAttribute( "cachedpar" );
+ if (pars == null) {
+ pars = this.createParameters(null, null, false);
+ this.authContext.setAttribute("cachedpar", pars);
+ }
+ return pars;
+ }
+
+ /**
+ * Load XML of an application
+ */
+ public void loadApplicationXML(ApplicationConfiguration appConf,
+ SourceResolver resolver)
+ throws ProcessingException {
+ String loadResource = appConf.getLoadResource();
+ SourceParameters loadResourceParameters = appConf.getLoadResourceParameters();
+ if ( !this.handler.isApplicationLoaded(appConf) && loadResource != null ) {
+ synchronized (this.authContext) {
+
+ SourceParameters parameters;
+ if (loadResourceParameters != null) {
+ parameters = (SourceParameters)loadResourceParameters.clone();
+ } else {
+ parameters = new SourceParameters();
+ }
+ parameters = this.createParameters(parameters,
+ null,
+ true);
+ DocumentFragment fragment;
+ fragment = SourceUtil.readDOM(loadResource,
+ null,
+ parameters,
+ resolver);
+ this.authContext.setXML("/applications/" + appConf.getName() + '/', fragment);
+
+ } // end synchronized
+ }
+ this.handler.setApplicationIsLoaded(appConf);
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContextProvider.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContextProvider.java
new file mode 100644
index 0000000..d97cfb1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/context/AuthenticationContextProvider.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.context;
+
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.webapps.authentication.AuthenticationConstants;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.webapps.session.context.SessionContext;
+import org.apache.cocoon.webapps.session.context.SessionContextProvider;
+
+
+/**
+ * Context provider for the authentication context
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: AuthenticationContextProvider.java,v 1.8 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public final class AuthenticationContextProvider
+extends AbstractLogEnabled
+implements SessionContextProvider, ThreadSafe, Component, Serviceable {
+
+ protected ServiceManager manager;
+
+ /**
+ * Get the context
+ * @param name The name of the context
+ * @return The context
+ * @throws ProcessingException If the context is not available.
+ */
+ public SessionContext getSessionContext(String name)
+ throws ProcessingException {
+ AuthenticationContext context = null;
+ if (name.equals(AuthenticationConstants.SESSION_CONTEXT_NAME) ) {
+
+ AuthenticationManager authManager = null;
+ RequestState state = null;
+ try {
+ authManager = (AuthenticationManager)this.manager.lookup(AuthenticationManager.ROLE);
+ state = authManager.getState();
+ } catch (ServiceException ignore) {
+ } finally {
+ this.manager.release( authManager );
+ }
+
+ if ( null != state ) {
+ UserHandler handler = state.getHandler();
+ if ( handler != null ) {
+ context = handler.getContext();
+ }
+ }
+ }
+ return context;
+ }
+
+ /**
+ * Does the context exist?
+ */
+ public boolean existsSessionContext(String name)
+ throws ProcessingException {
+ return (this.getSessionContext( name ) != null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/flow/javascript/auth.js b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/flow/javascript/auth.js
new file mode 100644
index 0000000..67f5ca0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/flow/javascript/auth.js
@@ -0,0 +1,99 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Flow/Javascript wrapper to Cocoon authentication framework.
+ *
+ * WARNING - THIS IS EXPERIMENTAL STUFF!!! Use it at your own risk
+ *
+ * @author <a href="mailto:uv@upaya.co.uk">Upayavira</a>
+ * @version CVS $Id: auth.js,v 1.9 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+
+function auth_checkAuthentication(handler, application) {
+
+ var authMgr;
+ var authenticated = false;
+ try {
+ authMgr = cocoon.getComponent(Packages.org.apache.cocoon.webapps.authentication.AuthenticationManager.ROLE);
+
+ // do authentication
+ authenticated = authMgr.checkAuthentication(null, handler, application);
+ if (!authenticated) {
+ cocoon.redirectTo(authMgr.getForwardingURI(handler));
+ }
+ } finally {
+ cocoon.releaseComponent(authMgr);
+ }
+ return authenticated;
+}
+
+function auth_isAuthenticated(handler) {
+ var authMgr;
+ try {
+ // ApplicationName, do we need it?
+ authMgr = cocoon.getComponent(Packages.org.apache.cocoon.webapps.authentication.AuthenticationManager.ROLE);
+
+ var userHandler = authMgr.isAuthenticated(handler);
+ return userHandler != null;
+ } finally {
+ cocoon.releaseComponent(authMgr);
+ }
+}
+
+function auth_login(handler, application, params) {
+
+ var authParams = new Packages.org.apache.excalibur.source.SourceParameters();
+ for (var name in params) {
+ if (name.substring(0,10).equals("parameter_")) {
+ authParams.setParameter(name.substring(10), params[name]);
+ }
+ }
+ var authMgr;
+ try {
+ authMgr = cocoon.getComponent(Packages.org.apache.cocoon.webapps.authentication.AuthenticationManager.ROLE);
+ return authMgr.login( handler, application, authParams) != null;
+ } finally {
+ cocoon.releaseComponent(authMgr);
+ }
+}
+
+function auth_logout(handler, modeString) {
+ var mode;
+ if (modeString == null || modeString == "" || modeString == "if-not-authenticated") {
+ mode = Packages.org.apache.cocoon.webapps.authentication.AuthenticationConstants.LOGOUT_MODE_IF_NOT_AUTHENTICATED;
+ } else if (modeString == "if-unused") {
+ mode = Packages.org.apache.cocoon.webapps.authentication.AuthenticationConstants.LOGOUT_MODE_IF_UNUSED;
+ } else if (modeString == "immediately") {
+ mode = Packages.org.apache.cocoon.webapps.authentication.AuthenticationConstants.LOGOUT_MODE_IMMEDIATELY;
+ } else {
+ throw new Error("Unknown mode"); // " + modeString);
+ }
+ var authMgr;
+ try {
+ authMgr = cocoon.getComponent(Packages.org.apache.cocoon.webapps.authentication.AuthenticationManager.ROLE);
+ var state = authMgr.getState();
+
+ if (handler == null && state != null) {
+ handler = state.getHandlerName();
+ }
+ if (handler == null)
+ throw new Error("LogoutAction requires at least the handler parameter.");
+ authMgr.logout( handler, mode );
+ } finally {
+ cocoon.releaseComponent(authMgr);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation/ConfigurationGenerator.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation/ConfigurationGenerator.java
new file mode 100644
index 0000000..54678b7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation/ConfigurationGenerator.java
@@ -0,0 +1,840 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.generation;
+
+
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Response;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.generation.ServiceableGenerator;
+import org.apache.cocoon.webapps.authentication.AuthenticationManager;
+import org.apache.cocoon.webapps.authentication.context.AuthenticationContext;
+import org.apache.cocoon.webapps.authentication.user.RequestState;
+import org.apache.cocoon.webapps.authentication.user.UserHandler;
+import org.apache.cocoon.xml.IncludeXMLConsumer;
+import org.apache.cocoon.xml.XMLConsumer;
+import org.apache.cocoon.xml.XMLUtils;
+import org.apache.cocoon.xml.dom.DOMUtil;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceParameters;
+import org.apache.excalibur.xml.xpath.XPathProcessor;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * This is the authentication Configuration Generator.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @version CVS $Id: ConfigurationGenerator.java,v 1.7 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public final class ConfigurationGenerator
+extends ServiceableGenerator {
+
+ /** Request parameter */
+ public static final String REQ_PARAMETER_STATE = "authstate";
+ public static final String REQ_PARAMETER_ROLE = "authrole";
+ public static final String REQ_PARAMETER_ID = "authid";
+ public static final String REQ_PARAMETER_USER = "authuser";
+
+ private static final String SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE = "org.apache.cocoon.webapps.generation.ConfigurationGenerator.simple-role";
+
+ /** The XPath Processor */
+ protected XPathProcessor xpathProcessor;
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ if ( this.manager != null ) {
+ this.manager.release( this.xpathProcessor );
+ this.xpathProcessor = null;
+ }
+ super.dispose();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ super.service(manager);
+ this.xpathProcessor = (XPathProcessor)this.manager.lookup(XPathProcessor.ROLE);
+ }
+
+ /**
+ * Generate the configuration
+ */
+ public void generate()
+ throws IOException, SAXException, ProcessingException {
+
+ AuthenticationManager authManager = null;
+ RequestState state = null;
+ try {
+ authManager = (AuthenticationManager)this.manager.lookup(AuthenticationManager.ROLE);
+ state = authManager.getState();
+
+ } catch (Exception ignore) {
+ }
+
+ this.xmlConsumer.startDocument();
+ if ( state != null ) {
+ try {
+ UserHandler userhandler = state.getHandler();
+
+ Configuration conf = state.getModuleConfiguration("single-role-user-management");
+ if (conf == null) {
+ throw new ProcessingException("Module configuration 'single-role-user-management' for authentication user management generator not found.");
+ }
+ UserManagementHandler handler = new UserManagementHandler(conf,
+ state.getApplicationName());
+ this.showConfiguration(this.xmlConsumer, this.source, handler, userhandler.getContext());
+
+ } catch (ConfigurationException ex) {
+ throw new ProcessingException("ConfigurationException: " + ex, ex);
+ }
+ }
+
+ this.xmlConsumer.endDocument();
+ }
+
+
+ /**
+ * Show the configuration for the admin.
+ * If <code>src</code> is "admin" or null the admin configuration is shown.
+ * If <code>src</code> is "user" the configuration of the current user
+ * is shown.
+ */
+ public void showConfiguration(XMLConsumer consumer,
+ String src,
+ UserManagementHandler handler,
+ AuthenticationContext context)
+ throws ProcessingException, SAXException, IOException {
+ // synchronized
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN showConfiguration consumer=" + consumer + ", src="+src);
+ }
+
+ // get some important information
+ Request request = ObjectModelHelper.getRequest(this.objectModel);
+ Response response = ObjectModelHelper.getResponse(this.objectModel);
+ Session session = request.getSession();
+
+ boolean isAdmin = (src == null || src.equals("admin"));
+
+ // now start producing xml:
+ AttributesImpl attr = new AttributesImpl();
+ consumer.startElement("", "configuration", "configuration", attr);
+
+ // set the conf uri:
+ // This is a bug in the servlet 2.2 API!!!
+ // It does not contain the context: String uri = HttpUtils.getRequestURL(this.request).toString();
+ // So: ABSOLUTELY USELESS
+ String uri = response.encodeURL(request.getRequestURI());
+ consumer.startElement("", "uri", "uri", attr);
+ consumer.characters(uri.toCharArray(), 0, uri.length());
+ consumer.endElement("", "uri", "uri");
+
+ if (isAdmin == true) {
+ // build the menue
+ consumer.startElement("", "menue", "menue", attr);
+
+ if (handler.getNewRoleResource() != null) {
+ consumer.startElement("", "addrole", "addrole", attr);
+ consumer.endElement("", "addrole", "addrole");
+ }
+ if (handler.getDeleteRoleResource() != null) {
+ consumer.startElement("", "delrole", "delrole", attr);
+ consumer.endElement("", "delrole", "delrole");
+ }
+
+ consumer.endElement("", "menue", "menue");
+ }
+
+
+ synchronized (session) {
+
+ String state = request.getParameter(REQ_PARAMETER_STATE);
+ if (state == null) {
+ state = (isAdmin == true ? "main" : "seluser");
+ }
+
+ if (state.equals("addrole") == true) {
+ String role = request.getParameter(REQ_PARAMETER_ROLE);
+ if (role != null && role.trim().length() > 0) {
+ SourceParameters pars = new SourceParameters();
+ // first include all request parameters
+ Enumeration requestParameters = request.getParameterNames();
+ String current;
+ while (requestParameters.hasMoreElements() == true) {
+ current = (String)requestParameters.nextElement();
+ pars.setParameter(current, request.getParameter(current));
+ }
+ this.addRole(role, pars, handler);
+ } else {
+ role = null;
+ }
+ session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
+ }
+
+ if (state.equals("delrole") == true) {
+ try {
+ String role = request.getParameter(REQ_PARAMETER_ROLE);
+ if (role != null) {
+ // first delete user
+ Document userDF = this.getUsers(role, null, handler);
+ NodeList users = null;
+ if (userDF != null) users = DOMUtil.selectNodeList(userDF, "users/user", this.xpathProcessor);
+ if (users != null) {
+ for(int i = 0; i < users.getLength(); i++) {
+ this.deleteUser(role, DOMUtil.getValueOf(users.item(i), "ID", this.xpathProcessor), null, handler);
+ }
+ }
+ this.deleteRole(role, null, handler);
+ }
+ session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("TransformerException: " + local, local);
+ }
+ }
+
+
+ if (state.equals("chguser") == true) {
+ String role;
+ String id;
+ String user;
+
+ if (isAdmin == false) {
+ Map pars = context.getContextInfo();
+ id = (String) pars.get("ID");
+ role = (String) pars.get("role");
+ user = "old";
+ } else {
+ role = request.getParameter(REQ_PARAMETER_ROLE);
+ id = request.getParameter(REQ_PARAMETER_ID);
+ user = request.getParameter(REQ_PARAMETER_USER);
+ }
+
+ boolean addingNewUserFailed = false;
+ if (role != null && id != null && user != null) {
+ if (user.equals("new") == true) {
+ SourceParameters pars = new SourceParameters();
+ // first include all request parameters
+ Enumeration requestParameters = request.getParameterNames();
+ String current;
+ while (requestParameters.hasMoreElements() == true) {
+ current = (String)requestParameters.nextElement();
+ pars.setParameter(current, request.getParameter(current));
+ }
+ addingNewUserFailed = !this.addUser(role, id, pars, handler);
+ if (addingNewUserFailed == false) {
+ consumer.startElement("", "addeduser", "addeduser", attr);
+ consumer.characters(id.toCharArray(), 0, id.length());
+ consumer.endElement("", "addeduser", "addeduser");
+ }
+ } else {
+ String delete = request.getParameter("authdeluser");
+ if (delete != null && delete.equals("true") == true) {
+ this.deleteUser(role, id, null, handler);
+ } else {
+ SourceParameters pars = new SourceParameters();
+ // first include all request parameters
+ Enumeration requestParameters = request.getParameterNames();
+ String current;
+ while (requestParameters.hasMoreElements() == true) {
+ current = (String)requestParameters.nextElement();
+ pars.setParameter(current, request.getParameter(current));
+ }
+ this.changeUser(role, id, pars, handler);
+ }
+ }
+ session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
+ }
+ if (addingNewUserFailed == false) {
+ state = (isAdmin == true ? "adduser" : "seluser");
+ } else {
+ state = "erruser";
+ }
+ }
+
+ if (state.equals("seluser") == true) {
+ String role;
+ String id;
+
+ if (isAdmin == false) {
+ Map pars = context.getContextInfo();
+ id = (String) pars.get("ID");
+ role = (String) pars.get("role");
+ } else {
+ role = request.getParameter(REQ_PARAMETER_ROLE);
+ id = request.getParameter(REQ_PARAMETER_ID);
+ }
+ if (role != null && id != null) {
+ session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
+
+ // include users
+ Document userDF = this.getUsers(role, id, handler);
+ Element users = null;
+ try {
+ if (userDF != null) users = (Element)DOMUtil.getSingleNode(userDF, "users/user", this.xpathProcessor);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("TransformerException: " + local, local);
+ }
+ consumer.startElement("", "uservalues", "uservalues", attr);
+ if (users != null && users.hasChildNodes() == true) {
+ NodeList childs = users.getChildNodes();
+ for(int i = 0; i < childs.getLength(); i++) {
+ if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
+ IncludeXMLConsumer.includeNode(childs.item(i), consumer, consumer);
+ }
+ }
+ consumer.endElement("", "uservalues", "uservalues");
+ }
+ consumer.startElement("", "user", "user", attr);
+ consumer.characters("old".toCharArray(), 0, 3);
+ consumer.endElement("", "user", "user");
+ if (isAdmin == false) {
+ consumer.startElement("", "role", "role", attr);
+ consumer.characters(role.toCharArray(), 0, role.length());
+ consumer.endElement("", "role", "role");
+ }
+ }
+
+ if (state.equals("erruser") == true) {
+ String role;
+ String id;
+
+ if (isAdmin == false) {
+ Map pars = context.getContextInfo();
+ id = (String) pars.get("ID");
+ role = (String) pars.get("role");
+ } else {
+ role = request.getParameter(REQ_PARAMETER_ROLE);
+ id = request.getParameter(REQ_PARAMETER_ID);
+ }
+ if (role != null && id != null) {
+ session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
+
+ // include users
+ Document userDF = this.getUsers(role, id, handler);
+ Element users = null;
+ try {
+ if (userDF != null) users = (Element)DOMUtil.getSingleNode(userDF, "users/user", this.xpathProcessor);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("TransformerException: " + local, local);
+ }
+ consumer.startElement("", "uservalues", "uservalues", attr);
+ if (users != null && users.hasChildNodes() == true) {
+ NodeList childs = users.getChildNodes();
+ for(int i = 0; i < childs.getLength(); i++) {
+ if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
+ IncludeXMLConsumer.includeNode(childs.item(i), consumer, consumer);
+ }
+ }
+ consumer.endElement("", "uservalues", "uservalues");
+ }
+ consumer.startElement("", "user", "user", attr);
+ consumer.characters("error".toCharArray(), 0, 5);
+ consumer.endElement("", "user", "user");
+ if (isAdmin == false) {
+ consumer.startElement("", "role", "role", attr);
+ consumer.characters(role.toCharArray(), 0, role.length());
+ consumer.endElement("", "role", "role");
+ }
+ }
+
+ if (state.equals("adduser") == true) {
+ consumer.startElement("", "user", "user", attr);
+ consumer.characters("new".toCharArray(), 0, 3);
+ consumer.endElement("", "user", "user");
+ }
+
+ if (state.equals("selrole") == true) {
+ String role = request.getParameter(REQ_PARAMETER_ROLE);
+ session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
+ // include users
+ Document userDF = this.getUsers(role, null, handler);
+ Node users = null;
+ try {
+ if (userDF != null) users = DOMUtil.getSingleNode(userDF, "users", this.xpathProcessor);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("TransformerException: " + local, local);
+ }
+ IncludeXMLConsumer.includeNode(users, consumer, consumer);
+ }
+
+ if (isAdmin == true) {
+ // include roles
+ Document rolesDF = this.getRoles(handler);
+ Node roles = null;
+ try {
+ if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, "roles", this.xpathProcessor);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("TransformerException: " + local, local);
+ }
+ IncludeXMLConsumer.includeNode(roles, consumer, consumer);
+
+ // include selected role
+ String role = (String)session.getAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
+ if (role != null) {
+ consumer.startElement("", "role", "role", attr);
+ consumer.characters(role.toCharArray(), 0, role.length());
+ consumer.endElement("", "role", "role");
+ }
+ }
+ } // end synchronized(context)
+
+ consumer.endElement("", "configuration", "configuration");
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END showConfiguration");
+ }
+ }
+
+ /**
+ * Get all users in a document fragment with the following children:
+ * <users>
+ * <user>
+ * <ID>...</ID>
+ * <role>...</role> <!-- optional -->
+ * <data>
+ * ...
+ * </data>
+ * </user>
+ * ....
+ * </users>
+ * The document fragment might contain further nodes at the root!
+ * If <code>role</code> is <code>null</code> all users are fetched,
+ * otherwise only the users for this role.
+ * If also ID is not null only the single user is fetched.
+ */
+ public Document getUsers(String role, String ID, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN getUsers role="+role+", ID="+ID);
+ }
+ Document frag = null;
+
+ if (handler.getLoadUsersResource() != null) {
+ final String loadUsersResource = handler.getLoadUsersResource();
+ final SourceParameters loadParameters = handler.getLoadUsersResourceParameters();
+ SourceParameters parameters = (loadParameters == null) ? new SourceParameters()
+ : (SourceParameters)loadParameters;
+ if (handler.getApplicationName() != null) {
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ }
+ if (ID != null) {
+ parameters.setSingleParameterValue("type", "user");
+ parameters.setSingleParameterValue("ID", ID);
+ } else {
+ parameters.setSingleParameterValue("type", "users");
+ }
+ if (role != null) parameters.setSingleParameterValue("role", role);
+ frag = this.loadResource(loadUsersResource, parameters);
+
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END getUsers fragment="+(frag == null ? "null" : XMLUtils.serializeNodeToXML(frag)));
+ }
+ return frag;
+ }
+
+ /**
+ * Get all roles in a document fragment with the following children:
+ * <roles>
+ * <role>...</role>
+ * ....
+ * </roles>
+ * The document fragment might contain further nodes at the root!
+ */
+ public Document getRoles(UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN getRoles");
+ }
+ Document frag = null;
+
+ if (handler.getLoadRolesResource() != null) {
+ final String loadRolesResource = handler.getLoadRolesResource();
+ final SourceParameters loadParameters = handler.getLoadRolesResourceParameters();
+ SourceParameters parameters = (loadParameters == null) ? new SourceParameters()
+ : (SourceParameters)loadParameters.clone();
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "roles");
+ frag = this.loadResource(loadRolesResource, parameters);
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END getRoles fragment="+frag);
+ }
+ return frag;
+ }
+
+ /**
+ * Add a role
+ */
+ private void addRole(String name, SourceParameters parameters, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN addRole role="+name+", parameters="+parameters);
+ }
+ if (handler.getNewRoleResource() != null) {
+ final String newRoleResource = handler.getNewRoleResource();
+ final SourceParameters handlerPars = handler.getNewRoleResourceParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ parameters.add(handlerPars);
+
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "role");
+ parameters.setSingleParameterValue("role", name);
+
+ this.invokeResource(newRoleResource, parameters);
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END addRole");
+ }
+ }
+
+ /**
+ * Add a user.
+ * @return If a user with ID already exists <code>false</code> is returned.
+ */
+ public boolean addUser(String role, String ID, SourceParameters parameters, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN addUser role="+role+", ID="+ID+", parameters="+parameters);
+ }
+ boolean result = false;
+
+ if (handler.getNewUserResource() != null
+ && ID != null
+ && ID.trim().length() > 0) {
+ // first test if a user with this ID already exists
+ Document user = this.getUsers(null, null, handler);
+ Node node = null;
+ if (user != null) {
+ try {
+ node = DOMUtil.getSingleNode(user, "users/user/ID[text()='"+ID+"']", this.xpathProcessor);
+ } catch (javax.xml.transform.TransformerException local) {
+ throw new ProcessingException("Transformer exception: " + local, local);
+ }
+ }
+ if (user == null || node == null) {
+ final String newUserResource = handler.getNewUserResource();
+ final SourceParameters newUsersPars = handler.getNewUserResourceParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ parameters.add(newUsersPars);
+
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "user");
+ parameters.setSingleParameterValue("role", role);
+ parameters.setSingleParameterValue("ID", ID);
+
+ this.invokeResource(newUserResource, parameters);
+ result = true;
+ }
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END addUser success="+result);
+ }
+ return result;
+ }
+
+ /**
+ * Delete a role
+ */
+ private void deleteRole(String name, SourceParameters parameters, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN deleteRole role="+name+", parameters="+parameters);
+ }
+ if (handler.getDeleteRoleResource() != null) {
+ final String deleteRoleResource = handler.getDeleteRoleResource();
+ final SourceParameters handlerPars = handler.getDeleteRoleResourceParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ parameters.add(handlerPars);
+
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "role");
+ parameters.setSingleParameterValue("role", name);
+
+ this.invokeResource(deleteRoleResource, parameters);
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END deleteRole");
+ }
+ }
+
+ /**
+ * Delete a user
+ */
+ private void deleteUser(String role, String name, SourceParameters parameters, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN deleteUser role="+role+", ID="+name+", parameters="+parameters);
+ }
+ if (handler.getDeleteUserResource() != null) {
+ final String deleteUserResource = handler.getDeleteUserResource();
+ final SourceParameters handlerPars = handler.getDeleteUserResourceParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ parameters.add(handlerPars);
+
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "user");
+ parameters.setSingleParameterValue("role", role);
+ parameters.setSingleParameterValue("ID", name);
+
+ this.invokeResource(deleteUserResource, parameters);
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END deleteUser");
+ }
+ }
+
+ /**
+ * Change a user
+ */
+ private void changeUser(String role, String name, SourceParameters parameters, UserManagementHandler handler)
+ throws IOException, ProcessingException, SAXException {
+ // calling method is syned
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("BEGIN changeUser role="+role+", ID="+name+", parameters="+parameters);
+ }
+ if (handler.getChangeUserResource() != null) {
+ final String changeUserResource = handler.getChangeUserResource();
+ final SourceParameters handlerPars = handler.getChangeUserResourceParameters();
+ if (parameters == null) parameters = new SourceParameters();
+ parameters.add(handlerPars);
+
+ if (handler.getApplicationName() != null)
+ parameters.setSingleParameterValue("application", handler.getApplicationName());
+ parameters.setSingleParameterValue("type", "user");
+ parameters.setSingleParameterValue("role", role);
+ parameters.setSingleParameterValue("ID", name);
+
+ this.invokeResource(changeUserResource, parameters);
+ }
+
+ if (this.getLogger().isDebugEnabled() == true) {
+ this.getLogger().debug("END changeUser");
+ }
+ }
+
+ /**
+ * Invoke resource
+ */
+ private void invokeResource(String resource,
+ SourceParameters parameters)
+ throws IOException, ProcessingException, SAXException {
+ Source source = null;
+ try {
+ source = SourceUtil.getSource(resource,
+ null,
+ parameters,
+ this.resolver);
+ SourceUtil.parse(this.manager, source, new DefaultHandler());
+ } catch (SourceException se) {
+ throw SourceUtil.handle(se);
+ } finally {
+ this.resolver.release(source);
+ }
+ }
+
+ /**
+ * Load XML resource
+ */
+ private Document loadResource(String resource,
+ SourceParameters parameters)
+ throws IOException, ProcessingException, SAXException {
+ Source source = null;
+ try {
+ source = SourceUtil.getSource(resource,
+ null,
+ parameters,
+ this.resolver);
+ return SourceUtil.toDOM(source);
+ } catch (SourceException se) {
+ throw SourceUtil.handle(se);
+ } finally {
+ this.resolver.release(source);
+ }
+ }
+}
+
+final class UserManagementHandler {
+
+ /** The name of the current application */
+ private String applicationName;
+
+ /** The load-users resource */
+ private String loadUsersResource;
+ private SourceParameters loadUsersResourceParameters;
+
+ /** The load-roles resource */
+ private String loadRolesResource;
+ private SourceParameters loadRolesResourceParameters;
+
+ /** The new-user resource */
+ private String newUserResource;
+ private SourceParameters newUserResourceParameters;
+
+ /** The new-role resource */
+ private String newRoleResource;
+ private SourceParameters newRoleResourceParameters;
+
+ /** The delete-role resource */
+ private String deleteRoleResource;
+ private SourceParameters deleteRoleResourceParameters;
+
+ /** The delete-user resource */
+ private String deleteUserResource;
+ private SourceParameters deleteUserResourceParameters;
+
+ /** The change-user resource */
+ private String changeUserResource;
+ private SourceParameters changeUserResourceParameters;
+
+ /**
+ * Create a new handler object.
+ */
+ public UserManagementHandler(Configuration conf,
+ String appName)
+ throws ProcessingException, SAXException, IOException, ConfigurationException {
+ Configuration child;
+
+ this.applicationName = appName;
+
+ // get load-users resource (optional)
+ child = conf.getChild("load-users", false);
+ if (child != null) {
+ this.loadUsersResource = child.getAttribute("uri");
+ this.loadUsersResourceParameters = SourceParameters.create(child);
+ }
+
+ // get load-roles resource (optional)
+ child = conf.getChild("load-roles", false);
+ if (child != null) {
+ this.loadRolesResource = child.getAttribute("uri");
+ this.loadRolesResourceParameters = SourceParameters.create(child);
+ }
+
+ // get new user resource (optional)
+ child = conf.getChild("new-user", false);
+ if (child != null) {
+ this.newUserResource = child.getAttribute("uri");
+ this.newUserResourceParameters = SourceParameters.create(child);
+ }
+
+ // get new role resource (optional)
+ child = conf.getChild("new-role", false);
+ if (child != null) {
+ this.newRoleResource = child.getAttribute("uri");
+ this.newRoleResourceParameters = SourceParameters.create(child);
+ }
+
+ // get delete user resource (optional)
+ child = conf.getChild("delete-user", false);
+ if (child != null) {
+ this.deleteUserResource = child.getAttribute("uri");
+ this.deleteUserResourceParameters = SourceParameters.create(child);
+ }
+
+ // get delete role resource (optional)
+ child = conf.getChild("delete-role", false);
+ if (child != null) {
+ this.deleteRoleResource = child.getAttribute("uri");
+ this.deleteRoleResourceParameters = SourceParameters.create(child);
+ }
+
+ // get change user resource (optional)
+ child = conf.getChild("change-user", false);
+ if (child != null) {
+ this.changeUserResource = child.getAttribute("uri");
+ this.changeUserResourceParameters = SourceParameters.create(child);
+ }
+ }
+
+ /**
+ * Get the name of the current application
+ */
+ public String getApplicationName() { return this.applicationName; }
+
+ /**
+ * Get the load users resource
+ */
+ public String getLoadUsersResource() { return this.loadUsersResource; }
+ public SourceParameters getLoadUsersResourceParameters() { return this.loadUsersResourceParameters; }
+
+ /**
+ * Get the load roles resource
+ */
+ public String getLoadRolesResource() { return this.loadRolesResource; }
+ public SourceParameters getLoadRolesResourceParameters() { return this.loadRolesResourceParameters; }
+
+ /**
+ * Get the new user resource
+ */
+ public String getNewUserResource() { return this.newUserResource; }
+ public SourceParameters getNewUserResourceParameters() { return this.newUserResourceParameters; }
+
+ /**
+ * Get the new role resource
+ */
+ public String getNewRoleResource() { return this.newRoleResource; }
+ public SourceParameters getNewRoleResourceParameters() { return this.newRoleResourceParameters; }
+
+ /** Get the delete user resource */
+ public String getDeleteUserResource() { return this.deleteUserResource; }
+ public SourceParameters getDeleteUserResourceParameters() { return this.deleteUserResourceParameters; }
+
+ /** Get the delete role resource */
+ public String getDeleteRoleResource() { return this.deleteRoleResource; }
+ public SourceParameters getDeleteRoleResourceParameters() { return this.deleteRoleResourceParameters; }
+
+ /** Get the change user resource */
+ public String getChangeUserResource() { return this.changeUserResource; }
+ public SourceParameters getChangeUserResourceParameters() { return this.changeUserResourceParameters; }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/RequestState.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/RequestState.java
new file mode 100644
index 0000000..6a58769
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/RequestState.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.user;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.webapps.authentication.configuration.ApplicationConfiguration;
+import org.apache.excalibur.source.SourceResolver;
+
+
+/**
+ * The state of the user for the current request.
+ * This object holds the information which handler and application
+ * is currently used for this request.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: RequestState.java,v 1.6 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public final class RequestState
+implements java.io.Serializable {
+
+ /** The handlers */
+ private UserHandler handler;
+
+ /** The application */
+ private String application;
+
+ /**
+ * Create a new handler object.
+ */
+ public RequestState(UserHandler handler, String app) {
+ this.handler = handler;
+ this.application = app;
+ }
+
+ /**
+ * Initialize
+ */
+ public void initialize(SourceResolver resolver)
+ throws ProcessingException {
+ if ( this.application != null && !this.handler.getApplicationsLoaded()) {
+ ApplicationConfiguration conf = (ApplicationConfiguration) this.handler.getHandlerConfiguration().getApplications().get(this.application);
+ if ( !this.handler.isApplicationLoaded( conf ) ) {
+ this.handler.getContext().loadApplicationXML( conf, resolver );
+ }
+ }
+ }
+
+ public String getApplicationName() {
+ return this.application;
+ }
+
+ public UserHandler getHandler() {
+ return this.handler;
+ }
+
+ public String getHandlerName() {
+ return this.handler.getHandlerName();
+ }
+
+ public ApplicationConfiguration getApplicationConfiguration() {
+ if ( this.application != null ) {
+ return (ApplicationConfiguration)this.handler.getHandlerConfiguration().getApplications().get(this.application);
+ }
+ return null;
+ }
+
+ /**
+ * Get the configuration if available
+ */
+ public Configuration getModuleConfiguration(String name)
+ throws ProcessingException {
+ Configuration conf = null;
+
+ if (this.handler != null && this.application != null) {
+ conf = this.getApplicationConfiguration().getConfiguration(name);
+ }
+ if (this.handler != null && conf == null) {
+ conf = this.handler.getHandlerConfiguration().getConfiguration(name);
+ }
+
+ return conf;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserHandler.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserHandler.java
new file mode 100644
index 0000000..a9341af
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserHandler.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.user;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.webapps.authentication.configuration.ApplicationConfiguration;
+import org.apache.cocoon.webapps.authentication.configuration.HandlerConfiguration;
+import org.apache.cocoon.webapps.authentication.context.AuthenticationContext;
+
+/**
+ * The authentication Handler.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: UserHandler.java,v 1.10 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public final class UserHandler
+implements java.io.Serializable {
+
+ /** The corresponding handler */
+ private HandlerConfiguration handler;
+
+ /** Are all apps loaded? */
+ private boolean appsLoaded = false;
+
+ /** The context */
+ private AuthenticationContext context;
+
+ /** Loaded List */
+ private List loadedApps = new ArrayList(3);
+
+ /** Application contexts */
+ private List applicationContexts;
+
+ /** The unique user ID */
+ private String userID;
+
+ /**
+ * Create a new handler object.
+ */
+ public UserHandler(HandlerConfiguration handler, AuthenticationContext context) {
+ this.context = context;
+ this.handler = handler;
+ this.context.init(this);
+ }
+
+ /**
+ * Are all application contexts already loaded?
+ */
+ public boolean getApplicationsLoaded()
+ throws ProcessingException {
+ if ( this.handler.getApplications().isEmpty() ) {
+ return true;
+ } else {
+ return this.appsLoaded;
+ }
+ }
+
+ /**
+ * Add a handler context
+ */
+ public AuthenticationContext getContext() {
+ return this.context;
+ }
+
+ /**
+ * Get the handler name
+ */
+ public String getHandlerName() {
+ return this.handler.getName();
+ }
+
+ /**
+ * Get the handler configuration
+ */
+ public HandlerConfiguration getHandlerConfiguration() {
+ return this.handler;
+ }
+
+ /**
+ * Is the named application context already loaded?
+ */
+ public boolean isApplicationLoaded(ApplicationConfiguration appConf) {
+ return this.loadedApps.contains( appConf );
+ }
+
+ /**
+ * Notify that the application context has been loaded
+ */
+ public void setApplicationIsLoaded(ApplicationConfiguration appConf) {
+ this.loadedApps.add( appConf );
+ this.appsLoaded = (this.loadedApps.size() == this.handler.getApplications().size());
+ }
+
+ /**
+ * Get the unique user id
+ */
+ public String getUserId() {
+ if ( null == this.userID) {
+ try {
+ this.userID = (String) this.context.getContextInfo().get("ID");
+ } catch (ProcessingException ignore) {
+ this.userID = "";
+ }
+ }
+ return this.userID;
+ }
+
+ public void addApplicationContext(String name) {
+ if ( this.applicationContexts == null) {
+ this.applicationContexts = new ArrayList(3);
+ }
+ this.applicationContexts.add( name );
+ }
+
+ /**
+ * Return the list or null.
+ */
+ public List getApplicationContexts() {
+ return this.applicationContexts;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserState.java b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserState.java
new file mode 100644
index 0000000..5006086
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/user/UserState.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webapps.authentication.user;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The state of the user.
+ * This object holds all authentication handlers ({@link UserHandler}
+ * the user is currently logged-in to.
+ *
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @version CVS $Id: UserState.java,v 1.2 2004/03/05 13:01:41 bdelacretaz Exp $
+*/
+public final class UserState
+implements java.io.Serializable {
+
+ /** The handlers */
+ private Map handlers = new HashMap(7);
+
+ /**
+ * Create a new handler object.
+ */
+ public UserState() {
+ }
+
+ public void addHandler(UserHandler value) {
+ this.handlers.put(value.getHandlerName(), value);
+ }
+
+ public void removeHandler(String name) {
+ this.handlers.remove( name );
+ }
+
+ public UserHandler getHandler(String name) {
+ return (UserHandler) this.handlers.get( name );
+ }
+
+ public boolean hasHandler() {
+ return (this.handlers.size() > 0);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/login.xml b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/login.xml
new file mode 100644
index 0000000..7f19fc4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/login.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+
+<page>
+ <title>Login page</title>
+ <content>
+ <linkbar/>
+ <para>
+ This page serves as an example of the authentication framework.
+ </para>
+ <para>Please log in using your name (cocoon will work)</para>
+ <form target="do-login">
+ <input type="text" name="username"/>
+ <input type="submit">Login</input>
+ </form>
+ </content>
+</page>
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/protected.xml b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/protected.xml
new file mode 100644
index 0000000..28142ce
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/protected.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+
+<page>
+ <title>Login page</title>
+ <content>
+ <linkbar/>
+ <para>
+ This page serves as an example of the authentication framework.
+ </para>
+ <para>You're are logged in now, and can read this protected document containing very important
+ and secret information.</para>
+ <para xmlns:session="http://apache.org/cocoon/session/1.0">
+ <source>
+ <session:getxml context="authentication" path="/"/>
+ </source>
+ </para>
+ </content>
+</page>
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/userlist.xml b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/userlist.xml
new file mode 100644
index 0000000..7256fce
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/docs/userlist.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- $Id: userlist.xml,v 1.1 2003/03/09 00:02:23 pier Exp $
+
+ Description: All users
+
+-->
+<authentication>
+ <users>
+ <user>
+ <name>cocoon</name>
+ </user>
+ <user>
+ <name>guest</name>
+ </user>
+ </users>
+</authentication>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow.xmap b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow.xmap
new file mode 100644
index 0000000..a93aba9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow.xmap
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+
+<!--+
+ | Authentication (with flow) block samples sitemap.
+ |
+ | CVS $Id: flow.xmap,v 1.5 2003/11/18 06:37:27 antonio Exp $
+ +-->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+ <map:flow language="javascript">
+ <map:script src="flow/sample.js"/>
+ </map:flow>
+
+<!-- =========================== Pipelines ================================= -->
+ <map:pipelines>
+ <map:component-configurations>
+ <authentication-manager>
+ <handlers>
+ <handler name="flowdemohandler">
+ <redirect-to uri="cocoon:/login"/>
+ <authentication uri="cocoon:raw:/authenticate"/>
+ </handler>
+ </handlers>
+ </authentication-manager>
+ </map:component-configurations>
+
+ <map:pipeline>
+ <map:match pattern="">
+ <map:redirect-to uri="login" session="true"/>
+ </map:match>
+
+ <!-- ================= -->
+ <!-- Simple login page -->
+ <!-- ================= -->
+ <map:match pattern="login">
+ <map:call function="isLoggedIn">
+ <map:parameter name="handler" value="flowdemohandler"/>
+ <map:parameter name="protected-redirect" value="protected"/>
+ <map:parameter name="failure-internal" value="internal/login"/>
+ </map:call>
+ </map:match>
+
+ <!-- ========================================= -->
+ <!-- Form target which performs auth service -->
+ <!-- ========================================= -->
+ <map:match pattern="do-login">
+ <!-- try to login -->
+ <map:call function="login">
+ <map:parameter name="handler" value="flowdemohandler"/>
+ <map:parameter name="parameter_name" value="{request-param:username}"/>
+ <map:parameter name="protected-redirect" value="protected"/>
+ <map:parameter name="failure-redirect" value="login"/>
+ </map:call>
+ </map:match>
+
+ <!-- ================ -->
+ <!-- Protected area -->
+ <!-- ================ -->
+ <map:match pattern="protected">
+ <map:call function="protect">
+ <map:parameter name="handler" value="flowdemohandler"/>
+ <map:parameter name="protected-internal" value="internal/protected"/>
+ <map:parameter name="failure-redirect" value="login"/>
+ </map:call>
+ </map:match>
+
+ <!-- ========================================= -->
+ <!-- Logout link which invalidates the session -->
+ <!-- ========================================= -->
+ <map:match pattern="do-logout">
+ <map:call function="logout">
+ <map:parameter name="handler" value="flowdemohandler"/>
+ <map:parameter name="failure-redirect" value="login"/>
+ </map:call>
+ </map:match>
+ </map:pipeline>
+
+ <map:pipeline internal-only="true">
+ <!-- This is the authentication resource -->
+ <map:match pattern="authenticate">
+ <map:generate src="docs/userlist.xml"/>
+ <map:transform src="stylesheets/authenticate.xsl">
+ <map:parameter name="use-request-parameters" value="true"/>
+ </map:transform>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="internal/login">
+ <map:generate src="docs/login.xml"/>
+ <map:transform src="stylesheets/simple-page2html.xsl"/>
+ <map:transform type="encodeURL"/>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="internal/protected">
+ <map:generate src="docs/protected.xml"/>
+ <map:transform type="session"/>
+ <map:transform src="stylesheets/simple-page2html.xsl"/>
+ <map:transform type="encodeURL"/>
+ <map:serialize/>
+ </map:match>
+ </map:pipeline>
+
+ </map:pipelines>
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow/sample.js b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow/sample.js
new file mode 100644
index 0000000..2335840
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/flow/sample.js
@@ -0,0 +1,68 @@
+cocoon.load("resource://org/apache/cocoon/webapps/authentication/flow/javascript/auth.js");
+
+function isLoggedIn() {
+ var handler = cocoon.parameters["handler"];
+
+ if (auth_isAuthenticated(handler)) {
+ success();
+ } else {
+ failure();
+ }
+}
+
+function protect() {
+ var handler = cocoon.parameters["handler"];
+
+ if (auth_checkAuthentication(handler,"")) {
+ success();
+ } else {
+ // already redirected by auth_checkAuthentication
+ }
+}
+
+function login() {
+ var handler = cocoon.parameters["handler"];
+
+ if (auth_isAuthenticated(handler)) {
+ success();
+ } else if (auth_login(handler, null, cocoon.parameters)) {
+ success();
+ } else {
+ failure();
+ }
+}
+
+function logout() {
+ var handler = cocoon.parameters["handler"];
+
+ auth_logout(handler);
+ failure();
+}
+
+function success() {
+ var internal = cocoon.parameters["protected-internal"];
+ var redirect = cocoon.parameters["protected-redirect"];
+
+ if (internal != null) {
+ cocoon.sendPage(internal);
+ } else if (redirect != null) {
+ cocoon.redirectTo(redirect);
+ } else {
+ throw new Error("No protected redirection parameter given");
+ }
+}
+
+function failure() {
+
+ var internal = cocoon.parameters["failure-internal"];
+ var redirect = cocoon.parameters["failure-redirect"];
+
+ if (internal != null) {
+ cocoon.sendPage(internal);
+ } else if (redirect != null) {
+ cocoon.redirectTo(redirect);
+ } else {
+ // Why does this throw cause an error?
+ throw new Error("No failure redirection parameter given");
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/sitemap.xmap
new file mode 100644
index 0000000..8af2baa
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/sitemap.xmap
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+
+<!--+
+ | Authentication block samples sitemap.
+ |
+ | CVS $Id: sitemap.xmap,v 1.10 2004/01/27 08:26:25 cziegeler Exp $
+ +-->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Pipelines ================================= -->
+ <map:pipelines>
+ <map:component-configurations>
+ <authentication-manager>
+ <handlers>
+ <!-- A handler is responsible for protecting documents (pipelines).
+ The handler requires three configuration values. One of them is
+ a unique name that is used as a reference for the handler.
+ The other values are documented inline below.
+ -->
+ <handler name="demohandler">
+ <!-- The redirect-to configuration defines a pipeline that is called
+ whenever a not authenticated user tries to access a protected
+ document (pipeline) -->
+ <redirect-to uri="cocoon:/login"/>
+ <!-- The authentication configuration defines the authentication process.
+ In this example, an internal pipeline "authenticate" is called.
+ This pipeline gets all necessary information like user name and
+ password as parameters and tries to authenticate this user.
+ On successful authentication the pipeline delivers a specific
+ XML format.
+ -->
+ <authentication uri="cocoon:raw:/authenticate"/>
+ <!-- In addition you can specifiy a logout-uri parameter above. Then
+ the pipeline denoted by that parameter is called on logout.
+ -->
+ </handler>
+ </handlers>
+ </authentication-manager>
+ </map:component-configurations>
+
+ <map:pipeline>
+ <map:match pattern="flow/**">
+ <map:mount src="flow.xmap" uri-prefix="flow" check-reloads="true"/>
+ </map:match>
+
+ <map:match pattern="">
+ <map:redirect-to uri="login"/>
+ </map:match>
+
+ <!-- ================= -->
+ <!-- Simple login page -->
+ <!-- ================= -->
+ <map:match pattern="login">
+ <!-- if we are already logged in, redirect to the protected document -->
+ <map:act type="auth-loggedIn">
+ <map:parameter name="handler" value="demohandler"/>
+ <map:redirect-to uri="protected"/>
+ </map:act>
+ <map:generate src="docs/login.xml"/>
+ <map:transform src="stylesheets/simple-page2html.xsl"/>
+ <map:transform type="encodeURL"/>
+ <map:serialize/>
+ </map:match>
+
+ <!-- ========================================= -->
+ <!-- Form target which performs auth service -->
+ <!-- ========================================= -->
+ <map:match pattern="do-login">
+ <!-- try to login -->
+ <map:act type="auth-login">
+ <map:parameter name="handler" value="demohandler"/>
+ <map:parameter name="parameter_name" value="{request-param:username}"/>
+ <map:redirect-to uri="protected"/>
+ </map:act>
+ <!-- something was wrong, try it again -->
+ <map:redirect-to uri="login"/>
+ </map:match>
+
+ <!-- ================ -->
+ <!-- Protected area -->
+ <!-- ================ -->
+ <map:match pattern="protected">
+ <map:act type="auth-protect">
+ <map:parameter name="handler" value="demohandler"/>
+
+ <map:generate src="docs/protected.xml"/>
+ <map:transform type="session"/>
+ <map:transform src="stylesheets/simple-page2html.xsl"/>
+ <map:transform type="encodeURL"/>
+ <map:serialize/>
+ </map:act>
+ <!-- something was wrong, redirect to login page -->
+ <map:redirect-to uri="login"/>
+ </map:match>
+
+ <!-- ========================================= -->
+ <!-- Logout link which invalidates the session -->
+ <!-- ========================================= -->
+ <map:match pattern="do-logout">
+ <map:act type="auth-protect">
+ <map:parameter name="handler" value="demohandler"/>
+
+ <map:act type="auth-logout"/>
+ </map:act>
+ <map:redirect-to uri="login"/>
+ </map:match>
+ </map:pipeline>
+
+ <map:pipeline internal-only="true">
+ <!-- This is the authentication resource -->
+ <map:match pattern="authenticate">
+ <map:generate src="docs/userlist.xml"/>
+ <map:transform src="stylesheets/authenticate.xsl">
+ <map:parameter name="use-request-parameters" value="true"/>
+ </map:transform>
+ <map:serialize type="xml"/>
+ </map:match>
+ </map:pipeline>
+
+ </map:pipelines>
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/authenticate.xsl b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/authenticate.xsl
new file mode 100644
index 0000000..ff462a5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/authenticate.xsl
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!-- $Id: authenticate.xsl,v 1.2 2003/05/03 16:17:59 vgritsenko Exp $
+
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+
+<!-- Get the name from the request paramter -->
+<xsl:param name="name"/>
+
+<xsl:template match="authentication">
+ <authentication>
+ <xsl:apply-templates select="users"/>
+ </authentication>
+</xsl:template>
+
+
+<xsl:template match="users">
+ <xsl:apply-templates select="user"/>
+</xsl:template>
+
+
+<xsl:template match="user">
+ <!-- Compare the name of the user -->
+ <xsl:if test="normalize-space(name) = $name">
+ <!-- found, so create the ID -->
+ <ID><xsl:value-of select="name"/></ID>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/simple-page2html.xsl b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/simple-page2html.xsl
new file mode 100644
index 0000000..ccb4f80
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/authentication-fw/samples/stylesheets/simple-page2html.xsl
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:template match="page">
+ <html>
+ <head>
+ <title>
+ <xsl:value-of select="title"/>
+ </title>
+ <META content="0" http-equiv="expires"/>
+ <META content="nocache" http-equiv="pragma"/>
+ </head>
+ <body bgcolor="white" alink="red" link="blue" vlink="blue">
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="title">
+ <h2 style="color: navy; text-align: center">
+ <xsl:apply-templates/>
+ </h2>
+ </xsl:template>
+
+ <xsl:template match="para">
+ <p align="center">
+ <i><xsl:apply-templates/></i>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="form">
+ <form method="POST" action="{@target}">
+ <xsl:apply-templates/>
+ </form>
+ </xsl:template>
+
+ <xsl:template match="input">
+ <center>
+ <xsl:value-of select="@title"/>
+ <input type="{@type}" name="{@name}" value="{.}"/>
+ </center><br/>
+ </xsl:template>
+
+ <xsl:template match="linkbar">
+ <center>
+ [
+ <a href="login"> login </a>
+ |
+ <a href="protected"> protected </a>
+ |
+ <a href="do-logout"> logout </a>
+ ]
+ </center>
+ </xsl:template>
+
+ <xsl:template match="source">
+ <div style="background: #b9d3ee; border: thin; border-color: black; border-style: solid; padding-left: 0.8em;
+ padding-right: 0.8em; padding-top: 0px; padding-bottom: 0px; margin: 0.5ex 0px; clear: both;">
+ <textarea name="context" cols="80" rows="20" readonly="true">
+ <xsl:apply-templates/>
+ </textarea>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="@*|node()" priority="-1" name="copy">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
+<!-- vim: set et ts=2 sw=2: -->
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/build.xml b/ASF_20_SRC_AUTO/src/blocks/axis/build.xml
new file mode 100644
index 0000000..732987d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/build.xml
@@ -0,0 +1,11 @@
+<project default="main" basedir=".">
+
+ <target name="main">
+ <copy filtering="off" todir="${build.blocks}/axis/dest">
+ <fileset dir="${blocks}/axis/java">
+ <include name="**/*.wsdd" />
+ </fileset>
+ </copy>
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/conf/axis.xsamples b/ASF_20_SRC_AUTO/src/blocks/axis/conf/axis.xsamples
new file mode 100644
index 0000000..bf5faf7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/conf/axis.xsamples
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Axis']">
+
+ <group name="Axis">
+ <sample name="Axis" href="axis/">Examples using Apache Axis to give access to Cocoon via SOAP.</sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xconf b/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xconf
new file mode 100644
index 0000000..0471c69
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xconf
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.components.axis.SoapServer']">
+
+ <component role="org.apache.cocoon.components.axis.SoapServer"
+ class="org.apache.cocoon.components.axis.SoapServerImpl"
+ logger="core.source.soapserver">
+ <managed-services>
+ <descriptor src="resource://org/apache/cocoon/webservices/memory/DeploymentDescriptor.wsdd"/>
+ <descriptor src="resource://org/apache/cocoon/webservices/system/DeploymentDescriptor.wsdd"/>
+ <descriptor src="resource://org/apache/cocoon/webservices/cache/DeploymentDescriptor.wsdd"/>
+ <descriptor src="resource://org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd"/>
+ </managed-services>
+ </component>
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xroles b/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xroles
new file mode 100644
index 0000000..c1a8b70
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/conf/soapserver.xroles
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<!-- not yet used -->
+<xroles xpath="/role-list" unless="role[@name='org.apache.cocoon.components.axis.SoapServer']">
+
+ <role name="org.apache.cocoon.components.axis.SoapServer"
+ shorthand="soap-server"
+ default-class="org.apache.cocoon.components.axis.SoapServerImpl"/>
+</xroles>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServer.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServer.java
new file mode 100644
index 0000000..c1c7b24
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServer.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.axis;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
+
+import org.apache.avalon.framework.activity.Startable;
+import org.apache.avalon.framework.component.Component;
+
+import org.apache.axis.MessageContext;
+
+/**
+ * <code>SoapServer</code> interface.
+ *
+ * <p>
+ * This interface describes the operations provided by any Axis
+ * Soap Server implementations.
+ * </p>
+ *
+ * <p>
+ * Example use:
+ *
+ * <pre>
+ * SoapServer server = (SoapServer) manager.lookup(SoapServer.ROLE);
+ * MessageContext message = server.createMessageContext(req, res, con);
+ * server.invoke(message);
+ * manager.release(server);
+ * // message sent back to sender
+ * </pre>
+ * </p>
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: SoapServer.java,v 1.2 2004/03/05 13:01:41 bdelacretaz Exp $
+ */
+public interface SoapServer extends Component, Startable
+{
+ /**
+ * Component's ROLE definition
+ */
+ String ROLE = SoapServer.class.getName();
+
+ /**
+ * Constant used to key message context entries for an avalon logger
+ */
+ String LOGGER = "axis-message-context-logger";
+
+ /**
+ * Invoke a particular message context on this server. This method
+ * takes the given message, invokes it on the server and sets
+ * the response inside it for the caller to retrieve.
+ *
+ * @param message a <code>MessageContext</code> instance
+ * @exception Exception if an error occurs
+ */
+ void invoke(MessageContext message)
+ throws Exception;
+
+ /**
+ * Method to create a new message context, based on this Axis
+ * server instance, and the caller's request, response, and
+ * context objects.
+ *
+ * @param req a <code>HttpServletRequest</code> instance
+ * @param res a <code>HttpServletResponse</code> instance
+ * @param con a <code>ServletContext</code> instance
+ * @return a <code>MessageContext</code> instance
+ */
+ MessageContext createMessageContext(
+ HttpServletRequest req,
+ HttpServletResponse res,
+ ServletContext con
+ );
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServerImpl.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServerImpl.java
new file mode 100644
index 0000000..1e36658
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/SoapServerImpl.java
@@ -0,0 +1,617 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.axis;
+
+import java.io.File;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.activity.Startable;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.component.Composable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.axis.AxisEngine;
+import org.apache.axis.Constants;
+import org.apache.axis.EngineConfiguration;
+import org.apache.axis.MessageContext;
+import org.apache.axis.configuration.FileProvider;
+import org.apache.axis.deployment.wsdd.WSDDDeployment;
+import org.apache.axis.deployment.wsdd.WSDDDocument;
+import org.apache.axis.deployment.wsdd.WSDDService;
+import org.apache.axis.security.servlet.ServletSecurityProvider;
+import org.apache.axis.server.AxisServer;
+import org.apache.axis.transport.http.HTTPConstants;
+import org.apache.axis.transport.http.HTTPTransport;
+import org.apache.axis.transport.http.ServletEndpointContextImpl;
+import org.apache.axis.utils.XMLUtils;
+import org.apache.cocoon.components.axis.providers.AvalonProvider;
+import org.apache.cocoon.util.IOUtils;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.xml.dom.DOMParser;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+
+/**
+ * SOAP Server Implementation
+ *
+ * <p>
+ * This server accepts a SOAP Request, and generates the resultant
+ * response as output. Essentially, this reader allows you to serve SOAP
+ * requests from your Cocoon application.
+ * </p>
+ *
+ * <p>
+ * Code originates from the Apache
+ * <a href="http://xml.apache.org/axis">AXIS</a> project,
+ * <code>org.apache.axis.http.transport.AxisServlet</code>.
+ * </p>
+ *
+ * Ported to Cocoon by:
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ *
+ * Original <code>AxisServlet</code> authors:
+ *
+ * @author <a href="mailto:">Steve Loughran</a>
+ * @author <a href="mailto:dug@us.ibm.com">Doug Davis</a>
+ *
+ * @version CVS $Id: SoapServerImpl.java,v 1.3 2004/03/05 13:01:41 bdelacretaz Exp $
+ */
+public class SoapServerImpl extends AbstractLogEnabled
+ implements SoapServer, Composable, Configurable, Contextualizable, Initializable,
+ Startable, ThreadSafe
+{
+ /**
+ * Constant describing the default location of the server configuration file
+ */
+ public static final String DEFAULT_SERVER_CONFIG
+ = "resource://org/apache/axis/server/server-config.wsdd";
+
+ // transport name
+ private String m_transportName;
+
+ // security provider reference
+ private ServletSecurityProvider m_securityProvider;
+
+ // JWS output directory
+ private String m_jwsClassDir;
+
+ // per-instance cache of the axis server
+ private AxisServer m_axisServer;
+
+ // axis server configuration
+ private FileProvider m_engineConfig;
+
+ // location of attachments
+ private String m_attachmentDir;
+
+ // server configuration
+ private Source m_serverWSDD;
+
+ // array containing locations to descriptors this reader should manage
+ private WSDDDocument[] m_descriptors;
+
+ // context reference
+ private Context m_context;
+
+ // component manager reference
+ private ComponentManager m_manager;
+
+ /**
+ * Contextualize this Reader.
+ *
+ * @param context a <code>Context</code> instance
+ * @exception ContextException if an error occurs
+ */
+ public void contextualize(final Context context)
+ throws ContextException
+ {
+ m_context = context;
+ }
+
+ /**
+ * Compose this server
+ *
+ * @param manager a <code>ComponentManager</code> value
+ * @exception ComponentException if an error occurs
+ */
+ public void compose(ComponentManager manager)
+ throws ComponentException
+ {
+ m_manager = manager;
+ }
+
+ /**
+ * Configures this reader.
+ *
+ * <p>
+ * Sets the following optional configuration settings:
+ *
+ * <ul>
+ * <li>Server WSDD configuration
+ * <li>Attachment directory
+ * <li>JWS directory
+ * <li>Security provider
+ * <li>Transport name
+ * <li>Mananged services
+ * </ul>
+ * </p>
+ *
+ * <p>
+ * The following format is used:
+ * <pre>
+ * <soap-server>
+ * <server-wsdd src="..."/>
+ * <attachment-dir src="..."/>
+ * <jws-dir src="..."/>
+ * <security-provider enabled="..."/>
+ * <transport name="..."/>
+ * <managed-services>
+ * <descriptor src="..."/>
+ * <descriptor src="..."/>
+ * </managed-services>
+ * </soap-server>
+ * </pre>
+ * </p>
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception ConfigurationException if an error occurs
+ */
+ public void configure(final Configuration config)
+ throws ConfigurationException
+ {
+ try {
+ setServerConfig(config);
+ setAttachmentDir(config);
+ setJWSDir(config);
+ setSecurityProvider(config);
+ setTransportName(config);
+ setManagedServices(config);
+
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("SoapServerImpl.configure() complete");
+ }
+ } catch (final Exception e) {
+ throw new ConfigurationException("Error during configuration", e);
+ }
+ }
+
+ /**
+ * Helper method to set the axis server configuration.
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception Exception if an error occurs
+ */
+ public void setServerConfig(final Configuration config)
+ throws Exception
+ {
+ final Configuration wsdd = config.getChild("server-wsdd");
+ SourceResolver resolver = null;
+
+ try
+ {
+ resolver = (SourceResolver) m_manager.lookup(SourceResolver.ROLE);
+ m_serverWSDD =
+ resolver.resolveURI(
+ wsdd.getAttribute("src", DEFAULT_SERVER_CONFIG)
+ );
+ }
+ finally
+ {
+ if (resolver != null) m_manager.release(resolver);
+ }
+ }
+
+ /**
+ * Helper method to set the attachment dir. If no attachment directory has
+ * been specified, then its set up to operate out of the Cocoon workarea.
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception ConfigurationException if a configuration error occurs
+ * @exception ContextException if a context error occurs
+ */
+ private void setAttachmentDir(final Configuration config)
+ throws ConfigurationException, ContextException
+ {
+ final Configuration dir = config.getChild("attachment-dir");
+ m_attachmentDir = dir.getAttribute("src", null);
+
+ if (m_attachmentDir == null)
+ {
+ File workDir =
+ (File) m_context.get(org.apache.cocoon.Constants.CONTEXT_WORK_DIR);
+ File attachmentDir =
+ IOUtils.createFile(workDir, "attachments" + File.separator);
+ m_attachmentDir = IOUtils.getFullFilename(attachmentDir);
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("attachment directory = " + m_attachmentDir);
+ }
+ }
+
+ /**
+ * Helper method to set the JWS class dir. If no directory is specified then
+ * the directory <i>axis-jws</i> is used, under the Cocoon workarea.
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception ConfigurationException if a configuration error occurs
+ * @exception ContextException if a context error occurs
+ */
+ private void setJWSDir(final Configuration config)
+ throws ConfigurationException, ContextException
+ {
+ final Configuration dir = config.getChild("jws-dir");
+ m_jwsClassDir = dir.getAttribute("src", null);
+
+ if (m_jwsClassDir == null)
+ {
+ File workDir =
+ (File) m_context.get(org.apache.cocoon.Constants.CONTEXT_WORK_DIR);
+ File jwsClassDir =
+ IOUtils.createFile(workDir, "axis-jws" + File.separator);
+ m_jwsClassDir = IOUtils.getFullFilename(jwsClassDir);
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("jws class directory = " + m_jwsClassDir);
+ }
+ }
+
+ /**
+ * Helper method to set the security provider.
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception ConfigurationException if an error occurs
+ */
+ private void setSecurityProvider(final Configuration config)
+ throws ConfigurationException
+ {
+ final Configuration secProvider =
+ config.getChild("security-provider", false);
+
+ if (secProvider != null)
+ {
+ final String attr = secProvider.getAttribute("enabled");
+ final boolean providerIsEnabled =
+ "true".equalsIgnoreCase(attr) || "yes".equalsIgnoreCase(attr);
+
+ if (providerIsEnabled)
+ m_securityProvider = new ServletSecurityProvider();
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("security provider = " + m_securityProvider);
+ }
+ }
+
+ /**
+ * Helper method to set the transport name
+ *
+ * @param config a <code>Configuration</code> instance
+ * @exception ConfigurationException if an error occurs
+ */
+ private void setTransportName(final Configuration config)
+ throws ConfigurationException
+ {
+ final Configuration name = config.getChild("transport");
+ m_transportName =
+ name.getAttribute("name", HTTPTransport.DEFAULT_TRANSPORT_NAME);
+ }
+
+ /**
+ * Helper method to obtain a list of managed services from the given
+ * configuration (ie. locations of deployement descriptors to be
+ * deployed).
+ *
+ * @param config a <code>Configuration</code> value
+ * @exception Exception if an error occurs
+ */
+ private void setManagedServices(final Configuration config)
+ throws Exception
+ {
+ final Configuration m = config.getChild("managed-services", false);
+ final List descriptors = new ArrayList();
+
+ if (m != null)
+ {
+ SourceResolver resolver = null;
+ DOMParser parser = null;
+
+ try
+ {
+ final Configuration[] services = m.getChildren("descriptor");
+ resolver = (SourceResolver) m_manager.lookup(SourceResolver.ROLE);
+ parser = (DOMParser) m_manager.lookup(DOMParser.ROLE);
+
+ for (int i = 0; i < services.length; ++i)
+ {
+ final String location = services[i].getAttribute("src");
+ Source source = resolver.resolveURI(location);
+
+ final Document d =
+ parser.parseDocument(
+ new InputSource(
+ new InputStreamReader(source.getInputStream())
+ )
+ );
+
+ descriptors.add(new WSDDDocument(d));
+ }
+ }
+ finally
+ {
+ if (resolver != null) m_manager.release(resolver);
+ if (parser != null) m_manager.release((Component)parser);
+ }
+ }
+
+ // convert the list of descriptors to an array, for easier iteration
+ m_descriptors =
+ (WSDDDocument[]) descriptors.toArray(new WSDDDocument[]{});
+ }
+
+ /**
+ * Initialize this reader, creates AXIS server engine.
+ *
+ * @exception Exception if an error occurs
+ */
+ public void initialize()
+ throws Exception
+ {
+ m_axisServer = createEngine();
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("SoapServerImpl.initialize() complete");
+ }
+ }
+
+ /**
+ * Starts this reader. Deploys all managed services as specified at
+ * configuration time.
+ *
+ * @exception Exception if an error occurs
+ */
+ public void start()
+ throws Exception
+ {
+ // deploy all configured services
+ for (int i = 0; i < m_descriptors.length; ++i)
+ {
+ WSDDDeployment deployment = m_engineConfig.getDeployment();
+ m_descriptors[i].deploy(deployment);
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug(
+ "Deployed Descriptor:\n" +
+ XMLUtils.DocumentToString(m_descriptors[i].getDOMDocument())
+ );
+ }
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("SoapServerImpl.start() complete");
+ }
+ }
+
+ /**
+ * Stops this reader. Undeploys all managed services this reader
+ * currently manages (includes services dynamically added to the reader
+ * during runtime).
+ *
+ * @exception Exception if an error occurs
+ */
+ public void stop()
+ throws Exception
+ {
+ WSDDDeployment deployment = m_engineConfig.getDeployment();
+ WSDDService[] services = deployment.getServices();
+
+ // undeploy all deployed services
+ for (int i = 0; i < services.length; ++i)
+ {
+ deployment.undeployService(services[i].getQName());
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Undeployed: " + services[i].toString());
+ }
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("SoapServerImpl.stop() complete");
+ }
+ }
+
+ public void invoke(MessageContext message)
+ throws Exception
+ {
+ m_axisServer.invoke(message);
+ }
+
+ /**
+ * Place the Request message in the MessagContext object - notice
+ * that we just leave it as a 'ServletRequest' object and let the
+ * Message processing routine convert it - we don't do it since we
+ * don't know how it's going to be used - perhaps it might not
+ * even need to be parsed.
+ */
+ public MessageContext createMessageContext(
+ HttpServletRequest req,
+ HttpServletResponse res,
+ ServletContext con
+ )
+ {
+ MessageContext msgContext = new MessageContext(m_axisServer);
+ String webInfPath = con.getRealPath("/WEB-INF");
+ String homeDir = con.getRealPath("/");
+
+ // Set the Transport
+ msgContext.setTransportName(m_transportName);
+
+ // Add Avalon specifics to MessageContext
+ msgContext.setProperty(LOGGER, getLogger());
+ msgContext.setProperty(AvalonProvider.COMPONENT_MANAGER, m_manager);
+
+ // Save some HTTP specific info in the bag in case someone needs it
+ msgContext.setProperty(Constants.MC_JWS_CLASSDIR, m_jwsClassDir);
+ msgContext.setProperty(Constants.MC_HOME_DIR, homeDir);
+ msgContext.setProperty(Constants.MC_RELATIVE_PATH, req.getServletPath());
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLET, this );
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, req );
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE, res );
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETLOCATION, webInfPath);
+ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETPATHINFO,
+ req.getPathInfo() );
+ msgContext.setProperty(HTTPConstants.HEADER_AUTHORIZATION,
+ req.getHeader(HTTPConstants.HEADER_AUTHORIZATION));
+ msgContext.setProperty(Constants.MC_REMOTE_ADDR, req.getRemoteAddr());
+
+
+ // Set up a javax.xml.rpc.server.ServletEndpointContext
+ ServletEndpointContextImpl sec = new ServletEndpointContextImpl();
+ msgContext.setProperty(Constants.MC_SERVLET_ENDPOINT_CONTEXT, sec);
+
+ // Save the real path
+ String realpath = con.getRealPath(req.getServletPath());
+
+ if (realpath != null)
+ {
+ msgContext.setProperty(Constants.MC_REALPATH, realpath);
+ }
+
+ msgContext.setProperty(Constants.MC_CONFIGPATH, webInfPath);
+
+ if (m_securityProvider != null)
+ msgContext.setProperty("securityProvider", m_securityProvider);
+
+ // write out the contents of the message context for debugging purposes
+ if (getLogger().isDebugEnabled())
+ {
+ debugMessageContext(msgContext);
+ }
+
+ return msgContext;
+ }
+
+ /**
+ * Helper method to log the contents of a given message context
+ *
+ * @param context a <code>MessageContext</code> instance
+ */
+ private void debugMessageContext(final MessageContext context)
+ {
+ for (final Iterator i = context.getPropertyNames();
+ i.hasNext();
+ )
+ {
+ final String key = (String) i.next();
+ getLogger().debug(
+ "MessageContext: Key:" + key + ": Value: " + context.getProperty(key)
+ );
+ }
+ }
+
+
+ /**
+ * This is a uniform method of initializing AxisServer in a servlet
+ * context.
+ */
+ public AxisServer createEngine()
+ throws Exception
+ {
+ AxisServer engine = AxisServer.getServer(getEngineEnvironment());
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Axis engine created");
+ }
+
+ return engine;
+ }
+
+ protected Map getEngineEnvironment()
+ throws Exception
+ {
+ Map env = new HashMap();
+
+ // use FileProvider directly with a Avalon Source object instead of going
+ // through the EngineConfigurationFactoryServlet class
+ m_engineConfig = new FileProvider(m_serverWSDD.getInputStream());
+
+ env.put(EngineConfiguration.PROPERTY_NAME, m_engineConfig);
+ env.put(AxisEngine.ENV_ATTACHMENT_DIR, m_attachmentDir);
+ // REVISIT(MC): JNDI Factory support ?
+ //env.put(AxisEngine.ENV_SERVLET_CONTEXT, context);
+
+ return env;
+ }
+
+ /*
+ * Helper method to convert a <code>Message</code> structure
+ * into a <code>String</code>.
+ *
+ * @param msg a <code>Message</code> value
+ * @return a <code>String</code> value
+ */
+ /* FIXME (SM): this method appears to be unused, should we remove it?
+ private String messageToString(final Message msg)
+ {
+ try
+ {
+ OutputStream os = new ByteArrayOutputStream();
+ msg.writeTo(os);
+ return os.toString();
+ }
+ catch (Exception e)
+ {
+ if (getLogger().isWarnEnabled())
+ {
+ getLogger().warn(
+ "Warning, could not convert message (" + msg + ") into string", e
+ );
+ }
+
+ return null;
+ }
+ } */
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/providers/AvalonProvider.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/providers/AvalonProvider.java
new file mode 100644
index 0000000..82120a4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/components/axis/providers/AvalonProvider.java
@@ -0,0 +1,295 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// package org.apache.axis.providers.java;
+// currently part of Cocoon until it's officially in Axis CVS (BZ#12903)
+package org.apache.cocoon.components.axis.providers;
+
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.ComponentManager;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+import org.apache.axis.providers.java.RPCProvider;
+import org.apache.axis.handlers.soap.SOAPService;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+import javax.xml.rpc.server.ServiceLifecycle;
+
+/**
+ * Provider class which allows you to specify an Avalon <b>ROLE</b> for
+ * servicing Axis SOAP requests.
+ *
+ * <p>
+ * The specified <b>ROLE</b> corresponds to a particular implementation
+ * which is retrieved by a given Avalon <code>ComponentManager</code>.
+ * For more information about Avalon, see the Avalon.
+ * <a href="http://jakarta.apache.org/avalon">website</a>.
+ * </p>
+ *
+ * <p>
+ * To use this class, you need to add your Avalon <code>ComponentManager</code>
+ * instance to the <code>MessageContext</code> that is Axis uses to process
+ * messages with.
+ * </p>
+ *
+ * <p>
+ * To do this you could for example subclass the AxisServlet and override the
+ * <code>createMessageContext()</code> method adding the ComponentManager, eg:
+ *
+ * <pre>
+ * protected MessageContext createMessageContext(...)
+ * {
+ * MessageContext context = super.createMessageContext();
+ * context.setProperty(AvalonProvider.COMPONENT_MANAGER, m_manager);
+ * return context;
+ * }
+ * </pre>
+ *
+ * and appropriately add the AvalonProvider to the list of handlers in your
+ * server-config.wsdd (suggestions on how to improve this are welcomed)
+ * </p>
+ *
+ * <p>
+ * This provider will use that <code>ComponentManager</code> reference to
+ * retrieve objects.
+ * </p>
+ *
+ * <p>
+ * In your deployment descriptor use the following syntax:
+ *
+ * <pre>
+ * <service name="myservice" provider="java:Avalon">
+ * <parameter name="role" value="my.avalon.role.name"/>
+ * <parameter name="className" value="my.avalon.roles.interface.name"/>
+ * <parameter name="allowedMethods" value="allowed.methods"/>
+ * </service>
+ * </pre>
+ *
+ * </p>
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: AvalonProvider.java,v 1.5 2004/03/05 13:01:42 bdelacretaz Exp $
+ */
+public class AvalonProvider extends RPCProvider
+{
+ /**
+ * Constant used to retrieve the ComponentManager reference
+ * from the MessageContext object.
+ */
+ public static final String COMPONENT_MANAGER = "component-manager";
+
+ /**
+ * Constant which represents the name of the ROLE this
+ * provider should <i>lookup</i> to service a request with. This is
+ * specified in the <parameter name="" value=""/> part of the
+ * deployment xml.
+ */
+ public static final String ROLE = "role";
+
+ /**
+ * Returns the service object.
+ *
+ * @param msgContext the message context
+ * @param role the Avalon ROLE to lookup to find the service object implementation
+ * @return an object that implements the service
+ * @exception Exception if an error occurs
+ */
+ protected Object makeNewServiceObject(
+ MessageContext msgContext, String role
+ )
+ throws Exception
+ {
+ ComponentManager manager =
+ (ComponentManager) msgContext.getProperty(COMPONENT_MANAGER);
+
+ if (manager == null)
+ throw new AxisFault("Could not access Avalon ComponentManager");
+
+ return decorate(manager.lookup(role), manager);
+ }
+
+ /**
+ * Helper method for decorating a <code>Component</code> with a Handler
+ * proxy (see below).
+ *
+ * @param object a <code>Component</code> instance
+ * @param manager a <code>ComponentManager</code> instance
+ * @return the <code>Proxy</code> wrapped <code>Component</code> instance
+ * @exception Exception if an error occurs
+ */
+ private Object decorate(final Component object, final ComponentManager manager)
+ throws Exception
+ {
+ // obtain a list of all interfaces this object implements
+ Class[] interfaces = object.getClass().getInterfaces();
+
+ // add ServiceLifecycle to it
+ Class[] adjusted = new Class[ interfaces.length + 1 ];
+ System.arraycopy(interfaces, 0, adjusted, 0, interfaces.length);
+ adjusted[interfaces.length] = ServiceLifecycle.class;
+
+ // create a proxy implementing those interfaces
+ Object proxy =
+ Proxy.newProxyInstance(
+ this.getClass().getClassLoader(),
+ adjusted,
+ new Handler(object, manager)
+ );
+
+ // return the proxy
+ return proxy;
+ }
+
+ /**
+ * Return the option in the configuration that contains the service class
+ * name. In the Avalon case, it is the ROLE name to lookup.
+ */
+ protected String getServiceClassNameOptionName()
+ {
+ return ROLE;
+ }
+
+ /**
+ * Get the service class description
+ *
+ * @param role the Avalon ROLE name
+ * @param service a <code>SOAPService</code> instance
+ * @param msgContext the message context
+ * @return service class description
+ * @exception AxisFault if an error occurs
+ */
+ protected Class getServiceClass(
+ String role, SOAPService service, MessageContext msgContext
+ )
+ throws AxisFault
+ {
+ // Assuming ExcaliburComponentManager semantics the ROLE name is
+ // actually the class name, potentially with a variant following
+ // the class name with a '/' separator
+
+ try
+ {
+ int i;
+
+ if ((i = role.indexOf('/')) != -1)
+ {
+ return Class.forName(role.substring(0, i));
+ }
+ else
+ {
+ return Class.forName(role);
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new AxisFault("Couldn't create class object for role " + role, e);
+ }
+ }
+
+ /**
+ * <code>InvocationHandler</code> class for managing Avalon
+ * <code>Components</code>.
+ *
+ * <p>
+ * Components retrieved from an Avalon ComponentManager must be
+ * returned to the manager when they are no longer required.
+ * </p>
+ *
+ * <p>
+ * The returning of Components to their ComponentManager is handled
+ * by a Proxy class which uses the following InvocationHandler.
+ * </p>
+ *
+ * <p>
+ * Each Component returned by this Provider is wrapped inside a
+ * Proxy class which implements all of the Component's interfaces
+ * including javax.xml.rpc.server.ServiceLifecycle.
+ * </p>
+ *
+ * <p>
+ * When Axis is finished with the object returned by this provider,
+ * it invokes ServiceLifecycle.destroy(). This is intercepted by the
+ * InvocationHandler and the Component is returned at this time back
+ * to the ComponentManager it was retrieved from.
+ * </p>
+ *
+ * <p>
+ * <b>Note</b>, when Axis invokes ServiceLifecycle.destroy() is dependant
+ * on the scope of the service (ie. Request, Session & Application).
+ * </p>
+ */
+ final class Handler implements InvocationHandler
+ {
+ // Constants describing the ServiceLifecycle.destroy method
+ private final String SL_DESTROY = "destroy";
+ private final Class SL_CLASS = ServiceLifecycle.class;
+
+ // Component & ComponentManager references
+ private final Component m_object;
+ private final ComponentManager m_manager;
+
+ /**
+ * Simple constructor, sets all internal references
+ *
+ * @param object a <code>Component</code> instance
+ * @param manager a <code>ComponentManager</code> instance
+ */
+ public Handler(final Component object, final ComponentManager manager)
+ {
+ m_object = object;
+ m_manager = manager;
+ }
+
+ /**
+ * <code>invoke</code> method, handles all method invocations for this
+ * particular proxy.
+ *
+ * <p>
+ * Usually the invocation is passed through to the
+ * actual component the proxy wraps, unless the method belongs to
+ * the <code>ServiceLifecycle</code> interface where it is handled
+ * locally.
+ * </p>
+ *
+ * @param proxy the <code>Proxy</code> instance the method was invoked on
+ * @param method the invoked method <code>Method</code> object
+ * @param args an <code>Object[]</code> array of arguments
+ * @return an <code>Object</code> value or null if none
+ * @exception Throwable if an error occurs
+ */
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ // if ServiceLifecycle.destroy() called, return to CM
+ if (method.getDeclaringClass().equals(SL_CLASS))
+ {
+ if (method.getName().equals(SL_DESTROY))
+ {
+ m_manager.release(m_object);
+ }
+
+ return null;
+ }
+ else // otherwise pass call to the real object
+ {
+ return method.invoke(m_object, args);
+ }
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/reading/AxisRPCReader.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/reading/AxisRPCReader.java
new file mode 100644
index 0000000..cc514c7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/reading/AxisRPCReader.java
@@ -0,0 +1,516 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.reading;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpUtils;
+import javax.xml.soap.SOAPException;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.Constants;
+import org.apache.axis.Message;
+import org.apache.axis.MessageContext;
+import org.apache.axis.soap.SOAPConstants;
+import org.apache.axis.transport.http.AxisHttpSession;
+import org.apache.axis.transport.http.HTTPConstants;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.axis.SoapServer;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.environment.http.HttpEnvironment;
+
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * SOAP Reader
+ *
+ * <p>
+ * This reader accepts a SOAP Request, and generates the resultant
+ * response as output. Essentially, this reader allows you to serve SOAP
+ * requests from your Cocoon application.
+ * </p>
+ *
+ * <p>
+ * Code originates from the Apache
+ * <a href="http://xml.apache.org/axis">AXIS</a> project,
+ * <code>org.apache.axis.http.transport.AxisServlet</code>.
+ * </p>
+ *
+ * Ported to Cocoon by:
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ *
+ * Original <code>AxisServlet</code> authors:
+ *
+ * @author <a href="mailto:">Steve Loughran</a>
+ * @author <a href="mailto:dug@us.ibm.com">Doug Davis</a>
+ *
+ * @version CVS $Id: AxisRPCReader.java,v 1.6 2004/03/05 13:01:42 bdelacretaz Exp $
+ */
+public class AxisRPCReader extends ServiceableReader
+ implements Configurable, Disposable
+{
+
+ // soap server reference
+ private SoapServer m_server;
+
+ /** Are we in development stage ? */
+ private boolean m_isDevelompent = false;
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration config) throws ConfigurationException
+ {
+ m_isDevelompent = config.getChild("development-stage").getValueAsBoolean(m_isDevelompent );
+ }
+
+ public void service(final ServiceManager manager) throws ServiceException {
+ super.service(manager);
+ // set soap server reference
+ m_server = (SoapServer) manager.lookup(SoapServer.ROLE);
+ }
+
+ /**
+ * Axis RPC Router <code>setup</code> method.
+ *
+ * <p>
+ * This method sets the reader up for use. Essentially it checks that
+ * its been invoked in a HTTP-POST environment, reads some optional
+ * configuration variables, and obtains several component references to
+ * be used later.
+ * </p>
+ *
+ * @param resolver <code>SourceResolver</code> instance
+ * @param objectModel request/response/context data
+ * @param src source <code>String</code> instance
+ * @param parameters sitemap invocation time customization parameters
+ * @exception ProcessingException if an error occurs
+ * @exception IOException if an error occurs
+ * @exception SAXException if an error occurs
+ */
+ public void setup(
+ final SourceResolver resolver,
+ final Map objectModel,
+ final String src,
+ final Parameters parameters
+ )
+ throws ProcessingException, IOException, SAXException
+ {
+ super.setup(resolver, objectModel, src, parameters);
+
+ checkHTTPPost(objectModel);
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("AxisRPCReader.setup() complete");
+ }
+ }
+
+ /**
+ * Helper method to ensure that given a HTTP-POST.
+ *
+ * @param objectModel Request/Response/Context map.
+ * @exception ProcessingException if a non HTTP-POST request has been made.
+ */
+ private void checkHTTPPost(final Map objectModel)
+ throws ProcessingException
+ {
+ String method = ObjectModelHelper.getRequest(objectModel).getMethod();
+
+ if (!"POST".equalsIgnoreCase(method))
+ throw new ProcessingException(
+ "Reader only supports HTTP-POST (supplied was " + method + ")"
+ );
+ }
+
+ /**
+ * Axis RPC Router <code>generate</code> method.
+ *
+ * <p>
+ * This method reads the SOAP request in from the input stream, invokes
+ * the requested method and sends the result back to the requestor
+ * </p>
+ *
+ * @exception IOException if an IO error occurs
+ * @exception SAXException if a SAX error occurs
+ * @exception ProcessingException if a processing error occurs
+ */
+ public void generate()
+ throws IOException, SAXException, ProcessingException
+ {
+ HttpServletRequest req =
+ (HttpServletRequest) objectModel.get(HttpEnvironment.HTTP_REQUEST_OBJECT);
+ HttpServletResponse res =
+ (HttpServletResponse) objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT);
+ ServletContext con =
+ (ServletContext) objectModel.get(HttpEnvironment.HTTP_SERVLET_CONTEXT);
+
+ String soapAction = null;
+ MessageContext msgContext = null;
+ Message responseMsg = null;
+
+ try
+ {
+ res.setBufferSize(1024 * 8); // provide performance boost.
+
+ // Get message context w/ various properties set
+ msgContext = m_server.createMessageContext(req, res, con);
+
+ // Get request message
+ Message requestMsg =
+ new Message(
+ req.getInputStream(), false,
+ req.getHeader(HTTPConstants.HEADER_CONTENT_TYPE),
+ req.getHeader(HTTPConstants.HEADER_CONTENT_LOCATION)
+ );
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Request message:\n" + messageToString(requestMsg));
+ }
+
+ // Set the request(incoming) message field in the context
+ msgContext.setRequestMessage(requestMsg);
+ String url = HttpUtils.getRequestURL(req).toString();
+ msgContext.setProperty(MessageContext.TRANS_URL, url);
+
+ try
+ {
+ //
+ // Save the SOAPAction header in the MessageContext bag.
+ // This will be used to tell the Axis Engine which service
+ // is being invoked. This will save us the trouble of
+ // having to parse the Request message - although we will
+ // need to double-check later on that the SOAPAction header
+ // does in fact match the URI in the body.
+ // (is this last stmt true??? (I don't think so - Glen))
+ //
+ soapAction = getSoapAction(req);
+
+ if (soapAction != null)
+ {
+ msgContext.setUseSOAPAction(true);
+ msgContext.setSOAPActionURI(soapAction);
+ }
+
+ // Create a Session wrapper for the HTTP session.
+ msgContext.setSession(new AxisHttpSession(req));
+
+ // Invoke the Axis engine...
+ if(getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Invoking Axis Engine");
+ }
+
+ m_server.invoke(msgContext);
+
+ if(getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Return from Axis Engine");
+ }
+
+ responseMsg = msgContext.getResponseMessage();
+ if (responseMsg == null) {
+ //tell everyone that something is wrong
+ throw new Exception("no response message");
+ }
+ }
+ catch (AxisFault fault)
+ {
+ if (getLogger().isErrorEnabled())
+ {
+ getLogger().error("Axis Fault", fault);
+ }
+
+ // log and sanitize
+ processAxisFault(fault);
+ configureResponseFromAxisFault(res, fault);
+ responseMsg = msgContext.getResponseMessage();
+ if (responseMsg == null) {
+ responseMsg = new Message(fault);
+ }
+ }
+ catch (Exception e)
+ {
+ //other exceptions are internal trouble
+ responseMsg = msgContext.getResponseMessage();
+ res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ if (getLogger().isErrorEnabled())
+ {
+ getLogger().error("Error during SOAP call", e);
+ }
+ if (responseMsg == null) {
+ AxisFault fault = AxisFault.makeFault(e);
+ processAxisFault(fault);
+ responseMsg = new Message(fault);
+ }
+ }
+ }
+ catch (AxisFault fault)
+ {
+ if (getLogger().isErrorEnabled())
+ {
+ getLogger().error("Axis fault occured while perforing request", fault);
+ }
+ processAxisFault(fault);
+ configureResponseFromAxisFault(res, fault);
+ responseMsg = msgContext.getResponseMessage();
+ if( responseMsg == null) {
+ responseMsg = new Message(fault);
+ }
+ }
+ catch (Exception e)
+ {
+ throw new ProcessingException("Exception thrown while performing request", e);
+ }
+
+ // Send response back
+ if (responseMsg != null)
+ {
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Sending response:\n" + messageToString(responseMsg));
+ }
+
+ sendResponse(getProtocolVersion(req), msgContext.getSOAPConstants(), res, responseMsg);
+ }
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("AxisRPCReader.generate() complete");
+ }
+ }
+
+ /**
+ * routine called whenever an axis fault is caught; where they
+ * are logged and any other business. The method may modify the fault
+ * in the process
+ * @param fault what went wrong.
+ */
+ protected void processAxisFault(AxisFault fault) {
+ //log the fault
+ Element runtimeException = fault.lookupFaultDetail(
+ Constants.QNAME_FAULTDETAIL_RUNTIMEEXCEPTION);
+ if (runtimeException != null) {
+ getLogger().info("AxisFault:", fault);
+ //strip runtime details
+ fault.removeFaultDetail(Constants.QNAME_FAULTDETAIL_RUNTIMEEXCEPTION);
+ } else if (getLogger().isDebugEnabled()) {
+ getLogger().debug("AxisFault:", fault);
+ }
+ //dev systems only give fault dumps
+ if (m_isDevelompent) {
+ //strip out the stack trace
+ fault.removeFaultDetail(Constants.QNAME_FAULTDETAIL_STACKTRACE);
+ }
+ }
+
+ /**
+ * Configure the servlet response status code and maybe other headers
+ * from the fault info.
+ * @param response response to configure
+ * @param fault what went wrong
+ */
+ private void configureResponseFromAxisFault(HttpServletResponse response,
+ AxisFault fault) {
+ // then get the status code
+ // It's been suggested that a lack of SOAPAction
+ // should produce some other error code (in the 400s)...
+ int status = getHttpServletResponseStatus(fault);
+ if (status == HttpServletResponse.SC_UNAUTHORIZED) {
+ // unauth access results in authentication request
+ // TODO: less generic realm choice?
+ response.setHeader("WWW-Authenticate","Basic realm=\"AXIS\"");
+ }
+ response.setStatus(status);
+ }
+
+ /**
+ * Extract information from AxisFault and map it to a HTTP Status code.
+ *
+ * @param af Axis Fault
+ * @return HTTP Status code.
+ */
+ protected int getHttpServletResponseStatus(AxisFault af)
+ {
+ // This will raise a 401 for both "Unauthenticated" & "Unauthorized"...
+ return af.getFaultCode().getLocalPart().startsWith("Server.Unauth")
+ ? HttpServletResponse.SC_UNAUTHORIZED
+ : HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
+ }
+
+ /**
+ * write a message to the response, set appropriate headers for content
+ * type..etc.
+ * @param clientVersion client protocol, one of the HTTPConstants strings
+ * @param res response
+ * @param responseMsg message to write
+ * @throws AxisFault
+ * @throws IOException if the response stream can not be written to
+ */
+ private void sendResponse(
+ final String clientVersion,
+ final SOAPConstants constants,
+ final HttpServletResponse res,
+ final Message responseMsg
+ )
+ throws AxisFault, IOException
+ {
+ if (responseMsg == null)
+ {
+ res.setStatus(HttpServletResponse.SC_NO_CONTENT);
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("No axis response, not sending one");
+ }
+ }
+ else
+ {
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("Returned Content-Type:" + responseMsg.getContentType(constants));
+ getLogger().debug("Returned Content-Length:" + responseMsg.getContentLength());
+ }
+
+ try
+ {
+ res.setContentType(responseMsg.getContentType(constants));
+ responseMsg.writeTo(res.getOutputStream());
+ }
+ catch (SOAPException e)
+ {
+ getLogger().error("Exception sending response", e);
+ }
+ }
+
+ if (!res.isCommitted())
+ {
+ res.flushBuffer(); // Force it right now.
+ }
+ }
+
+ /**
+ * Extract the SOAPAction header.
+ * if SOAPAction is null then we'll we be forced to scan the body for it.
+ * if SOAPAction is "" then use the URL
+ * @param req incoming request
+ * @return the action
+ * @throws AxisFault
+ */
+ private String getSoapAction(HttpServletRequest req)
+ throws AxisFault
+ {
+ String soapAction = req.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
+
+ if (getLogger().isDebugEnabled())
+ {
+ getLogger().debug("HEADER_SOAP_ACTION:" + soapAction);
+ }
+
+ //
+ // Technically, if we don't find this header, we should probably fault.
+ // It's required in the SOAP HTTP binding.
+ //
+ if (soapAction == null)
+ {
+ throw new AxisFault(
+ "Client.NoSOAPAction",
+ "No SOAPAction header",
+ null, null
+ );
+ }
+
+ if (soapAction.length() == 0)
+ soapAction = req.getContextPath(); // Is this right?
+
+ return soapAction;
+ }
+
+ /**
+ * Return the HTTP protocol level 1.1 or 1.0
+ * by derived class.
+ */
+ private String getProtocolVersion(HttpServletRequest req){
+ String ret = HTTPConstants.HEADER_PROTOCOL_V10;
+ String prot = req.getProtocol();
+ if (prot!= null) {
+ int sindex= prot.indexOf('/');
+ if (-1 != sindex) {
+ String ver= prot.substring(sindex+1);
+ if (HTTPConstants.HEADER_PROTOCOL_V11.equals(ver.trim())) {
+ ret = HTTPConstants.HEADER_PROTOCOL_V11;
+ }
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * Helper method to convert a <code>Message</code> structure
+ * into a <code>String</code>.
+ *
+ * @param msg a <code>Message</code> value
+ * @return a <code>String</code> value
+ */
+ private String messageToString(final Message msg)
+ {
+ try
+ {
+ OutputStream os = new ByteArrayOutputStream();
+ msg.writeTo(os);
+ return os.toString();
+ }
+ catch (Exception e)
+ {
+ if (getLogger().isWarnEnabled())
+ {
+ getLogger().warn(
+ "Warning, could not convert message (" + msg + ") into string", e
+ );
+ }
+
+ return null;
+ }
+ }
+
+ /**
+ * Dispose this reader. Release all held resources.
+ */
+ public void dispose()
+ {
+ manager.release(m_server);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractComposableService.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractComposableService.java
new file mode 100644
index 0000000..51aa108
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractComposableService.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices;
+
+import javax.xml.rpc.ServiceException;
+
+import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.component.Composable;
+import org.apache.cocoon.components.axis.providers.AvalonProvider;
+
+/**
+ * Base class for providing Composable SOAP services.
+ *
+ * <p>
+ * Note, this class is intended to be used in SOAP Services that require
+ * references to Component's provided by the Cocoon Component Manager.
+ * </p>
+ *
+ * <p>
+ * If you require full Avalon support in your SOAP Service, consider using
+ * the AvalonProvider support built into Axis itself.
+ * </p>
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: AbstractComposableService.java,v 1.2 2004/03/05 13:01:43 bdelacretaz Exp $
+ */
+public abstract class AbstractComposableService
+ extends AbstractLogEnabledService
+ implements Composable {
+
+ // component manager reference
+ protected ComponentManager m_manager;
+
+ /**
+ * ServiceLifecycle <code>init</code> method. Updates an internal
+ * reference to the given context object, and enables logging for
+ * this service.
+ *
+ * @param context a javax.xml.rpc.ServiceLifecycle context
+ * <code>Object</code> instance
+ * @exception ServiceException if an error occurs
+ */
+ public void init(final Object context) throws ServiceException {
+ super.init(context);
+
+ try {
+ setComponentManager();
+
+ } catch (ComponentException e) {
+ throw new ServiceException("ComponentException generated", e);
+ }
+ }
+
+ /**
+ * Compose this service.
+ *
+ * @param manager a <code>ComponentManager</code> instance
+ * @exception ComponentException if an error occurs
+ */
+ public void compose(final ComponentManager manager) throws ComponentException {
+ m_manager = manager;
+ }
+
+ /**
+ * Helper method to extract the ComponentManager reference
+ * from the context.
+ * @exception ComponentException if an error occurs
+ */
+ private void setComponentManager() throws ComponentException {
+ compose(
+ (ComponentManager) m_context.getProperty(
+ AvalonProvider.COMPONENT_MANAGER
+ )
+ );
+ }
+
+ /**
+ * Called by the JAX-RPC runtime to signal the end of this service
+ */
+ public void destroy() {
+ super.destroy();
+
+ m_manager = null;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractLogEnabledService.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractLogEnabledService.java
new file mode 100644
index 0000000..2c45115
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/AbstractLogEnabledService.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices;
+
+import javax.xml.rpc.handler.MessageContext;
+import javax.xml.rpc.server.ServiceLifecycle;
+import javax.xml.rpc.server.ServletEndpointContext;
+import javax.xml.rpc.ServiceException;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.cocoon.components.axis.SoapServer; // or use Constants ?
+
+/**
+ * Base class for providing LogEnabled SOAP services.
+ *
+ * <p>
+ * Note, this class is intended to be used for SOAP Services that require
+ * accessing to a logging object for reporting purposes only.
+ * </p>
+ *
+ * <p>
+ * If you require full Avalon support for your SOAP Service, then consider
+ * using the AvalonProvider support built into Axis itself.
+ * </p>
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: AbstractLogEnabledService.java,v 1.2 2004/03/05 13:01:43 bdelacretaz Exp $
+ */
+public abstract class AbstractLogEnabledService
+ extends AbstractLogEnabled
+ implements ServiceLifecycle {
+
+ // servlet endpoint context reference
+ protected ServletEndpointContext m_endPointContext;
+
+ // message context reference
+ protected MessageContext m_context;
+
+ /**
+ * ServiceLifecycle <code>init</code> method. Updates an internal
+ * reference to the given context object, and enables logging for
+ * this service.
+ *
+ * @param context a javax.xml.rpc.ServiceLifecycle context
+ * <code>Object</code> instance
+ * @exception ServiceException if an error occurs
+ */
+ public void init(final Object context) throws ServiceException {
+ setContext(context);
+ setLogger();
+ }
+
+ /**
+ * Helper method to set the internal context reference for future
+ * use.
+ *
+ * @param context a javax.xml.rpc.ServiceLifecycle context
+ * <code>Object</code> instance
+ * @exception ServiceException if an error occurs
+ */
+ private void setContext(final Object context) throws ServiceException {
+ try {
+ m_endPointContext = (ServletEndpointContext) context;
+
+ } catch (final ClassCastException e) {
+ throw new ServiceException(
+ "Service requires ServletEndPointContext, supplied was " + context, e
+ );
+ }
+
+ m_context = m_endPointContext.getMessageContext();
+ }
+
+ /**
+ * Helper method to obtain the Avalon <code>Logger</code> object out of
+ * the context object and enable logging for this service.
+ */
+ private void setLogger() {
+ enableLogging((Logger) m_context.getProperty(SoapServer.LOGGER));
+ }
+
+ /**
+ * Called by the JAX-RPC runtime to signal the end of this service
+ */
+ public void destroy() {
+ m_context = null;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/cache/DeploymentDescriptor.wsdd b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/cache/DeploymentDescriptor.wsdd
new file mode 100644
index 0000000..d99a4d5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/cache/DeploymentDescriptor.wsdd
@@ -0,0 +1,11 @@
+<deployment xmlns="http://xml.apache.org/axis/wsdd/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
+
+ <service name="Cocoon-Cache" provider="Handler">
+ <parameter name="role" value="org.apache.excalibur.store.Store/TransientStore"/>
+ <parameter name="className" value="org.apache.excalibur.store.Store"/>
+ <parameter name="handlerClass" value="org.apache.cocoon.components.axis.providers.AvalonProvider"/>
+ <parameter name="allowedMethods" value="clear size"/>
+ </service>
+
+</deployment>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd
new file mode 100644
index 0000000..5c9ce7f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd
@@ -0,0 +1,11 @@
+<deployment xmlns="http://xml.apache.org/axis/wsdd/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
+
+ <service name="Cocoon-Instrumentation" provider="Handler">
+ <parameter name="role" value="org.apache.cocoon.webservices.instrument.InstrumentationService"/>
+ <parameter name="className" value="org.apache.cocoon.webservices.instrument.InstrumentationService"/>
+ <parameter name="handlerClass" value="org.apache.cocoon.components.axis.providers.AvalonProvider"/>
+ <parameter name="allowedMethods" value="getSampleSnapshot getSampleNames"/>
+ </service>
+
+</deployment>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationService.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationService.java
new file mode 100644
index 0000000..787ea9d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationService.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices.instrument;
+
+import org.apache.avalon.framework.component.Component;
+import org.apache.excalibur.instrument.InstrumentManageable;
+
+/**
+ * Component interface for retrieving sample information from the
+ * InstrumentManager.
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: InstrumentationService.java,v 1.3 2004/03/05 13:01:43 bdelacretaz Exp $
+ */
+public interface InstrumentationService extends InstrumentManageable, Component {
+
+ /**
+ * Component ROLE name
+ */
+ String ROLE = InstrumentationService.class.getName();
+
+ /**
+ * Obtain an array of samples from a specified sample name.
+ *
+ * <p>
+ * The specified path parameter identifies a sample, hierarchically from
+ * Instrumentable name to Instrument name, to Instrument sample name
+ * (including any child Instrumentables) using the '.' character as a
+ * separator.
+ * </p>
+ *
+ * <pre>
+ * eg: instrument-manager.active-thread-count.maximum_1000_600
+ * </pre>
+ *
+ * <p>
+ * The above example identifies the sample 'maximum_1000_600' on instrument
+ * 'active-thread-count', on instrumentable 'instrument-manager'.
+ * </p>
+ *
+ * <p>
+ * The length of the returned array is dependant on the configuration of the
+ * sample being accessed. Check instrumentation.xconf for the length of pre-
+ * defined samples that operate constantly, when instrumentation is enabled.
+ * </p>
+ *
+ * @param path path value
+ * @return an <code>int[]</code> array of samples
+ * @exception Exception if an error occurs
+ */
+ int[] getSampleSnapshot(String path)
+ throws Exception;
+
+ /**
+ * Obtains an array of instrumentable sample names
+ *
+ * @return a {@link String}[] array of sample names
+ */
+ String[] getSampleNames();
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationServiceImpl.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationServiceImpl.java
new file mode 100644
index 0000000..da89efb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/InstrumentationServiceImpl.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices.instrument;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.excalibur.instrument.InstrumentManager;
+import org.apache.excalibur.instrument.manager.DefaultInstrumentManager;
+import org.apache.excalibur.instrument.manager.interfaces.InstrumentableDescriptor;
+import org.apache.excalibur.instrument.manager.interfaces.InstrumentDescriptor;
+import org.apache.excalibur.instrument.manager.interfaces.InstrumentSampleDescriptor;
+
+/**
+ * Implementation of {@link InstrumentationService} component. This component
+ * allows you to access sample information from the InstrumentManager.
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: InstrumentationServiceImpl.java,v 1.2 2004/03/05 13:01:43 bdelacretaz Exp $
+ */
+public final class InstrumentationServiceImpl extends AbstractLogEnabled
+ implements InstrumentationService {
+
+ private static final int[] EMPTY_INT_ARRAY = {};
+ private static final String[] EMPTY_STRING_ARRAY = {};
+
+ // instrument manager reference
+ private DefaultInstrumentManager m_iManager;
+
+ /**
+ * Sets the {@link InstrumentManager} for this service object.
+ *
+ * @param iManager an {@link InstrumentManager} instance
+ */
+ public void setInstrumentManager(final InstrumentManager iManager) {
+
+ if (iManager == null) {
+ if (getLogger().isWarnEnabled())
+ getLogger().warn(
+ "No instrument manager available," +
+ "please enable instrumentation in your web.xml"
+ );
+ }
+
+ // we require a DefaultInstrumentManager, attempt a cast.
+ if (iManager instanceof DefaultInstrumentManager) {
+ m_iManager = (DefaultInstrumentManager) iManager;
+ } else {
+ throw new UnsupportedOperationException(
+ "InstrumentationService only supports DefaultInstrumentManager"
+ );
+ }
+ }
+
+ /**
+ * Obtain an array of samples from a specified sample name.
+ *
+ * <p>
+ * The specified path parameter identifies a sample, hierarchically from
+ * Instrumentable name to Instrument name, to Instrument sample name
+ * (including any child Instrumentables) using the '.' character as a
+ * separator.
+ * </p>
+ *
+ * <pre>
+ * eg: instrument-manager.active-thread-count.maximum_1000_600
+ * </pre>
+ *
+ * <p>
+ * The above example identifies the sample 'maximum_1000_600' on instrument
+ * 'active-thread-count', on instrumentable 'instrument-manager'.
+ * </p>
+ *
+ * <p>
+ * The length of the returned array is dependant on the configuration of the
+ * sample being accessed. Check instrumentation.xconf for the length of pre-
+ * defined samples that operate constantly, when instrumentation is enabled.
+ * </p>
+ *
+ * @param path path value
+ * @return an <code>int[]</code> array of samples
+ * @exception Exception if an error occurs
+ */
+ public int[] getSampleSnapshot(final String path)
+ throws Exception {
+
+ // ensure we have an instrument manager available
+ if (!haveInstrumentManager()) {
+ getLogger().warn(
+ "No instrument manager available," +
+ "please enable instrumentation in your web.xml"
+ );
+ return EMPTY_INT_ARRAY;
+ }
+
+ // return the samples
+ return m_iManager.locateInstrumentSampleDescriptor(path)
+ .getSnapshot().getSamples();
+ }
+
+ /**
+ * Obtain a list of available samples, useful for browsing
+ * available samples.
+ *
+ * @return an {@link String}[] array of sample names
+ */
+ public String[] getSampleNames() {
+
+ // ensure we have an instrument manager available
+ if (!haveInstrumentManager()) {
+ getLogger().warn(
+ "No instrument manager available," +
+ "please enable instrumentation in your web.xml"
+ );
+ return EMPTY_STRING_ARRAY;
+ }
+
+ // list all instrumentables
+ final InstrumentableDescriptor[] descriptors =
+ m_iManager.getInstrumentableDescriptors();
+ final List names = new ArrayList();
+
+ for (int i = 0; i < descriptors.length; ++i) {
+
+ // list all instruments
+ InstrumentDescriptor[] insts =
+ descriptors[i].getInstrumentDescriptors();
+
+ for (int k = 0; k < insts.length; ++k) {
+
+ // list all samples
+ InstrumentSampleDescriptor[] samples =
+ insts[k].getInstrumentSampleDescriptors();
+
+ for (int j = 0; j < samples.length; ++j) {
+ names.add(samples[j].getName());
+ }
+ }
+ }
+
+ return (String[])names.toArray(new String[]{});
+ }
+
+ /**
+ * Helper method to determine if a valid instrument manager is available
+ *
+ * @return true if an instrument manager is present, false otherwise
+ */
+ private boolean haveInstrumentManager() {
+ return (m_iManager != null);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xconf b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xconf
new file mode 100644
index 0000000..092dd2f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xconf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.webservices.instrument.InstrumentationService']">
+
+ <component role="org.apache.cocoon.webservices.instrument.InstrumentationService"
+ class="org.apache.cocoon.webservices.instrument.InstrumentationServiceImpl"
+ logger="core.instrument.service">
+ </component>
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xroles b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xroles
new file mode 100644
index 0000000..3ef424c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/instrument/instrumentation.xroles
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+
+<xroles xpath="/role-list" unless="role[@name='org.apache.cocoon.webservices.instrument.InstrumentationService']">
+
+ <role name="org.apache.cocoon.webservices.instrument.InstrumentationService"
+ shorthand="instrument-service"
+ default-class="org.apache.cocoon.webservices.instrument.InstrumentationServiceImpl"/>
+</xroles>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/DeploymentDescriptor.wsdd b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/DeploymentDescriptor.wsdd
new file mode 100644
index 0000000..b66699c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/DeploymentDescriptor.wsdd
@@ -0,0 +1,9 @@
+<deployment xmlns="http://xml.apache.org/axis/wsdd/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
+
+ <service name="Cocoon-JVM-Memory" provider="java:RPC">
+ <parameter name="className" value="org.apache.cocoon.webservices.memory.Memory"/>
+ <parameter name="allowedMethods" value="getFreeMemory getTotalMemory invokeGC"/>
+ </service>
+
+</deployment>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/Memory.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/Memory.java
new file mode 100644
index 0000000..f0a8072
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/memory/Memory.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices.memory;
+
+/**
+ * Class which provides JVM memory related SOAP services.
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: Memory.java,v 1.2 2004/03/05 13:01:43 bdelacretaz Exp $
+ */
+public class Memory {
+
+ // static reference to the runtime object.
+ private static final Runtime runtime = Runtime.getRuntime();
+
+ /**
+ * <code>getFreeMemory</code> returns the amount of free memory
+ * in the system.
+ *
+ * @return the amount of free memory in the system
+ */
+ public static long getFreeMemory() {
+ return runtime.freeMemory();
+ }
+
+ /**
+ * <code>getTotalMemory</code> returns the total amount of memory
+ * in the JVM.
+ *
+ * @return the total amount of memory in the JVM
+ */
+ public static long getTotalMemory() {
+ return runtime.totalMemory();
+ }
+
+ /**
+ * <code>invokeGC</code> calls upon the JVM Garbage Collector to
+ * recycle unused objects.
+ */
+ public static void invokeGC() {
+ runtime.gc();
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/DeploymentDescriptor.wsdd b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/DeploymentDescriptor.wsdd
new file mode 100644
index 0000000..7d770db
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/DeploymentDescriptor.wsdd
@@ -0,0 +1,9 @@
+<deployment xmlns="http://xml.apache.org/axis/wsdd/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
+
+ <service name="Cocoon-JVM-System" provider="java:RPC">
+ <parameter name="className" value="org.apache.cocoon.webservices.system.System"/>
+ <parameter name="allowedMethods" value="getProperties getArchitecture getCPUInfo getNumProcessors getOperatingSystem getOperatingSystemVersion"/>
+ </service>
+
+</deployment>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/System.java b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/System.java
new file mode 100644
index 0000000..8997f89
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/java/org/apache/cocoon/webservices/system/System.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.webservices.system;
+
+import java.util.Properties;
+import org.apache.excalibur.util.SystemUtil;
+
+/**
+ * Class which provides JVM system related SOAP services.
+ *
+ * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
+ * @version CVS $Id: System.java,v 1.2 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class System {
+
+ /**
+ * <code>getProperties</code> returns the current System Properties object.
+ *
+ * @return a <code>Properties</code> instance
+ */
+ public Properties getProperties() {
+ return java.lang.System.getProperties();
+ }
+
+ /**
+ * <code>getArchitecture</code> returns the host architecture.
+ *
+ * @return host architecture
+ */
+ public String getArchitecture() {
+ return SystemUtil.architecture();
+ }
+
+ /**
+ * <code>getCPUInfo</code> returns host CPU information.
+ *
+ * @return host CPU information
+ */
+ public String getCPUInfo() {
+ return SystemUtil.cpuInfo();
+ }
+
+ /**
+ * <code>getNumProcessors</code> returns the number of processors in
+ * this machine.
+ *
+ * @return number of processors
+ */
+ public int getNumProcessors() {
+ return SystemUtil.numProcessors();
+ }
+
+ /**
+ * <code>getOperatingSystem</code> returns the host operating system
+ *
+ * @return host operating system
+ */
+ public String getOperatingSystem() {
+ return SystemUtil.operatingSystem();
+ }
+
+ /**
+ * <code>getOperatingSystemVersion</code> returns the host operating system
+ * version
+ *
+ * @return host operating system version
+ */
+ public String getOperatingSystemVersion() {
+ return SystemUtil.osVersion();
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-1.1.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-1.1.jar
new file mode 100644
index 0000000..869ee16
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-jaxrpc-1.1.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-jaxrpc-1.1.jar
new file mode 100644
index 0000000..5f6a56f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-jaxrpc-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-saaj-1.1.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-saaj-1.1.jar
new file mode 100644
index 0000000..f2242ab
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/axis-saaj-1.1.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/commons-discovery-0.2.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/commons-discovery-0.2.jar
new file mode 100644
index 0000000..b885548
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/commons-discovery-0.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/excalibur-util-1.0.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/excalibur-util-1.0.jar
new file mode 100644
index 0000000..2c7f673
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/excalibur-util-1.0.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/lib/wsdl4j-1.4.jar b/ASF_20_SRC_AUTO/src/blocks/axis/lib/wsdl4j-1.4.jar
new file mode 100644
index 0000000..820abd0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/lib/wsdl4j-1.4.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/axis/samples/sitemap.xmap
new file mode 100644
index 0000000..0231515
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/samples/sitemap.xmap
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Components ================================ -->
+
+<map:components>
+
+<map:generators default="file"/>
+<map:transformers default="xslt"/>
+
+<map:readers default="resource">
+
+ <!-- Defines a SOAP RPC reader that will serve SOAP requests via HTTP-POST. -->
+ <map:reader logger="sitemap.reader.soap-rpc" name="soap-rpc"
+ src="org.apache.cocoon.reading.AxisRPCReader"/>
+
+</map:readers>
+
+<map:serializers default="html"/>
+<map:matchers default="wildcard"/>
+<map:selectors default="browser"/>
+<map:actions/>
+
+
+</map:components>
+
+<!-- =========================== Pipelines ================================= -->
+
+<map:pipelines>
+
+ <!-- sub-sitemap soap example pipeline -->
+ <map:pipeline>
+
+ <!-- Match SOAP RPC Router requests -->
+ <map:match pattern="rpcrouter">
+ <map:read type="soap-rpc" mime-type="text/xml">
+ <in-development-stage>false</in-development-stage>
+ </map:read>
+ </map:match>
+
+ <!-- Send all non qualified requests to the status page -->
+ <map:match pattern="">
+ <map:redirect-to uri="status.xsp"/>
+ </map:match>
+
+ <map:match pattern="status.xsp">
+ <map:generate type="serverpages" src="status.xsp"/>
+ <map:transform src="status.xsl"/>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <!-- Match any other xsp pages we've put in the directory -->
+ <map:match pattern="*.xsp">
+ <map:generate type="serverpages" src="{1}.xsp"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ </map:pipeline>
+</map:pipelines>
+
+</map:sitemap>
+
+<!-- end of file -->
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsl b/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsl
new file mode 100644
index 0000000..900ab9a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
+ xmlns:a="http://xml.apache.org/axis/wsdd/">
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title>Cocoon as a SOAP Server</title>
+ <link rel="stylesheet" type="text/css" href="/styles/main.css"/>
+ </head>
+ <body>
+ <center><h1>Cocoon SOAP Server Status</h1></center>
+
+ <hr/>
+
+ <p>
+ Welcome to the Cocoon SOAP server status page.
+ </p>
+ <p>
+ These samples use
+ <a href="http://ws.apache.org/axis/">Apache Axis</a> to give access to
+ Cocoon components via SOAP.
+ </p>
+
+ <h2>Active services</h2>
+
+ <p>
+ The SOAP server is currently active and the following
+ services are deployed:
+ </p>
+
+ <p>
+ <ul>
+ <xsl:apply-templates select="/page/soapenv:Envelope/soapenv:Body/a:deployment/a:service"/>
+ </ul>
+ </p>
+ <xsl:apply-templates select="//calling-examples"/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="a:service">
+ <li>
+ <p><b><xsl:value-of select="@name"/></b></p>
+
+ <p>
+ Class:
+
+ <xsl:apply-templates select="a:parameter[@name='className']"/>
+
+ <br/>
+
+ Provider:
+
+ <i><xsl:value-of select="@provider"/></i>
+
+ <br/>
+
+ Methods:
+
+ <xsl:apply-templates select="a:parameter[@name='allowedMethods']"/>
+ </p>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="a:parameter">
+ <i><xsl:value-of select="@value"/></i>
+ </xsl:template>
+
+ <xsl:template match="calling-examples">
+ <h2>Client examples</h2>
+ <xsl:apply-templates select="example"/>
+ </xsl:template>
+
+ <xsl:template match="example">
+ <h3>Example using <xsl:value-of select="@language"/></h3>
+ <pre>
+ <xsl:value-of select="."/>
+ </pre>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsp b/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsp
new file mode 100644
index 0000000..019cc9e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/axis/samples/status.xsp
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<xsp:page
+ language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:xsp-request="http://apache.org/xsp/request/2.0"
+ xmlns:xscript="http://apache.org/xsp/xscript/1.0"
+ xmlns:soap="http://apache.org/xsp/soap/3.0">
+<page>
+ <soap:call method="AdminService" url="rpcrouter">
+ <m:list xmlns:m="http://xml.apache.org/axis/wsdd/"/>
+ </soap:call>
+
+<calling-examples>
+<example language="perl with SOAP::Lite">
+#!/usr/bin/perl
+print 'Testing Cocoon SOAP call, you should see your OS name here: ';
+use SOAP::Lite;
+ print SOAP::Lite
+ -> uri('Cocoon-JVM-System')
+ -> proxy('http://localhost:8888/samples/axis/rpcrouter')
+ -> getOperatingSystem()
+ -> result;
+print "\n";
+</example>
+</calling-examples>
+
+</page>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.generation.xmap b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.generation.xmap
new file mode 100644
index 0000000..7043162
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.generation.xmap
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/generators" unless="generator[@name='extractor']">
+
+ <map:generator label="content" logger="sitemap.generator.extractor" name="extractor" src="org.apache.cocoon.generation.FragmentExtractorGenerator"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.serializer.xmap b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.serializer.xmap
new file mode 100644
index 0000000..e0c4fc7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.serializer.xmap
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/serializers" unless="serializer[@name='svg2jpeg']">
+ <map:serializer logger="sitemap.serializer.svg2png" name="svg2jpeg" src="org.apache.cocoon.serialization.SVGSerializer" mime-type="image/jpeg">
+ <parameter name="quality" type="float" value="0.9"/>
+ </map:serializer>
+ <map:serializer logger="sitemap.serializer.svg2png" name="svg2png" src="org.apache.cocoon.serialization.SVGSerializer" mime-type="image/png"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.transformer.xmap b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.transformer.xmap
new file mode 100644
index 0000000..d616790
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.transformer.xmap
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/transformers" unless="transformer[@name='extractor']">
+
+ <map:transformer logger="sitemap.transformer.extractor" name="extractor" src="org.apache.cocoon.transformation.FragmentExtractorTransformer"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.xsamples b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.xsamples
new file mode 100644
index 0000000..dab1aad
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/conf/svg.xsamples
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Batik']">
+
+ <group name="Batik">
+ <sample name="Batik" href="batik/">
+ Examples of rasterized SVG images.
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/ExtendableTranscoderFactory.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/ExtendableTranscoderFactory.java
new file mode 100644
index 0000000..61b77bc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/ExtendableTranscoderFactory.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.transcoder;
+
+import org.apache.batik.transcoder.Transcoder;
+import org.apache.batik.transcoder.image.JPEGTranscoder;
+import org.apache.batik.transcoder.image.PNGTranscoder;
+import org.apache.batik.transcoder.image.TIFFTranscoder;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * An extendable Batik Transcoder factory.
+ * When given a MIME type, find a Transcoder which supports that MIME
+ * type. This factory is extendable as new <code>Transcoder</code>s can
+ * be added at runtime.
+ *
+ * @author <a href="mailto:rossb@apache.org">Ross Burton</a>
+ * @version CVS $Id: ExtendableTranscoderFactory.java,v 1.2 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class ExtendableTranscoderFactory implements TranscoderFactory {
+
+ protected static Map transcoders = new HashMap();
+
+ protected final static TranscoderFactory singleton = new ExtendableTranscoderFactory();
+
+ private ExtendableTranscoderFactory() {
+ // Add the default transcoders which come with Batik
+ addTranscoder("image/jpeg", JPEGTranscoder.class);
+ addTranscoder("image/jpg", JPEGTranscoder.class);
+ addTranscoder("image/png", PNGTranscoder.class);
+ addTranscoder("image/tiff", TIFFTranscoder.class);
+ }
+
+ /**
+ * Get a reference to this Transcoder Factory.
+ */
+ public final static TranscoderFactory getTranscoderFactoryImplementation() {
+ return singleton;
+ }
+
+ /**
+ * Create a transcoder for a specified MIME type.
+ * @param mimeType The MIME type of the destination format
+ * @return A suitable transcoder, or <code>null</code> if one cannot be found
+ */
+ public Transcoder createTranscoder(String mimeType) {
+ Class transcoderClass = (Class) transcoders.get(mimeType);
+ if (transcoderClass == null) {
+ return null;
+ } else {
+ try {
+ return (Transcoder) transcoderClass.newInstance();
+ } catch (Exception ex) {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * Add a mapping from the specified MIME type to a transcoder.
+ * Note: The transcoder must have a no-argument constructor.
+ * @param mimeType The MIME type of the Transcoder
+ * @param transcoderClass The <code>Class</code> object for the Transcoder.
+ */
+ public void addTranscoder(String mimeType, Class transcoderClass) {
+ transcoders.put(mimeType, transcoderClass);
+ }
+
+ /**
+ * Remove the mapping from a specified MIME type.
+ * @param mimeType The MIME type to remove from the mapping.
+ */
+ public void removeTranscoder(String mimeType) {
+ transcoders.remove(mimeType);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/TranscoderFactory.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/TranscoderFactory.java
new file mode 100644
index 0000000..37baa8f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/transcoder/TranscoderFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.transcoder;
+
+import org.apache.batik.transcoder.Transcoder;
+
+/**
+ * Apache Batik Transcoder factory.
+ * When given a MIME type, find a Transcoder which supports that MIME type.
+ * @author <a href="mailto:rossb@apache.org">Ross Burton</a>
+ * @version CVS $Id: TranscoderFactory.java,v 1.2 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public interface TranscoderFactory {
+
+ /**
+ * Create a transcoder for a specified MIME type.
+ * @param mimeType The MIME type of the destination format
+ * @return A suitable transcoder, or <code>null> if one cannot be found
+ */
+ Transcoder createTranscoder(String mimeType) ;
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedContextURLProtocolHandler.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedContextURLProtocolHandler.java
new file mode 100644
index 0000000..c2b53dd
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedContextURLProtocolHandler.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.url;
+
+import org.apache.batik.util.AbstractParsedURLProtocolHandler;
+import org.apache.batik.util.ParsedURL;
+import org.apache.batik.util.ParsedURLData;
+import org.apache.cocoon.environment.Context;
+
+import java.net.MalformedURLException;
+
+
+/**
+ * Provide an extension to Batik to handle the "context:" protocol. This class
+ * assumes it will live in a separate classloader as the Context is set statically.
+ * Batik uses the Jar file Services extension, so the class is instantiated in
+ * an uncontrolled manner (as far as Cocoon is concerned).
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @version CVS $Id: ParsedContextURLProtocolHandler.java,v 1.4 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class ParsedContextURLProtocolHandler extends AbstractParsedURLProtocolHandler {
+ private static Context context = null;
+
+ /**
+ * Set the ServletContext for this protocol. If it does not exist, you will
+ * get NullPointerExceptions!
+ */
+ public static final void setContext(final Context newContext) {
+ if (ParsedContextURLProtocolHandler.context == null) {
+ ParsedContextURLProtocolHandler.context = newContext;
+ }
+ }
+
+ /**
+ * Create a new instance, this doesn't do much beyond register the type of
+ * protocol we handle.
+ */
+ public ParsedContextURLProtocolHandler() {
+ super("context");
+ }
+
+ /**
+ * Getbase.getPath() the ParsedURLData for the context. Absolute URIs are specified like
+ * "context://".
+ */
+ public ParsedURLData parseURL(String uri) {
+ ParsedURLData urldata = null;
+ try {
+ String path = uri.substring("context:/".length());
+ urldata = new ParsedURLData(ParsedContextURLProtocolHandler.context.getResource(path));
+ } catch (MalformedURLException mue) {
+ StringBuffer baseFile = new StringBuffer(ParsedContextURLProtocolHandler
+ .context.getRealPath("/"));
+
+ if (!baseFile.toString().endsWith("/")) {
+ baseFile.append("/");
+ }
+
+ baseFile.append(baseFile);
+ baseFile.append(uri.substring("context://".length()));
+
+ urldata = new ParsedURLData();
+ urldata.protocol = "file";
+ urldata.path = baseFile.toString();
+ }
+
+ if ("file".equals(urldata.protocol)) {
+ urldata.host = null;
+ urldata.port = -1;
+ } else if (null == urldata.host) {
+ urldata.port = -1;
+ } else if (urldata.port < 0) {
+ urldata.host = null;
+ }
+
+ return urldata;
+ }
+
+ /**
+ * The build the relative URL. Relative URIs are specified like "context:".
+ */
+ public ParsedURLData parseURL(ParsedURL base, String uri) {
+ StringBuffer newURI = new StringBuffer("context://");
+ newURI.append(base.getPath());
+
+ if (!newURI.toString().endsWith("/")) {
+ newURI.append("/");
+ }
+
+ newURI.append(uri.substring("context:".length()));
+
+ return this.parseURL(newURI.toString());
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedResourceURLProtocolHandler.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedResourceURLProtocolHandler.java
new file mode 100644
index 0000000..c7541e3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/ParsedResourceURLProtocolHandler.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.url;
+
+import org.apache.batik.util.AbstractParsedURLProtocolHandler;
+import org.apache.batik.util.ParsedURL;
+import org.apache.batik.util.ParsedURLData;
+
+/**
+ * Provide an extension to Batik to handle the "resource:" protocol. This class
+ * uses the <code>Thread.getContextClassLoader()</code> classloader to get resources.
+ * It is safe to use this URL with multiple Cocoon webapps running.
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @version CVS $Id: ParsedResourceURLProtocolHandler.java,v 1.3 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class ParsedResourceURLProtocolHandler extends AbstractParsedURLProtocolHandler {
+
+ /**
+ * Create a new instance, this doesn't do much beyond register the type of
+ * protocol we handle.
+ */
+ public ParsedResourceURLProtocolHandler() {
+ super("resource");
+ }
+
+ /**
+ * Getbase.getPath() the ParsedURLData for the context. Absolute URIs are specified like
+ * "resource://".
+ */
+ public ParsedURLData parseURL(String uri) {
+ ParsedURLData urldata = null;
+ String path = uri.substring("resource:/".length());
+ urldata = new ParsedURLData(Thread.currentThread().getContextClassLoader().getResource(path));
+
+ if ("file".equals(urldata.protocol)) {
+ urldata.host = null;
+ urldata.port = -1;
+ } else if (null == urldata.host) {
+ urldata.port = -1;
+ } else if (urldata.port < 0) {
+ urldata.host = null;
+ }
+
+ return urldata;
+ }
+
+ /**
+ * The build the relative URL. Relative URIs are specified like "resource:".
+ */
+ public ParsedURLData parseURL(ParsedURL base, String uri) {
+ StringBuffer newURI = new StringBuffer("resource://");
+ newURI.append(base.getPath());
+
+ if ( !newURI.toString().endsWith("/") ) {
+ newURI.append("/");
+ }
+
+ newURI.append(uri.substring("resource:".length()));
+
+ return this.parseURL(newURI.toString());
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/SourceProtocolHandler.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/SourceProtocolHandler.java
new file mode 100644
index 0000000..d0b8c0a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/SourceProtocolHandler.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.url;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.avalon.framework.CascadingRuntimeException;
+import org.apache.batik.ext.awt.image.spi.ImageTagRegistry;
+import org.apache.batik.util.AbstractParsedURLProtocolHandler;
+import org.apache.batik.util.ParsedURL;
+import org.apache.batik.util.ParsedURLData;
+import org.apache.batik.util.ParsedURLProtocolHandler;
+import org.apache.cocoon.CascadingIOException;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceResolver;
+
+/**
+ * A Batik protocol handler that handles all Cocoon sources. This allows
+ * <svg:image xlink:href="..."/> to use any of the protocols handled by Cocoon.
+ *
+ * @author <a href="http://www.apache.org/~sylvain/">Sylvain Wallez</a>
+ * @version CVS $Id: SourceProtocolHandler.java,v 1.2 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class SourceProtocolHandler extends AbstractParsedURLProtocolHandler {
+
+ /** Thread-local source resolver */
+ protected static InheritableThreadLocal localResolver = new InheritableThreadLocal();
+
+ /** Batik's original default handler */
+ protected static ParsedURLProtocolHandler defaultHandler;
+
+ /**
+ * Change the default handler used by Batik to resolve URLs to a handler
+ * based on <code>SourceResolver</code> and <code>SourceHandler</code>.
+ * <p>
+ * Note : Batik handlers are defined statically, and are thus shared by
+ * all its users. However, this shouldn't be a problem since different
+ * web applications live in different classloaders.
+ *
+ * @param manager the component manager used to get the <code>SourceHandler</code>
+ * @param logger the logger for logging.
+ */
+ static {
+ // Keep the default handler, if any
+ SourceProtocolHandler.defaultHandler = ParsedURL.getHandler(null);
+
+ // Set the default handler to our handler
+ ParsedURL.registerHandler(new SourceProtocolHandler(null));
+
+ // Add a new image registry entry to handle image streams
+ ImageTagRegistry.getRegistry().register(new StreamJDKRegistryEntry());
+
+ }
+
+ /**
+ * Set the resolver to be used within the current thread.
+ */
+ public static void setup(SourceResolver resolver) {
+ localResolver.set(resolver);
+ }
+
+
+ /**
+ * Get the thread-local resolver.
+ */
+ public static SourceResolver getSourceResolver()
+ {
+ SourceResolver resolver = (SourceResolver)localResolver.get();
+ return resolver;
+ }
+
+ //-------------------------------------------------------------------------
+
+ public SourceProtocolHandler(String protocol) {
+ super(protocol);
+ }
+
+ public ParsedURLData parseURL(ParsedURL baseURL, String urlStr) {
+ SourceResolver resolver = (SourceResolver)localResolver.get();
+ if (resolver == null) {
+ // Fall back to the previous default handler
+ return defaultHandler == null ? null : defaultHandler.parseURL(baseURL, urlStr);
+ } else {
+ return new SourceParsedURLData(urlStr, resolver);
+ }
+ }
+
+ public ParsedURLData parseURL(String urlStr) {
+ SourceResolver resolver = (SourceResolver)localResolver.get();
+ if (resolver == null) {
+ return defaultHandler == null ? null : defaultHandler.parseURL(urlStr);
+ } else {
+ return new SourceParsedURLData(urlStr, resolver);
+ }
+ }
+
+ /**
+ * Reimplementation of some methods of ParsedURLData since we cannot use <code>java.net.URL</code>.
+ */
+ static class SourceParsedURLData extends ParsedURLData {
+
+ public String url;
+
+ private Source source;
+ private SourceResolver resolver;
+
+ public SourceParsedURLData(String urlStr, SourceResolver resolver) {
+
+ this.url = urlStr;
+ this.resolver = resolver;
+
+ // ParsedURLData has some public members which seems to be required to
+ // have a value. This sucks.
+ int pidx=0, idx;
+
+ idx = urlStr.indexOf(':');
+ if (idx != -1) {
+ // May have a protocol spec...
+ this.protocol = urlStr.substring(pidx, idx);
+ if (this.protocol.indexOf('/') == -1)
+ pidx = idx+1;
+ else {
+ // Got a slash in protocol probably means
+ // no protocol given, (host and port?)
+ this.protocol = null;
+ pidx = 0;
+ }
+ }
+
+ idx = urlStr.indexOf(',',pidx);
+ if (idx != -1) {
+ this.host = urlStr.substring(pidx, idx);
+ pidx = idx+1;
+ }
+ if (pidx != urlStr.length())
+ this.path = urlStr.substring(pidx);
+
+
+ // Now do the real job
+
+ // Setup source
+ try {
+ this.source = resolver.resolveURI(this.url);
+ } catch(Exception e) {
+ throw new CascadingRuntimeException("Cannot resolve " + this.url, e);
+ }
+
+ // Get Mime-type
+
+ // First try the source itself
+ this.contentType = this.source.getMimeType();
+
+ if (this.contentType == null) {
+ // Guess it from the URL extension
+ if (url.endsWith(".gif")) {
+ this.contentType = "image/gif";
+ } else if (url.endsWith(".jpeg") || url.endsWith(".jpg")) {
+ this.contentType = "image/jpeg";
+ } else if (url.endsWith(".png")) {
+ this.contentType = "image/png";
+ }
+ }
+ }
+
+ public boolean complete() {
+ return (this.url != null);
+ }
+
+ public String getPortStr() {
+ String portStr = protocol+":";
+ if (host != null) portStr += host;
+ portStr += ",";
+ return portStr;
+ }
+
+ public String toString() {
+ return this.url;
+ }
+
+ /**
+ * Open a stream for the data. If the thread-local <code>SourceResolver</code> exists,
+ * then use it, otherwise fall back to <code>SourceHandler</code>.
+ */
+ protected InputStream openStreamInternal (String userAgent, Iterator mimeTypes, Iterator encodingTypes)
+ throws IOException {
+
+ try {
+ return source.getInputStream();
+ } catch(Exception e) {
+ throw new CascadingIOException("Cannot open URL " + this.url, e);
+ } finally {
+ this.resolver.release(this.source);
+ }
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/StreamJDKRegistryEntry.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/StreamJDKRegistryEntry.java
new file mode 100644
index 0000000..a8c7231
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/components/url/StreamJDKRegistryEntry.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.url;
+
+import java.awt.Component;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.MediaTracker;
+import java.awt.Toolkit;
+import java.awt.image.BufferedImage;
+import java.awt.image.RenderedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.batik.ext.awt.image.GraphicsUtil;
+import org.apache.batik.ext.awt.image.renderable.Filter;
+import org.apache.batik.ext.awt.image.renderable.RedRable;
+import org.apache.batik.ext.awt.image.spi.AbstractRegistryEntry;
+import org.apache.batik.ext.awt.image.spi.MagicNumberRegistryEntry;
+import org.apache.batik.ext.awt.image.spi.URLRegistryEntry;
+import org.apache.batik.util.ParsedURL;
+
+
+/**
+ * This Image tag registy entry is setup to wrap the core JDK Image stream tools.
+ *
+ * @version CVS $Id: StreamJDKRegistryEntry.java,v 1.3 2004/03/05 13:01:45 bdelacretaz Exp $
+ */
+public class StreamJDKRegistryEntry extends AbstractRegistryEntry
+ implements URLRegistryEntry {
+
+ /**
+ * The priority of this entry.
+ * This entry should in most cases be the last entry.
+ * but if one wishes one could set a priority higher and be called
+ * afterwords
+ */
+ public final static float PRIORITY =
+ 1000*MagicNumberRegistryEntry.PRIORITY;
+
+ public StreamJDKRegistryEntry() {
+ super ("Stream-JDK", PRIORITY, new String[0], new String [] {"image/gif"});
+ }
+
+ /**
+ * Check if the Stream references an image that can be handled by
+ * this format handler. The input stream passed in should be
+ * assumed to support mark and reset.
+ *
+ * If this method throws a StreamCorruptedException then the
+ * InputStream will be closed and a new one opened (if possible).
+ *
+ * This method should only throw a StreamCorruptedException if it
+ * is unable to restore the state of the InputStream
+ * (i.e. mark/reset fails basically).
+ */
+ public boolean isCompatibleURL(ParsedURL purl) {
+ String contentType = purl.getContentType();
+ if (contentType == null)
+ return false;
+
+ Iterator iter = this.getMimeTypes().iterator();
+ while (iter.hasNext()) {
+ if (contentType.equals(iter.next())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Decode the URL into a RenderableImage
+ *
+ * @param purl The URLto decode
+ * @param needRawData If true the image returned should not have
+ * any default color correction the file may
+ * specify applied.
+ */
+ public Filter handleURL(ParsedURL purl, boolean needRawData) {
+
+ // Read all bytes from the ParsedURL (too bad, there's no Toolkit.createImage(InputStream))
+ InputStream is = null;
+ byte[] buffer = new byte[1024];
+ int len;
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ is = purl.openStream();
+ while((len = is.read(buffer)) != -1) {
+ bos.write(buffer, 0, len);
+ }
+ } catch(IOException ioe) {
+ return null;
+ } finally {
+ try {
+ if (is != null) is.close();
+ } catch (Exception e) {}
+ }
+
+ buffer = bos.toByteArray();
+
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ final Image img = tk.createImage(buffer);
+ if (img == null)
+ return null;
+
+ RenderedImage ri = loadImage(img);
+ if (ri == null)
+ return null;
+
+ return new RedRable(GraphicsUtil.wrap(ri));
+ }
+
+ // Stuff for Image Loading.
+ static Component mediaComponent = new Label();
+ static MediaTracker mediaTracker = new MediaTracker(mediaComponent);
+ static int id = 0;
+
+ public RenderedImage loadImage(Image img) {
+ // In some cases the image will be a
+ // BufferedImage (subclass of RenderedImage).
+ if (img instanceof RenderedImage)
+ return (RenderedImage)img;
+
+ // Setup the mediaTracker.
+ int myID;
+ synchronized (mediaTracker) {
+ myID = id++;
+ }
+
+ // Add our image to the media tracker and wait....
+ mediaTracker.addImage(img, myID);
+ while (true) {
+ try {
+ mediaTracker.waitForID(myID);
+ } catch(InterruptedException ie) {
+ // Something woke us up but the image
+ // isn't done yet, so try again.
+ continue;
+ }
+ // All done!
+ break;
+ }
+
+ // Clean up our registraction
+ mediaTracker.removeImage(img, myID);
+
+ if ((img.getWidth(null) == -1)||
+ (img.getHeight(null) == -1))
+ return null;
+
+ // Build the image to .
+ BufferedImage bi = null;
+ bi = new BufferedImage(img.getWidth(null),
+ img.getHeight(null),
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2d = bi.createGraphics();
+
+ g2d.drawImage(img, 0, 0, null);
+ g2d.dispose();
+ return bi;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/generation/FragmentExtractorGenerator.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/generation/FragmentExtractorGenerator.java
new file mode 100644
index 0000000..864da9d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/generation/FragmentExtractorGenerator.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation;
+
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.cocoon.ResourceNotFoundException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.sax.XMLDeserializer;
+
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.source.impl.validity.NOPValidity;
+import org.apache.excalibur.store.Store;
+
+import org.xml.sax.SAXException;
+
+/**
+ * The generation half of FragmentExtractor.
+ *
+ * FragmentExtractor is a transformer-generator pair which is designed to allow
+ * sitemap managers to extract certain nodes from a SAX stream and move them
+ * into a separate pipeline. The main use for this is to extract inline SVG
+ * images and serve them up through a separate pipeline, usually serializing
+ * them to PNG or JPEG format first.
+ *
+ * This is by no means complete yet, but it should prove useful, particularly
+ * for offline generation.
+ *
+ * @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
+ * @version CVS $Id: FragmentExtractorGenerator.java,v 1.5 2004/03/05 13:01:46 bdelacretaz Exp $
+ */
+public class FragmentExtractorGenerator extends ServiceableGenerator
+ implements CacheableProcessingComponent {
+
+ /**
+ * Generate the unique key.
+ * This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public java.io.Serializable getKey() {
+ return this.source;
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the
+ * component is currently not cacheable.
+ */
+ public SourceValidity getValidity() {
+ return NOPValidity.SHARED_INSTANCE;
+ }
+
+ public void generate() throws SAXException, ProcessingException {
+ // Obtain the fragmentID (which is simply the filename portion of the source)
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Retrieving fragment " + source + ".");
+ }
+
+ Store store = null;
+ XMLDeserializer deserializer = null;
+ Object fragment = null;
+ try {
+ store = (Store) this.manager.lookup(Store.TRANSIENT_STORE);
+ fragment = store.get(source);
+ if (fragment == null) {
+ throw new ResourceNotFoundException("Could not find fragment " + source + " in store");
+ }
+
+ deserializer = (XMLDeserializer) this.manager.lookup(XMLDeserializer.ROLE);
+ deserializer.setConsumer(this.xmlConsumer);
+ deserializer.deserialize(fragment);
+
+ } catch (ServiceException ce) {
+ getLogger().error("Could not lookup for component.", ce);
+ throw new SAXException("Could not lookup for component.", ce);
+ } finally {
+ this.manager.release(store);
+ this.manager.release(deserializer);
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/serialization/SVGSerializer.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/serialization/SVGSerializer.java
new file mode 100644
index 0000000..247a7b2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/serialization/SVGSerializer.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.serialization;
+
+import java.awt.Color;
+import java.io.OutputStream;
+
+import org.apache.avalon.excalibur.pool.Poolable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.batik.transcoder.Transcoder;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.TranscodingHints;
+import org.apache.batik.transcoder.TranscoderException;
+import org.apache.batik.util.ParsedURL;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.transcoder.ExtendableTranscoderFactory;
+import org.apache.cocoon.components.transcoder.TranscoderFactory;
+import org.apache.cocoon.components.url.ParsedContextURLProtocolHandler;
+import org.apache.cocoon.components.url.ParsedResourceURLProtocolHandler;
+import org.apache.cocoon.util.ClassUtils;
+import org.apache.cocoon.xml.dom.SVGBuilder;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.source.impl.validity.NOPValidity;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * A <a href="http://xml.apache.org/batik/">Batik</a> based Serializer for generating PNG/JPEG images
+ *
+ * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
+ * @author <a href="mailto:rossb@apache.org">Ross Burton</a>
+ * @version CVS $Id: SVGSerializer.java,v 1.15 2004/03/05 13:01:46 bdelacretaz Exp $
+ */
+public class SVGSerializer extends SVGBuilder
+implements Serializer, Configurable, Poolable, CacheableProcessingComponent, Contextualizable {
+
+ /**
+ * Get the context
+ */
+ public void contextualize(Context context) throws ContextException {
+ ParsedContextURLProtocolHandler.setContext(
+ (org.apache.cocoon.environment.Context)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT));
+ ParsedURL.registerHandler(new ParsedContextURLProtocolHandler());
+ ParsedURL.registerHandler(new ParsedResourceURLProtocolHandler());
+ }
+
+ /** The current <code>OutputStream</code>. */
+ private OutputStream output;
+
+ /** The current <code>mime-type</code>. */
+ private String mimetype;
+
+ /** The current <code>Transcoder</code>. */
+ Transcoder transcoder;
+
+ /** The Transcoder Factory to use */
+ TranscoderFactory factory = ExtendableTranscoderFactory.getTranscoderFactoryImplementation();
+
+// private ServiceManager manager;
+
+// private SourceResolver resolver;
+
+ /**
+ * Set the <code>OutputStream</code> where the XML should be serialized.
+ */
+ public void setOutputStream(OutputStream out) {
+ this.output = out;
+
+ // Give the source resolver to Batik
+ //SourceProtocolHandler.setup(this.resolver);
+ }
+
+/* public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ this.resolver = (SourceResolver)this.manager.lookup(SourceResolver.ROLE);
+ }
+
+ public void dispose() {
+ this.manager.release(this.resolver);
+ }
+*/
+ /**
+ * Set the configurations for this serializer.
+ */
+ public void configure(Configuration conf) throws ConfigurationException {
+ this.mimetype = conf.getAttribute("mime-type");
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("mime-type: " + mimetype);
+ }
+
+ // Using the Transcoder Factory, get the default transcoder
+ // for this MIME type.
+ this.transcoder = factory.createTranscoder(mimetype);
+
+ // Iterate through the parameters, looking for a transcoder reference
+ Configuration[] parameters = conf.getChildren("parameter");
+ for (int i = 0; i < parameters.length; i++) {
+ String name = parameters[i].getAttribute("name");
+ if ("transcoder".equals(name)) {
+ String transcoderName = parameters[i].getAttribute("value");
+ try {
+ this.transcoder = (Transcoder)ClassUtils.newInstance(transcoderName);
+ } catch (Exception ex) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Cannot load class " + transcoderName, ex);
+ }
+ throw new ConfigurationException("Cannot load class " + transcoderName, ex);
+ }
+ }
+ }
+ // Do we have a transcoder yet?
+ if (this.transcoder == null ) {
+ throw new ConfigurationException(
+ "Could not autodetect transcoder for SVGSerializer and "
+ + "no transcoder was specified in the sitemap configuration."
+ );
+ }
+
+ // Now run through the other parameters, using them as hints
+ // to the transcoder
+ for (int i = 0; i < parameters.length; i++ ) {
+ String name = parameters[i].getAttribute("name");
+ // Skip over the parameters we've dealt with. Ensure this
+ // is kept in sync with the above list!
+ if ("transcoder".equals(name)) {
+ continue;
+ }
+
+ // Now try and get the hints out
+ try {
+ // Turn it into a key name (assume the current Batik style continues!
+ name = ("KEY_" + name).toUpperCase();
+ // Use reflection to get a reference to the key object
+ TranscodingHints.Key key = (TranscodingHints.Key)
+ (transcoder.getClass().getField(name).get(transcoder));
+ Object value;
+ String keyType = parameters[i].getAttribute("type", "STRING").toUpperCase();
+ if ("FLOAT".equals(keyType)) {
+ // Can throw an exception.
+ value = new Float(parameters[i].getAttributeAsFloat("value"));
+ } else if ("INTEGER".equals(keyType)) {
+ // Can throw an exception.
+ value = new Integer(parameters[i].getAttributeAsInteger("value"));
+ } else if ("BOOLEAN".equals(keyType)) {
+ // Can throw an exception.
+ value = new Boolean(parameters[i].getAttributeAsBoolean("value"));
+ } else if ("COLOR".equals(keyType)) {
+ // Can throw an exception
+ String stringValue = parameters[i].getAttribute("value");
+ if (stringValue.startsWith("#")) {
+ stringValue = stringValue.substring(1);
+ }
+ value = new Color(Integer.parseInt(stringValue, 16));
+ } else {
+ // Assume String, and get the value. Allow an empty string.
+ value = parameters[i].getAttribute("value", "");
+ }
+ if(getLogger().isDebugEnabled()) {
+ getLogger().debug("Adding hint \"" + name + "\" with value \"" + value.toString() + "\"");
+ }
+ transcoder.addTranscodingHint(key, value);
+ } catch (ClassCastException ex) {
+ // This is only thrown from the String keyType... line
+ throw new ConfigurationException("Specified key (" + name + ") is not a valid Batik Transcoder key.", ex);
+ } catch (ConfigurationException ex) {
+ throw new ConfigurationException("Name or value not specified.", ex);
+ } catch (IllegalAccessException ex) {
+ throw new ConfigurationException("Cannot access the key for parameter \"" + name + "\"", ex);
+ } catch (NoSuchFieldException ex) {
+ throw new ConfigurationException("No field available for parameter \"" + name + "\"", ex);
+ }
+ }
+ }
+
+ /**
+ * Receive notification of a successfully completed DOM tree generation.
+ */
+ public void notify(Document doc) throws SAXException {
+
+ try {
+ TranscoderInput transInput = new TranscoderInput(doc);
+
+ // Buffering is done by the pipeline (See shouldSetContentLength)
+ TranscoderOutput transOutput = new TranscoderOutput(this.output);
+ transcoder.transcode(transInput, transOutput);
+ } catch (TranscoderException ex) {
+ if (ex.getException() != null) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Got transcoder exception writing image, rethrowing nested exception", ex);
+ }
+ throw new SAXException("Exception writing image", ex.getException());
+ }
+
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Got transcoder exception writing image, rethrowing", ex);
+ }
+ throw new SAXException("Exception writing image", ex);
+ } catch (Exception ex) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Got exception writing image, rethrowing", ex);
+ }
+ throw new SAXException("Exception writing image", ex);
+ }
+ }
+
+ /**
+ * Return the MIME type.
+ */
+ public String getMimeType() {
+ return mimetype;
+ }
+
+ /**
+ * Generate the unique key.
+ * This key must be unique inside the space of this component.
+ * This method must be invoked before the getValidity() method.
+ *
+ * @return The generated key or <code>0</code> if the component
+ * is currently not cacheable.
+ */
+ public java.io.Serializable getKey() {
+ return "1";
+ }
+
+ /**
+ * Generate the validity object.
+ * Before this method can be invoked the getKey() method
+ * must be invoked.
+ *
+ * @return The generated validity object or <code>null</code> if the
+ * component is currently not cacheable.
+ */
+ public SourceValidity getValidity() {
+ return NOPValidity.SHARED_INSTANCE;
+ }
+
+ /**
+ * Returns true so the pipeline implementation will buffer generated
+ * output and write content length to the response.
+ * <p>Batik's PNGTranscoder closes the output stream, therefore we
+ * cannot pass the output stream directly to Batik and have to
+ * instruct pipeline to buffer it. If we do not buffer, we would get
+ * an exception when
+ * {@link org.apache.cocoon.Cocoon#process(org.apache.cocoon.environment.Environment)}
+ * tries to close the stream.
+ */
+ public boolean shouldSetContentLength() {
+ return true;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/transformation/FragmentExtractorTransformer.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/transformation/FragmentExtractorTransformer.java
new file mode 100644
index 0000000..634c57f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/transformation/FragmentExtractorTransformer.java
@@ -0,0 +1,479 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.transformation;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+import org.apache.avalon.excalibur.pool.Recyclable;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.sax.XMLSerializer;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.util.HashUtil;
+
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.source.impl.validity.NOPValidity;
+import org.apache.excalibur.store.Store;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * The transformation half of the FragmentExtractor.
+ *
+ * This transformer recieves an incoming stream of xml and replaces
+ * fragments with an fragment extractor locator pointing to the fragments.
+ *
+ * The extracted fragments are identified by their element name and namespace URI.
+ * The default is to extract SVG images ("svg" elements in namespace
+ * "http://www.w3.org/2000/svg"), but this can be overriden in the configuration:
+ * <pre>
+ * <extract-uri>http://my/namespace/uri</extract-uri>
+ * <extract-element>my-element</extract-element>
+ * </pre>
+ *
+ * Fragment extractor locator format is following:
+ * <pre>
+ * <fe:fragment xmlns:fe="http://apache.org/cocoon/fragmentextractor/2.0" fragment-id="..."/>
+ * </pre>
+ *
+ * @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
+ * @version CVS $Id: FragmentExtractorTransformer.java,v 1.10 2004/03/05 13:01:46 bdelacretaz Exp $
+ */
+public class FragmentExtractorTransformer extends AbstractTransformer
+ implements CacheableProcessingComponent, Configurable, Serviceable, Disposable, Recyclable {
+
+ public static final String FE_URI = "http://apache.org/cocoon/fragmentextractor/2.0";
+
+ private static final String EXTRACT_URI_NAME = "extract-uri";
+ private static final String EXTRACT_ELEMENT_NAME = "extract-element";
+
+ private static final String EXTRACT_URI = "http://www.w3.org/2000/svg";
+ private static final String EXTRACT_ELEMENT = "svg";
+
+ private String extractURI;
+ private String extractElement;
+
+ /** The ServiceManager instance */
+ protected ServiceManager manager;
+
+ private XMLSerializer serializer;
+
+ private Map prefixMap;
+
+ private int extractLevel;
+
+ private int fragmentID;
+
+ private String requestURI;
+
+ /**
+ * Configure this transformer.
+ */
+ public void configure(Configuration conf) throws ConfigurationException {
+ this.extractURI = conf.getChild(EXTRACT_URI_NAME).getValue(EXTRACT_URI);
+ this.extractElement = conf.getChild(EXTRACT_ELEMENT_NAME).getValue(EXTRACT_ELEMENT);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Extraction URI is " + this.extractURI);
+ getLogger().debug("Extraction element is " + this.extractElement);
+ }
+ }
+
+ /**
+ * Set the current <code>ServiceManager</code> instance used by this
+ * <code>Serviceable</code>.
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+ /**
+ * Recycle this component
+ */
+ public void recycle() {
+ if (this.manager != null) {
+ this.manager.release(serializer);
+ this.serializer = null;
+ }
+ super.recycle();
+ }
+
+ /**
+ * Release all resources.
+ */
+ public void dispose() {
+ recycle();
+ this.manager = null;
+ }
+
+ /**
+ * Setup the transformer.
+ */
+ public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException {
+ extractLevel = 0;
+ fragmentID = 0;
+ prefixMap = new HashMap();
+
+ this.requestURI = ObjectModelHelper.getRequest(objectModel).getSitemapURI();
+ }
+
+ /**
+ * Generate the unique key.
+ * This key must be unique inside the space of this component.
+ *
+ * @return "1"
+ */
+ public java.io.Serializable getKey() {
+ return "1";
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return NOPValidity object
+ * - if the input is valid the output is valid as well.
+ */
+ public SourceValidity getValidity() {
+ return NOPValidity.SHARED_INSTANCE;
+ }
+
+ /**
+ * Begin the scope of a prefix-URI Namespace mapping.
+ *
+ * @param prefix The Namespace prefix being declared.
+ * @param uri The Namespace URI the prefix is mapped to.
+ */
+ public void startPrefixMapping(String prefix, String uri)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.startPrefixMapping(prefix, uri);
+ prefixMap.put(prefix, uri);
+ } else {
+ this.serializer.startPrefixMapping(prefix, uri);
+ }
+ }
+
+ /**
+ * End the scope of a prefix-URI mapping.
+ *
+ * @param prefix The prefix that was being mapping.
+ */
+ public void endPrefixMapping(String prefix)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.endPrefixMapping(prefix);
+ prefixMap.remove(prefix);
+ } else {
+ this.serializer.endPrefixMapping(prefix);
+ }
+ }
+
+ /**
+ * Receive notification of the beginning of an element.
+ *
+ * @param uri The Namespace URI, or the empty string if the element has no
+ * Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param loc The local name (without prefix), or the empty string if
+ * Namespace processing is not being performed.
+ * @param raw The raw XML 1.0 name (with prefix), or the empty string if
+ * raw names are not available.
+ * @param a The attributes attached to the element. If there are no
+ * attributes, it shall be an empty Attributes object.
+ */
+ public void startElement(String uri, String loc, String raw, Attributes a)
+ throws SAXException {
+ if (this.extractURI.equals(uri) && this.extractElement.equals(loc)) {
+ extractLevel++;
+ fragmentID++;
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("extractLevel now " + extractLevel + ".");
+ }
+
+ try {
+ this.serializer = (XMLSerializer) this.manager.lookup(XMLSerializer.ROLE);
+ } catch (ServiceException se) {
+ throw new SAXException("Could not lookup for XMLSerializer.", se);
+ }
+
+ // Start the DOM document
+ this.serializer.startDocument();
+
+ Iterator itt = prefixMap.entrySet().iterator();
+ while (itt.hasNext()) {
+ Map.Entry entry = (Map.Entry)itt.next();
+ this.serializer.startPrefixMapping(
+ (String)entry.getKey(),
+ (String)entry.getValue()
+ );
+ }
+ }
+
+ if (extractLevel == 0) {
+ super.startElement(uri, loc, raw, a);
+ } else {
+ this.serializer.startElement(uri, loc, raw, a);
+ }
+ }
+
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * @param uri The Namespace URI, or the empty string if the element has no
+ * Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param loc The local name (without prefix), or the empty string if
+ * Namespace processing is not being performed.
+ * @param raw The raw XML 1.0 name (with prefix), or the empty string if
+ * raw names are not available.
+ */
+ public void endElement(String uri, String loc, String raw)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.endElement(uri, loc, raw);
+ } else {
+ this.serializer.endElement(uri, loc, raw);
+ if (this.extractURI.equals(uri) && this.extractElement.equals(loc)) {
+ extractLevel--;
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("extractLevel now " + extractLevel + ".");
+ }
+
+ if (extractLevel == 0) {
+ // finish building the fragment. remove existing prefix mappings.
+ Iterator itt = prefixMap.entrySet().iterator();
+ while (itt.hasNext()) {
+ Map.Entry entry = (Map.Entry) itt.next();
+ this.serializer.endPrefixMapping(
+ (String)entry.getKey()
+ );
+ }
+ this.serializer.endDocument();
+
+ Store store = null;
+ String id = Long.toHexString((hashCode()^HashUtil.hash(requestURI)) + fragmentID);
+ try {
+ store = (Store) this.manager.lookup(Store.TRANSIENT_STORE);
+ store.store(id, this.serializer.getSAXFragment());
+ } catch (ServiceException se) {
+ throw new SAXException("Could not lookup for transient store.", se);
+ } catch (IOException ioe) {
+ throw new SAXException("Could not store fragment.", ioe);
+ } finally {
+ this.manager.release(store);
+ this.manager.release(this.serializer);
+ this.serializer = null;
+ }
+
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Stored document " + id + ".");
+ }
+
+ // Insert ref.
+ super.startPrefixMapping("fe", FE_URI);
+ AttributesImpl atts = new AttributesImpl();
+ atts.addAttribute("", "fragment-id", "fragment-id", "CDATA", id);
+ super.startElement(FE_URI, "fragment", "fe:fragment", atts);
+ super.endElement(FE_URI, "fragment", "fe:fragment");
+ super.endPrefixMapping("fe");
+ }
+ }
+ }
+ }
+
+ /**
+ * Receive notification of character data.
+ *
+ * @param c The characters from the XML document.
+ * @param start The start position in the array.
+ * @param len The number of characters to read from the array.
+ */
+ public void characters(char c[], int start, int len)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.characters(c, start, len);
+ } else {
+ this.serializer.characters(c, start, len);
+ }
+ }
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * @param c The characters from the XML document.
+ * @param start The start position in the array.
+ * @param len The number of characters to read from the array.
+ */
+ public void ignorableWhitespace(char c[], int start, int len)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.ignorableWhitespace(c, start, len);
+ } else {
+ this.serializer.ignorableWhitespace(c, start, len);
+ }
+ }
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if none was
+ * supplied.
+ */
+ public void processingInstruction(String target, String data)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.processingInstruction(target, data);
+ } else {
+ this.serializer.processingInstruction(target, data);
+ }
+ }
+
+ /**
+ * Receive notification of a skipped entity.
+ *
+ * @param name The name of the skipped entity. If it is a parameter
+ * entity, the name will begin with '%'.
+ */
+ public void skippedEntity(String name)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.skippedEntity(name);
+ } else {
+ this.serializer.skippedEntity(name);
+ }
+ }
+
+ /**
+ * Report the start of DTD declarations, if any.
+ *
+ * @param name The document type name.
+ * @param publicId The declared public identifier for the external DTD
+ * subset, or null if none was declared.
+ * @param systemId The declared system identifier for the external DTD
+ * subset, or null if none was declared.
+ */
+ public void startDTD(String name, String publicId, String systemId)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.startDTD(name, publicId, systemId);
+ } else {
+ throw new SAXException(
+ "Recieved startDTD after beginning fragment extraction process."
+ );
+ }
+ }
+
+ /**
+ * Report the end of DTD declarations.
+ */
+ public void endDTD()
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.endDTD();
+ } else {
+ throw new SAXException(
+ "Recieved endDTD after beginning fragment extraction process."
+ );
+ }
+ }
+
+ /**
+ * Report the beginning of an entity.
+ *
+ * @param name The name of the entity. If it is a parameter entity, the
+ * name will begin with '%'.
+ */
+ public void startEntity(String name)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.startEntity(name);
+ } else {
+ this.serializer.startEntity(name);
+ }
+ }
+
+ /**
+ * Report the end of an entity.
+ *
+ * @param name The name of the entity that is ending.
+ */
+ public void endEntity(String name)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.endEntity(name);
+ } else {
+ this.serializer.endEntity(name);
+ }
+ }
+
+ /**
+ * Report the start of a CDATA section.
+ */
+ public void startCDATA()
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.startCDATA();
+ } else {
+ this.serializer.startCDATA();
+ }
+ }
+
+ /**
+ * Report the end of a CDATA section.
+ */
+ public void endCDATA()
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.endCDATA();
+ } else {
+ this.serializer.endCDATA();
+ }
+ }
+
+ /**
+ * Report an XML comment anywhere in the document.
+ *
+ * @param ch An array holding the characters in the comment.
+ * @param start The starting position in the array.
+ * @param len The number of characters to use from the array.
+ */
+ public void comment(char ch[], int start, int len)
+ throws SAXException {
+ if (extractLevel == 0) {
+ super.comment(ch, start, len);
+ } else {
+ this.serializer.comment(ch, start, len);
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/xml/dom/SVGBuilder.java b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/xml/dom/SVGBuilder.java
new file mode 100644
index 0000000..fbb2dd7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/java/org/apache/cocoon/xml/dom/SVGBuilder.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.xml.dom;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.excalibur.pool.Recyclable;
+
+import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
+import org.apache.batik.dom.svg.SVGDOMImplementation;
+
+import org.apache.cocoon.xml.XMLConsumer;
+
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+import org.xml.sax.Locator;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * The <code>SVGBuilder</code> is a utility class that will generate a
+ * SVG-DOM Document from SAX events using Batik's SVGDocumentFactory.
+ *
+ * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
+ * @version CVS $Id: SVGBuilder.java,v 1.7 2004/03/05 13:01:47 bdelacretaz Exp $
+ */
+public class SVGBuilder extends SAXSVGDocumentFactory implements XMLConsumer, LogEnabled, Recyclable {
+ protected Logger log;
+
+ protected Locator locator;
+
+ private static final String SAX_PARSER
+ = "org.apache.xerces.parsers.SAXParser";
+
+ /**
+ * Construct a new instance of this TreeGenerator.
+ */
+ protected SVGBuilder() {
+ super(SAX_PARSER);
+ }
+
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger the logger
+ */
+ public void enableLogging(Logger logger) {
+ if (this.log == null) {
+ this.log = logger;
+ }
+ }
+
+ protected Logger getLogger() {
+ return this.log;
+ }
+
+ /**
+ * Return the newly built Document.
+ */
+ public Document getDocument() {
+ return super.document;
+ }
+
+ /**
+ * Receive notification of the beginning of a document.
+ *
+ * @exception SAXException If this method was not called appropriately.
+ */
+ public void startDocument() throws SAXException {
+ try {
+ // Create SVG Document
+ String namespaceURI = SVGDOMImplementation.SVG_NAMESPACE_URI;
+ super.document = implementation.createDocument(namespaceURI, "svg", null);
+ super.startDocument();
+ // Add svg, and SVG_NAMESPACE to SAXDocumentFactory namespace handling.
+ // This ties 'svg' prefix used above to the svg namespace uri.
+ namespaces.put("svg", SVGDOMImplementation.SVG_NAMESPACE_URI);
+ } catch (SAXException se) {
+ throw se;
+ } catch (Exception ex){
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Got exception in startDocument, rethrowing", ex);
+ }
+ throw new SAXException("Exception in startDocument", ex);
+ }
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ this.locator = locator;
+ super.setDocumentLocator(locator);
+ }
+
+ /**
+ * Receive notification of the beginning of a document.
+ *
+ * @exception SAXException If this method was not called appropriately.
+ */
+ public void endDocument() throws SAXException {
+ try {
+ super.endDocument();
+
+ // FIXME: Hack.
+ URL baseURL = null;
+ try {
+ if (this.locator != null) {
+ baseURL = new URL(this.locator.getSystemId());
+ } else {
+ baseURL = new URL("http://localhost/");
+ getLogger().warn("setDocumentLocator was not called, will use http://localhost/ as base URI");
+ }
+ ((org.apache.batik.dom.svg.SVGOMDocument)super.document).setURLObject(baseURL);
+ } catch (MalformedURLException e) {
+ getLogger().warn("Unable to set document base URI to " + baseURL + ", will default to http://localhost/", e);
+ ((org.apache.batik.dom.svg.SVGOMDocument)super.document).setURLObject(new URL("http://localhost/"));
+ }
+
+ notify(super.document);
+ } catch (SAXException se) {
+ throw se;
+ } catch (Exception ex){
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Got exception in endDocument, rethrowing", ex);
+ }
+ throw new SAXException("Exception in endDocument", ex);
+ }
+ }
+
+ /**
+ * Receive notification of a successfully completed DOM tree generation.
+ */
+ protected void notify(Document doc) throws SAXException {
+ }
+
+ public void recycle() {
+ locator = null;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/lib/batik-all-1.5.jar b/ASF_20_SRC_AUTO/src/blocks/batik/lib/batik-all-1.5.jar
new file mode 100755
index 0000000..626d00c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/lib/batik-all-1.5.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/anne.svg b/ASF_20_SRC_AUTO/src/blocks/batik/samples/anne.svg
new file mode 100755
index 0000000..d9ecc07
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/anne.svg
@@ -0,0 +1,694 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+
+<!-- ========================================================================= -->
+<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
+<!-- -->
+<!-- This software is published under the terms of the Apache Software License -->
+<!-- version 1.1, a copy of which has been included with this distribution in -->
+<!-- the LICENSE file. -->
+<!-- ========================================================================= -->
+
+<!-- ========================================================================= -->
+<!-- Anne's portrait, Hommage a Andy Wahrol -->
+<!-- -->
+<!-- @author vincent.hardy@eng.sun.com -->
+<!-- @version $Id: anne.svg,v 1.1 2003/05/07 19:15:02 vgritsenko Exp $ -->
+<!-- ========================================================================= -->
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="450" height="500" viewBox="0 0 450 500">
+ <!-- ============================================================= -->
+ <!-- Test content -->
+ <!-- ============================================================= -->
+ <svg x="95" y="55" width="260.8" height="386.4" xml:space="preserve" viewBox="0 0 217.325 322.0105" >
+ <g transform="scale(.5, .5)">
+ <g id="Layer_x0020_3" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <rect x="0" y="0" width="434.65" height="644.021" style="fill:#92cacc; stroke:none;" />
+ </g>
+ <g id="Layer_x0020_2" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#3398C3;stroke:none;" d="M204.707,76.849c-22.905-0.454-49.539,18.906-67.914,31.164c-20.364,13.585-36.661,24.707-51.752,44.126c-12.731,16.382-25.785,43.279-25.974,64.202
+ c-0.201,22.224,15.014,47.022,20.852,67.903c5.755,20.584,12.057,41.07,17.959,61.056c3.993,13.52,0.808,18.634-2.405,31.872c-3.621,14.919-2.348,23.878,2.816,37.194c12.581,32.445-0.7,104.96,46.831,109.204c17.512,1.563,54.708,6.939,70.492-0.838
+ c16.895-8.324,28.268-50.207,31.088-67.825c4.064-25.402,0.883-44.321,17.926-65.775c8.02-10.094,17.768-18.147,25.277-28.87c7.195-10.272,10.475-22.41,17.922-32.246c-2.342,2.225-4.652,4.372-6.781,6.812c9.965-5.222,18.066-21.033,25.156-29.985
+ c9.076-11.457,18.66-18.24,30-27.004c30.158-23.309,25.908-54.55,9.027-85.495c-9.188-16.844-22.373-28.952-36.438-42.444c-13.357-12.813-21.271-28.466-34.135-41.475C282.432,96.064,264.1,82.28,246.788,78.281c-11.227-2.593-39.372-7.319-49.581-2.933"/>
+ </g>
+ <g id="Layer_x0020_1" style="fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M375.875,54.692c3.1-2.4,4.801-1.101,5,4.1c2.885,5.943,2.848,12.888-0.1,18.8c-1.199-5.5-3-10.1-6-13.8c-0.4-3.3-0.199-5.3,0.1-7l1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M379.776,88.092c1.018,5.238,0.352,10.663-1.9,15.5c0-4.2,0-8.5,0.1-12.8l1.801-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M236.776,76.092c0.6,0.2-0.9,1.9-4.699,4.8c-3.801,2.9-3.801,4.4-0.201,4.4c3.701,0,5,0.5,4,1.5c-3,0.1-5,0.5-7,0.9c-2.1,0.5-3.6,1.699-4.6,3.399c-1,1.8-0.6,2.9,1.4,3.3
+ c1.9,0.301,3.8,0.9,5.5,1.801c1.699,0.899,1.5,2.199-0.6,3.899c-2,1.7-2,2.7,0.1,3s4.1,0,5.9-0.899c1.899-0.9,3.699-1,5.6-0.301c1.9,0.601,3.8,1,5.8,1.101c2,0.2,3.601,0.5,4.601,1c1.1,0.5,2.6,1.3,4.6,2.3s3.9,1.8,5.699,2.2c1.9,0.5,3.5,1.2,5.101,2
+ c1.5,0.899,2.8,1.7,3.8,2.6c1.1,0.9,2.801,2.101,5.1,3.7c3.9,3.8,1.9,4.1-5,1.7c-6.899-2.4-5.899,0,3,7.3l21,14c2.5,0.9,4.301,2,5.4,3.2c1.1,1.3,2.9,2.5,5.301,3.7c2.399,1.199,4.5,3.5,6.299,7.1c9.201,10.8,16.201,19.5,22,27c0.6,3.1,1.6,4.9,3.1,6.4
+ s2.301,3.6,2.5,6.199c0.102,2.601,0.4,5.101,0.9,7.4c0.5,2.2,1.201,4.6,2.201,7c1,2.5,1,4.9,0,7.1c-0.9,2.301-1.102,4.5-0.602,6.5s1.301,1.7,2.301-1c1-2.6,1.301-5,0.9-7c-0.5-2.1-0.6-4.699-0.5-7.8c0.199-3.1,0.6-3.5,1.4-1.1c0.699,2.399,1.1,4.8,1,7.3
+ c-0.102,2.4,0.398,4.7,1.199,7.1c0.9,2.4,1.5,4.7,1.6,7.101c0.201,2.399,0.5,4.8,1,7.2c0.5,2.3,0.9,4.899,1,7.6c2.336-8.849,2.336-18.151,0-27c-0.299-3.7-1.1-6.7-2.4-9.9c-1.299-3.199-2-5.699-2.1-7.6s0.701-0.8,2.5,3.1c1.701,4,2.701,6.801,2.9,8.4
+ c4.301,9.8,6.6,19.4,7,30l-0.9,28.7c1.6-11,2.6-18.9,3.1-23.7c-0.1-1.9-0.1-4.6-0.199-7.3c0-2.7-0.199-6-0.6-9.8c-0.301-3.9-0.201-4.4,0.5-1.601c0.6,2.9,1.299,6,2,9.3c0.699,3.4,1.4,3.5,2.199,0.4c0.6-6.1,1.201-7,1.801-3.7s0.799,6.5,0.5,9.601
+ c-0.301,3.1-0.5,6.8-0.4,11.1c0.801,1.8,1.199,1.1,1.301-1.2c0.199-2.3,0.699-3.8,1.699-4.6c0.9-0.8,1,0.1,0.4,2.8c-0.6,2.6-0.301,3.4,1.1,2.4s1.801-0.301,1.4,2.1c-0.301,2.3-0.6,4.2-0.801,5.5c1.9,1.8,2.4,3.3,1.6,5.6c-0.799,2.2-1.199,4.2-1.199,5.7
+ c0,1.601,0.699,1.2,2-1c1.301-2.3,1.6-1.7,0.801,1.8c-0.801,3.5-1.801,5.101-3.201,4.9c-0.5,2.6-0.799,4.4-1.1,6.4c-0.199,2-0.9,3.6-2,4.8c-1.199,1.2-2.199,3.399-3.199,6.6c-0.9,3.101-0.5,3.8,1.1,2s2.5-1.899,2.6-0.5c0,1.5-0.4,3.101-1.4,4.9
+ c-0.9,1.7-1.9,3.6-2.799,5.5c-0.9,2-1.701,3.899-2.602,5.899c-0.799,2-1,4.101-0.6,6.4c-7.898,8.809-7.941,22.141-0.1,31c-0.9,3.9-2.9,5.6-6,6.1c-3.199,0.601-3.4,2-0.801,4.301c2.602,2.199,1.9,4.399-2.1,6.6c-3.799,2.1-4.799,4-3.799,5.7s1.699,4,2.299,6.7
+ c0.6,2.8-0.6,4.6-3.5,5.5c-2.799,1-5.5,3.3-8,7.1c-3.699,2-6.299,2.8-9,3.5c-2.699,0.6-4.199-0.4-4.4-3.1c-0.199-2.601-0.5-1.4-0.699,3.8c-2.4,1.2-4.699,1.399-7,1.2c-2.301-0.301-2.6-1.801-0.801-4.601c1.701-2.8,2.4-5.3,2-7.399c-0.398-2,0-4.2,1-6.4
+ c2.5-4.3,2.102-5.7-0.299-5.1c-2.5,0.5-3.5-0.301-3.1-2.5c0.5-2.2,0.398-4.601-0.301-7.4c-0.801-2.8-0.4-3.8,1-3.2c1.5,0.601,3.1,1.601,5,3.2s1.699,0.9-0.5-1.9c-2.301-2.8-3.6-5.1-4-6.699c-0.5-1.7-1.1-3.7-2-6.2c-0.9-2.4-1.801-3.601-2.6-3.5
+ c-0.9,0.1-0.9,1.6-0.201,4.3c0.801,2.8,1.201,5.1,1.301,6.9c0.1,1.899,0,3.899-0.4,6c-0.299,2.1-0.1,4.3,0.701,6.6c0.898,2.2,0.5,4.1-1.201,5.5c-1.6,1.5-2.5,3.5-2.6,6.2s0.699,3.2,2.301,1.5c1.699-1.601,2.6-3.5,3-5.601c0.543,7.843-0.938,15.694-4.301,22.801
+ c-2,0.8-3.4,1.3-5,1.6c-1.5,0.2-3.4,0.5-5.5,0.8c-2.1,0.4-4.8,1.9-8,4.601c-3.199,2.699-3.699,4-1.5,3.899c2.2-0.1,2.9,0.601,2.1,2.101c-2.899,0.1-4.5-0.2-5.799-0.5c-1.4-0.4-3-0.2-4.701,0.6c-1.799,0.8-3.199,0.7-4.199-0.3s-0.7-1.8,1-2.5
+ c1.699-0.7,3.3-1.4,4.8-2c1.5-0.7,2.101-1.601,1.8-2.7c-0.4-1.2-1.4-2-3.199-2.6c-1.801-0.5-3.4-0.101-5,1.3c-1.5,1.399-2.801,2.3-3.801,2.6s-2.1,0.2-3.4-0.2c-1.199-0.5-2.6-1.3-3.899-2.6c-1.399-1.4-2-0.8-1.8,1.6c0.1,2.5,0.9,4.2,2.199,5.301l25,24
+ c8.867,4.33,16.973,10.072,24,17c8.201,3,16.5,6.399,26,10.199c11.396,2.678,22.23,7.35,32,13.801c9.811,3.25,18.719,8.766,26,16.1c1.701,3.6,1.1,3.8-0.9,1.6c-2-2.199-4-4.199-6-5.8c-1.898-1.7-4.1-3.1-6.5-4.3c-2.398-1.1-3.6-1-3.5,0.3
+ c0.102,1.4,1.602,2.5,4.5,3.5c2.9,1.101,4.5,2.7,4.701,4.9c0.299,2.2,1.4,3.2,3.6,2.899c2.199-0.399,3.6,0.601,4.4,2.801c0.799,2.199,2,4,3.5,5.399c1.6,1.4,3.1,3,4.5,4.8c1.4,1.801,1.799,1.601,1.299-0.6c-0.6-2.2-1.6-4-3.1-5.5s-2.699-3.2-3.5-5
+ c7.268,5.313,12.855,12.603,16.1,21c2.602,0,3.4,2,3,6.7c-0.299,4.7-0.299,8.8-0.1,12.3v65v26c2.4,9.8,0.1,15.1-7,16h-151h-25h-175h-30l-31.8-0.2l-0.2-137.8v-25v-25l1-25.9c11.1-5.6,21.8-11,32.2-16.1l26.8-19l31-21.1c4.9-1.801,6.9-3.801,6-6
+ c-0.9-2.301-2.6-2.101-5.1,0.399c-2.4,2.601-4.5,4.101-6.1,4.7c-1.3-2.1-2.8-2.5-5.2-0.4c-2.5,2.101-4.7,3.5-6.6,4.2c-2,0.8-4.7,0.8-8,0.101c-3.3,0.1-5-0.601-6-1.9c-1.1-1.3-2.2-1.8-3.4-1.4c-1.2,0.301-2.2-0.6-2.9-2.6c-0.6-2.1-1.5-3.5-2.4-4.3
+ c-1-0.7-2-1.4-3.3-2c-1.2-0.5-2-1.5-2.5-2.8c-0.6-1.301-1.8-2.2-3.9-2.801c-2.1-0.6-3.8-1.3-5.3-2.1c-1.4-0.9-3.2-1.3-5.5-1.3c-2.3-0.101-4-1-5.3-2.8c-1.2-1.801-2.7-2.601-4.4-2.4c-1.8,0.1-3.5-0.2-5.2-0.9c-1.6-0.8-3-1.6-4.1-2.5c-1-0.899-2.7-1.8-5-2.6
+ c-2.4-0.9-4.3-1.3-5.8-1.4l-1-32.1v-30c-1.3-3.6-0.5-4.9,2.4-3.9c3,1,4.3,0.4,4.1-1.6s0.2-2.3,1.2-0.8c1.1,1.5,2.8,2.6,5.3,3.3c0.6,2.3,1.6,3,3.8,2.3c2.2-0.8,4.1-1,5.7-0.7c1.7,0.4,3.2,0.2,4.6-0.8c1.5-1,2.7-0.2,3.9,2.2c0.7,3.4,1.4,5.7,2.1,7.8
+ c0.7,2.101,0.4,5.2-1,9.2s-1.4,3-0.3-3c-4.1-0.2-5.4,1.2-4.8,3.5c0.7,2.2,1.8,4.9,3.4,8.1c1.7,3.2,2.5,3.101,2.4,0c-0.1-3.199,1-3.399,3.2-0.6c6.4-2.5,9.9-5.8,11.5-10.1c1.6-4.301,1.1-8.5-1.5-12.7c1.1-1.8,0.5-3.8-0.7-5.5c-1.2-1.8-1.5-3.601-0.7-5.4
+ c0.7-1.8,0.4-3.8-1-6s-1.9-1.7-1.3,1.5c0.5,3.101,0.7,5.5,0.5,7.2c-0.4,2.6-0.2,4.1-0.1,5.5c0.1,1.4-0.7,1.9-2.5,1.5c-1.7-0.4-3.1-0.2-4.3,0.6c-1.1,0.7-2.4,0-3.8-2.1s-1.8-3.7-1.3-4.6c0.6-0.9,0.6-1.7,0-2.4c-0.6-0.6-1.1-1.6-1.7-2.9c-0.6-1.3-1.2-1.6-2-0.899
+ c-0.9,0.6,0.1-0.601,2.8-3.7c1.2-3,1.5-2.6,1,0.2c-0.4,2.899,0.2,4.399,2,4.8c1.8,0.4,2-0.1,0.4-1.3c-1.5-1.3-1.6-2.7-0.3-4.2c1.4-1.5,2.9-2.2,4.6-2.3c1.6,0,3.2-1.101,4.6-3.2c-1.456-8.635-1.184-17.472,0.8-26c2.1-3.9,2.2-4.1,1.2-1.6s-0.5,3.699,1.5,3.5
+ c1.9-0.2,2.7-1.301,2.4-3.301c-0.4-2,0.3-3.6,2.1-5c1.8-1.3,2.4-2.199,1.8-2.6c2.1-5.8,4.5-10.9,7.5-16.4c3-5.6,3.2-3.699,0.6,5.4c3.5,3.6,5.5,2.7,6.8-1.6c1.3-4.2,2.3-5.4,3.1-3.601c0.7,1.8-0.1,4.2-2.3,7.101c-2.3,2.899-1.8,3.899,1.5,3.1
+ c2.2-4,3.2-6.1,3.8-7.1s1.8-3.101,3.5-6.4c1.6-3.3,2.8-4.1,3.4-2.3s1.5,1.399,2.6-1.3c1.2-2.601,2-4.801,2.5-6.601c0.5-1.7,1.3-2.899,2.4-3.5c1.1-0.6,2.3-2.2,3.6-4.8c0.5-3.2,1.3-5,2.6-6.3c1.2-1.3,2.3-2.4,3.2-3.101c0.9-0.8,2.1-2.399,3.6-4.8
+ c1.5-2.399,2.2-2.6,1.8-0.6c-0.3,2.1,0.6,2.6,2.6,1.8c-0.1-3.8,0.7-6.8,2.7-10c2-3.1,3.4-5,4.3-5.7c0.9-0.8,1.9-2.6,3-5.5c3.9-4.399,5-3.399,3.5,2.4c-1.5,5.7-3.6,8.899-6.4,9.6c-2.2,2.101-2.5,3.3-1.8,3.8c0.7,0.5,0.3,1.4-1.3,2.7c-1.6,1.4-2.7,2.601-3.4,3.9
+ c-0.6,1.2-1.5,2.8-2.5,4.899c-1.1,2.101-2.1,4.4-3.1,6.9c-1.5,3-2.8,5.6-4.7,8.6c-1.9,3.101-2.9,5.601-3,7.5c-0.2,2,1,0.9,3.3-3.199c2.4-4.101,4.2-6.7,5.4-7.9c2.7-3.2,3.7-4.9,3.3-6.1c-0.4-1.2,0.4-3.301,2.4-6.4s3.9-6.1,5.7-9c1.8-2.9,3.9-5.9,6.4-9.1
+ c2.6-3.2,4.7-5.601,6.6-7.2c1.8-2.8,2.8-4.601,4-5.7c1.3-1,3-2.8,5.4-5.4c2.3-2.699,4.3-4.899,5.9-6.699c1.6-1.801,3.6-3.7,6.2-5.9c2.6-2.1,3.6-1.8,3.2,0.8c-0.5,2.601-0.3,4.101,0.5,4.601c0.8,0.5,0.3,2-1.5,4.3c-1.7,2.399-3.5,4.7-5.4,6.899
+ c-1.8,2.2-3.4,4.2-4.6,6c-1.3,1.7-2.4,3.801-3.4,6.101c-0.9,2.3-1.2,3.6-0.6,4c-6.054,9.716-10.164,20.517-12.1,31.8l-4.8,25c0.8,1,1.1,2.7,0.8,5.2c-0.2,2.5,0.1,3.8,1.1,4s1.3-1.101,1-3.7c-0.2-2.7-0.3-4.5-0.3-5.5c0.1-1,0.4-2.6,0.9-4.9
+ c0.5-2.399,0.8-3.6,1-3.699c0.2-0.101,0.8-0.601,1.7-1.4c2.2-9,4.4-16.7,6.7-24c2.616-11.143,7.371-21.67,14-31c2.2-1.3,3.8-2.4,4.9-4.2c1.2-1.8,2.4-3.6,3.7-5.2c1.3-1.6,2.8-2.8,4.4-3.3c1.7-0.6,3.2-1.899,4.4-3.8c1.3-2,2.2-2,2.6-0.1c0.4,2-0.5,3.5-2.8,4.5
+ c-2.2,1-3,2.199-2.2,3.6c0.8,1.4,0.2,3.2-1.7,5.4c-1.9,2.199-2.7,4-2.3,5.3c0.3,1.399,0,3.3-0.9,5.8c-4.76,8.673-7.815,18.178-9,28c-0.7,3.1-1.3,5.9-2.7,9.4c-1.3,3.399-1.5,5.899-0.7,7.399c0.9,1.5,2-0.5,3.4-5.8c0.962-10.939,4.344-21.528,9.9-31
+ c3.6-8.7,8-16.1,13.2-23c2.6-3.3,5.1-5.8,8.3-8.4c3.3-2.6,3.7-2,1.4,1.801c-2.3,3.8-4.2,6.699-5.7,8.6c-1.5,4.6-0.6,8.4,2.7,12.6c3.3,4.2,3.6,8,1.1,11.2c-5.5,7.7-8.8,15.601-11,24.2c-2-2.1-2.7-1.8-3,0.1c-0.3,1.9-1.8,2.9-4.6,3c-2.7,0.101-4,1.601-3.7,4.601
+ c0.3,3,1.6,3.899,3.9,2.899s4.4-1.6,6.4-1.6c0.1-1.6,1.9-0.7,5.6,1.5c3.7,2.3,7.4,3.3,10.9,3.1c3.5-0.199,6.7,0.9,9.6,3.4c3,0.3,5.2,1,7.5,2c2.4,1,4.1,2,5.2,3c1.2,1.1,2.2,2.7,3,4.9c0.8,2.199,0.8,4.3-0.2,6.1c-0.9,1.9-0.4,3.3,1.6,4.3s2.9,2.9,2.7,5.601
+ c-0.3,2.8-0.2,5.1,0.2,7.1c0.4,2.9-0.3,4.3-2,5c-1.7,0.8-3.1,0.9-4.3,0.3c-1.1-0.5-2.3-1.5-3.5-2.899c-1.3-1.5-2.9-2.2-5-2.301c-2.1,0-3.6-0.6-4.6-1.8c-1-1.1-2.2-2.3-3.5-3.5c-2.4-5.2-4.2-6.2-5.5-3.8c-1.4,2.5-3,3.6-4.8,3.3c-1.8-0.2-3.8-0.7-5.9-1.399
+ c-2.1-0.7-4.1-1.301-6-1.7c-1.9-0.4-2.5,0.399-1.8,2.6c0.7,2.2,1,4.4,0.9,6.7c-0.1,2.4-0.5,3.6-1.2,3.7c-0.6,0.1-2.2-0.8-4.8-2.601c-2.5-1.899-4.5-3.1-6-3.8c-1.6-0.8-3.5-1.5-5.8-2.399c-2.2-0.801-4.5-1-6.6-0.4c-2.2,0.5-3.9,0.8-5.2,0.7c-1.3,0-2.2,1-2.8,2.899
+ c-0.6,1.9-1.7,3.101-3.3,3.7c-1.7,0.601-3.5,1.8-5.5,3.7c-2,1.8-3.6,3.5-4.9,5.2c-1.3,1.7-2.9,3.7-4.9,5.8c0.881,10.76-0.134,21.591-3,32l-2.9,28c0.125,8.963,2.064,17.807,5.7,26c-0.347,9.161-2.958,18.094-7.6,26c-1.592,9.02-0.94,18.292,1.9,27
+ c2.801,10.72,7.509,20.849,13.9,29.9c3.2-0.7,4.3-0.5,4.3,0.8c0.1,1.3,0.7,2.2,1.8,2.7c1,0.399,1.5,1.399,1.4,3c-0.2,1.6,0.9,1.899,3.2,0.899c2.2-1,2.9,0.2,2.2,3.7c3.1,9.8,5.4,19.8,7.1,31c-1.2,10.5-4.2,16.5-9,19l2.9,25.9c-0.2,8.1,4.3,12.899,13.2,14.1
+ c4.9,0.2,8.6,1,12.1,3.4c3.5,2.3,7.1,3.699,10.7,4.199c3.7,0.5,7.4,0.301,11.1-0.6c6-0.2,10.3-1.4,14-3.4c3.8-2,7.5-4.5,11.1-7.5c3.7-1.899,5.3-4.5,5.7-7.8c0.4-3.399-0.6-3.899-2.9-1.6c-2.4,2.2-4.4,3.899-6.1,5c-1.7,1.1-1-0.2,2.1-3.7c2.3-3.5,3.5-6,4.1-8.5
+ c0.5-2.5,1.6-3.8,3.3-4c1.6-0.1,2.6-2.1,2.9-5.9c0.299-3.8,0.1-4.8-0.701-3.1c-0.699,1.6-1.399,3.7-2,6c-0.699,2.4-1.1,1.8-1.5-1.7c-0.299-3.6,0-5.899,0.801-6.8c0.3-11.8,4.199-21.5,11.199-30l12.101-24c4.868-8.712,8.247-18.176,10-28
+ c0.872-8.532,2.892-16.907,6-24.9c9.2-6.699,16.101-13.6,21.8-21.1c6.172-8.771,10.68-18.601,13.301-29c0.6-0.7,1.1,0.3,2.399,2.2c1.399,1.899,2.8,1.8,4.399-0.2c1.5-1.9,2.601-3.3,3.201-4.2c0.6-0.8,0.199-2.7-1.101-5.7c-1.399-2.899-2.3-3-3-0.1
+ c1.8,1.9,1.8,3.5,1,5.6c-0.8,2.2-1.2,2.2-1.2,0.2c-0.1-2.1-0.8-2.5-2.3-1.2c-1.399,1.4-1.899,1-1.5-1.199c0.399-2.101,1-3.9,1.899-5.301c0.9-1.399,1.5-3,1.9-4.699c0.4-1.801,1.1-3.2,2.2-4.4c4.432-10.75,6.116-22.436,4.899-34c-0.199-4-1.6-6-4.299-6.9
+ c-2.601-1-5.101-2.6-7.4-5c-2.2-2.399-4.301-3.899-6.4-4.699c-2-0.7-3.8-2.7-5.4-6.101c-1.6-3.399-3-3.7-4-0.8c-1.1,2.9-2.799,4.1-4.899,3.6c-2.2-0.6-4.5-1.3-7-2.3s-5.101-1.6-7.8-1.7c-2.6-0.1-4.7-0.899-6.2-2.199c-1.5-1.4-3.3-2.9-5.3-4.4
+ c-2.1-1.5-2.2-3.6-0.301-6.2c1.9-2.7,3.9-3.7,6.101-3.1c2.101,0.6,4,1.3,5.8,1.899c1.801,0.7,4.2,0.7,7.1-0.1c9.753,1.132,18.893,5.334,26.101,12c2.2,3.5,3.399,6,4.7,8.1c1.3,2.2,2.8,1.301,4.699-2.6c1.801-4,2.701-6.5,2.5-7.6c-0.399-2.2-1.6-4.5-2.799-7.9
+ c-1.301-3.4-0.801-4.7,1.399-3.9c2.3,0.9,3.399-0.199,3.601-3.1c0.1-2.9-0.301-5.3-1.101-7c0.7-2.4,1-4.7,1.101-7.8c0.1-3-0.9-3.7-3.101-2c-2.101,1.8-3.3,2-3.601,0.6c-0.299-1.3-0.399-3.1-0.5-5.399c-0.1-2.301-0.399-3.7-1-4.301c-0.5,2.2-0.699,3.9-1.6,5.9
+ c-0.8,2.1-1.3,1.7-1.6-1.2c-0.2-2.8-0.801-3-1.7-0.399c-1,2.5-1.2,4.199-0.7,5c0.5,0.899,1.1,1.3,1.801,1.399c0.699,0.101,0,1.5-2.101,4.2c-0.101-9.2,0.3-19.4,0.899-29.7c-1.699,3.4-2.6,5.2-3.6,5.9s-1.9,1.7-2.699,2.899c-0.701,1.2-1,0.4-0.801-2.399
+ c0.2-2.8,0.2-5.2,0.1-7.101c-0.1-1.8-0.1-3.899,0-6.199c0.201-2.2,0.101-4.4-0.199-6.5c-0.301-2.101-0.6-4-0.9-5.9c-6.3-9.5-10-17.8-11.9-26c-0.899-2.5-1.799-4.1-2.799-5.9c-1-1.8-1.701-2-2.101-0.5c-0.399,1.601-0.399,3.601,0.101,6.301
+ c0.5,2.6,0.399,3.8-0.101,3.6c-0.5-0.3-1.2-1.6-2-3.9c-0.7-2.3-1.3-4.5-1.7-6.5c-0.3-2-1-3.399-1.9-4.199c-1-0.801-2-2-3.199-3.601c-1.2-1.5-2.301-3.6-3.5-6.2c-1.1-2.6-2.301-3.399-3.6-2.5c-1.301,0.9-2,0.2-2-2.3c-0.101-2.399-0.601-4.2-1.701-5.3
+ c-1.1-1-1.5-2.1-1.199-3.2c0.3-1-1-1.3-3.801-1c-2.799,0.4-3.299,2.101-1.399,5c2.601,3.5,3.7,6.3,4.5,8.7c0.7,2.4,0.3,5.4-1.3,9c-1.5,3.6-2.301,4.4-2.301,2.5c-0.6-3.4-0.699-5.8-0.299-8c0.399-2.3-0.201-2.1-1.701,0.5c-1.6,2.6-2.799,4.5-3.5,5.7
+ c-0.699,1.3-0.6,0.2,0.301-3s1.9-5,3.199-5.3c0.601-2.9,0.201-4.5-0.299-5.801c-0.4-1.199-1-2.6-1.701-4.1c-0.699-1.5-1.5-0.8-2.299,2c-0.801,2.9-1.4,3.8-1.601,2.9c-0.3-1-0.3-2.7,0-5.101c0.2-2.399-0.101-3.399-1.101-3c-1.1,0.4-2.399,0.3-4.1-0.3
+ c-1.699-0.6-2.699-0.4-2.9,0.5c0.101-3.2,0.201-5.2,0.201-6.9c0.1-1.8-1-2.399-3.301-1.8c-2.3,0.601-4.199,0.9-5.699,1c-1.5,0-1.101-1.1,1.199-3.5c2.2-2.399,2.5-4,0.7-5c-1.8-1.1-2.899-0.6-3.399,1.2c-0.401,1.8-1.301,0.9-2.701-2.8c0.2-2.4,0.1-3.4-1-3.4
+ c-1.2,0-2.5-0.7-4-1.899c-1.5-1.2-2-2.801-1.6-4.9s1.5-3.1,3.2-3.1c1.7,0,1.9-1.101,0.5-3.301c-1.4-2.3-0.6-2.5,2.3-0.6s4.5,1.6,4.7-1c1.8-6,2.8-7.7,3.899-6.1c1.101,1.6,2.5,1.5,4.301-0.2c1.8-1.8,4-3.4,6.699-4.7l2.9-1.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M49.876,101.692c-0.7-1.7-0.5-2,0.7-0.801c1.3,1.101,2.3,1.301,3,0.7c0.7-0.6,1.1-0.2,1.3,1.101c0.1,1.399,0.1,2.399-0.1,3.1c0.5,1.5,1.2,2.9,1.3,5.2c0.1,2.399-0.8,3.7-2.7,3.899
+ c-2,0.101-2.8-1.199-2.5-3.899c-1.4-1.4-1-2.4,0.3-3.4c1.3-1,1.3-1.7-0.1-2.1c-1.3-0.4-1.7-1-1.2-1.7v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M174.776,113.092c0.5,1.101-1.1,2.8-4.9,4.9c-5.3,0.899-4.3-0.4,2-3.4l2.9-1.5z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M208.176,119.892c3.6-2.6,3.9-1.699,0.8,2.801l-0.8-2.801z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M139.876,122.692c4.6-1.9,5.5-0.4,2.8,4.399c-2.7,4.7-1.7,5.4,3.1,1.8l-9.9,14.9c-1.8-0.6-2.9-0.3-3.4,0.8c-0.4,1.101-1.6,2.9-3.3,5.4c-1.8,2.6-2.9,3.3-3.3,2.3s0-2.6,1.1-4.8
+ c1.2-2.3,1.2-2.9-0.1-1.9c0.5-4.3,2.5-5.2,5-2.8c1.9-3.9,1.6-4.7,0-3.3c-1.7,1.3-2.1,1.1-1.2-0.7c1.4-4.5,3-6.8,5.2-8c1-2.9,2-4.6,3-6l1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M162.776,122.092c5.2-1.1,5,0.5-0.6,4.7c0,2.8-0.6,3.1-1.2,1.8c-0.7-1.3-1.3-1.5-2.1-0.6c-0.7,0.899-1.4,0.399-1.9-1.5c-0.6-1.8-0.2-2.5,1.2-2.101c1.5,0.4,2.6,0.5,3.6,0.4l1-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M126.776,131.092c0.7,0.2,0,1.5-2.1,3.8c-2.1,2.4-2.3,2.101-0.7-1.1l2.8-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M209.876,135.692c1.4-1.301,1.9-0.801,1.4,1.399c-0.6,2.3-1,3.8-1.4,4.5c0.1,1-0.6,1.601-1.2,2.101c-0.6,0.5-1.4,1.199-2.5,2c-1,0.899-1.5,0.8-1.4-0.301c0-1.1,0.1-2.1,0.4-3.1
+ c0.2-0.9,0.8-2,1.7-3.1c0.9-1.101,1.9-1.601,2.9-1.4l0.1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M231.875,138.692c0.5-1.5,0.801-1.101,0.801,0.899c0,2.101-0.5,3.8-1.7,5.2c-0.8,3.9-1.399,4.2-1.899,1.7c-0.4-2.4,0.299-4.3,2-5.7l0.799-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M249.875,143.692c2-1.5,3.301,0.5,4,5.899c3.258,4.392,4.98,9.733,4.9,15.2c-2.8-0.9-3.8-3.1-3.9-5.8c-2.121,3.194-3.204,6.966-3.1,10.8c-1.9,4.3-3.199,5-4.9,3l2-21
+ c1.701-2.3,2.301-4.3,1.801-6l-0.801-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M214.876,147.692c1.3-1.301,1.8-0.801,1.4,1.399c-0.4,2.3-1.3,3.601-2.9,3.9c-1.5,0.399-2.1,1.2-1.7,2.6c0.4,1.4,0.1,2.9-0.9,4.7c-1,1.7-1.6,3.4-1.8,5c-0.1,1.6-0.6,3.5-1.2,5.5
+ c1,1.4,2,0.9,2.4-0.6c0.4-1.4,0.8-2.801,1-4.2c0.2-1.5,0.7-2.8,1.5-4c0.7-1.2,1.4-2.7,1.9-4.601c0.6-1.899,1.2-2.3,1.7-1.199c0.6,1,0.6,2.3,0,3.8c-0.5,1.5-0.8,3-0.7,4.3c0,1.4-0.8,2.5-2.4,3.2c-1.6,0.7-1.6,1.5,0.1,2.399c1.6,0.801,2.2,1.4,1.7,1.601
+ c-0.5,0.3-1,1-1.3,2.3c-0.4,1.3-0.8,2.7-1.3,4.2s-1.1,2.7-1.9,3.5c-0.8,0.899-1.7,1.6-2.7,2.3c-0.9,0.7-1.8,1.8-2.6,3.4c-0.8,1.6-1.3,3.1-1.5,4.3c-0.3,1.3-1,2.6-2.1,4.1c-1.1,1.5-2.2,2.9-3.2,4c-1,1.2-1.1,0.5-0.2-1.899c0.9-2.5,0.9-3.2,0-2.4
+ c-0.9,0.9-1.9,2.1-3.1,3.8c-1.2,1.7-1.9,2.9-2.1,3.601l10.9-31.9c1.5-2,1.8-3.5,0.8-4.4c-1-0.8-2-0.3-3,1.601c-1,1.899-1.9,3.7-2.7,5.399c-0.9,1.601-1.8,3.4-2.6,5.2c-0.9,1.9-2,3.101-3.2,3.601c-1.2,0.5-2.5,2.1-4.2,4.6c-0.7,1.8-1.1,2.9-1.4,4.2
+ c-0.3,1.3-0.9,1.5-2,0.7c-1-0.7-1.3-1.801-0.8-3.101c0.4-1.399,1.1-2.2,1.9-2.399c0.8-0.301,1.4-1.101,1.8-2.5c0.4-1.5,0.8-2.7,1.1-3.801c0.3-1.1,0.9-1.6,1.8-1.5c0.9,0.2,1.7-0.699,2.5-2.399c0.8-1.8,1.5-2.9,2.2-3.2c1.9-2.5,3.1-4.3,4.3-6.4
+ c1.3-2.199,2.4-4.1,3.3-5.699c0.9-1.601,2.2-2.801,3.9-3.601c1.6-0.8,2.2-2.3,1.8-4.5c-0.5-2.2,0.7-3.399,3.6-3.6l1.9-1.3z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M239.875,148.692c0.701-1.5,0.801-1.101,0.201,0.899c-0.5,2.101-0.201,3.8,0.799,5.2c-0.699,1.6-1.299,2.4-1.699,3.3c-0.5,0.9-0.6,1.9-0.2,2.9c0.3,1,0.101,1.399-0.7,1.1
+ c-0.8-0.2-1.6-0.3-2.3-0.1c-0.7,0.1-0.7-0.601-0.101-2.2c-0.1-1.9,0-2.9,0.301-4.1c0.3-1.2,0.9-1.5,1.699-1.101c0.801,0.4,1.101,0.3,1-0.399c-0.199-0.7-0.5-1.2-1-1.5c-0.399-0.4-0.399-1,0.101-1.9l1.899-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M228.875,158.692c0.701-1.301,1-0.4,0.9,2.699c0,3,0.7,3.601,2.301,1.601c-0.291,6.797-1.746,13.494-4.301,19.8l-6.9,14c-0.799,0.9-1.399,0.7-1.699-0.4c-0.4-1-1.1-0.899-2,0.601
+ c-1,1.5-1.9,2.6-2.9,3.399c-1,0.9-1.4,1-1.3,0.4c2-2.5,2.6-4.4,2.6-6.5s-0.7-1.9-2,0.4c-1.4,2.3-1.9,2.3-1.5,0.1c2.3-2.8,4.1-5.1,5.9-8c0.899-4.5,1.7-6.8,3.101-8l4.699-16.8c0.9,3.399,2,3,3.1-1.2v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M103.776,159.092c2.1,0.5,1.4,2.7-2.1,6.7c-3.702,3.571-6.928,7.604-9.6,12c-4.425,3.826-7.914,8.615-10.2,14c-4.947,6.396-9.016,13.425-12.1,20.9c0.006-4.509,1.141-8.943,3.3-12.9
+ c3.8-3.7,5.2-5.7,4.8-7l24-32l1.9-1.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M310.176,164.892c0.4-1.6,1.3-0.899,2.699,2c1.301,2.801,1,3.2-1,0.9l-1.699-2.9z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M270.176,166.892c0.5-1.699,1-1.399,1.5,0.801c0.5,2.3,0.199,3-0.801,2.1l-0.699-2.9z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M237.875,168.692c0.89-2.321,3.492-3.481,5.813-2.593c2.32,0.89,3.481,3.492,2.592,5.813c-0.707,1.845-2.533,3.013-4.504,2.88c0,1.5,0.2,3.3,0.5,5.3c0.4,2,0,3.9-1.199,5.7
+ c-1.201,1.8-1.9,3.8-2.101,6c-0.3,2.2-0.899,4.5-2.101,6.8c-1.1-1.399-0.899-2.5-0.299-3.399c0.6-0.9,0.799-2,0.699-3.5s-0.699-1.5-1.9,0.199c-1.199,1.7-1.799,1.9-1.799,0.601s-0.5-1.5-1.5-0.4c-1.101,1-1.701,1.9-2.101,2.5c3.667-7.552,6.323-15.554,7.899-23.8
+ v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M262.176,170.892c1.199-0.699,1.9,0.801,2.1,4.7c0.2,3.8,1.1,6.8,2.6,9l0.101-13.6c4.651,8.63,4.576,19.038-0.2,27.6c-4.5,3.8-7.8,7-10.8,10.101c-2.101-5.2-0.8-8.2,3.7-9.9
+ c2.586-8.067,3.67-16.541,3.199-25l-0.699-2.9z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M186.776,173.092c1-0.2,0.8,0.7-0.6,2.8c-1.4,2.101-1.8,2.101-1.3-0.1l1.9-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M183.876,179.692c1.4-0.801,1,1.199-1,6.1c-0.7,2.1-1.5,2.8-2.4,3.2c-1,0.399-0.9-0.101,0-1.5c1-1.4,1.4-2.4,1.4-3.2s0.3-1.6,1-2.5l1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M294.875,184.692c0.301-1.601,1-1,2.201,1.699c1.1,2.601,0.699,2.801-1.301,0.4l-0.9-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M248.776,191.092c0.7-0.2,0.4,0.7-0.9,2.8c-1.199,2.101-1.6,2.101-1-0.1l1.9-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M185.876,194.692c0.7-1.601,1-1,0.8,1.699c-0.1,2.601-0.4,2.801-0.8,0.4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#141414;stroke:none;" d="M340.875,197.692c0.701-1.601,1-1,0.801,1.699c-0.1,2.601-0.4,2.801-0.801,0.4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M368.875,201.692c0.9-0.801,1.801,0.199,2.701,3.1c0.799,2.8,1.898,5,3.199,6.6c1.4,1.5,2.1,2.7,2.1,3.5c4.053,3.823,5.959,9.396,5.1,14.9l-1.1,13c-1.248,3.506-1.957,7.182-2.1,10.9
+ c-0.213-8.1-1.49-16.135-3.801-23.9l-4.1-20c0.1-2.3-0.6-4.3-2-6v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M56.876,213.692c1.2-0.9,0.8,0.399-1.3,3.699c-2,3.301-2.2,2.801-0.5-1.6l1.8-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M361.875,216.692c1.201-2,1.801-1.601,1.801,1.199c0.1,2.801-0.301,3.101-1,0.9l-0.801-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M52.776,221.092c0.8,0.2,0.7,1.5-0.5,3.8c-1.1,2.4-1.2,2.101-0.4-1.1l0.9-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M25.876,231.692c0.6-1.301,1.5-1.801,2.6-1.5c1,0.3,0.9,0.8-0.4,1.399c-1.3,0.7-2.3,1.4-3.1,2.101l0.9-2z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M263.776,233.092c3.801-0.5,7.2,0.4,10.1,2.7c2.101-0.8,3.201-0.8,4.201,0c1.1,0.8,2.199,1.4,3.399,1.8c1.2,0.4,2.101,0.8,2.899,1.101c0.801,0.399,1.4,0.1,1.801-0.801
+ c0.4-0.899,0.699-0.399,0.9,1.4c0.1,1.8,0.1,2.9,0.1,3.3c-0.1,0.4-0.7,0.9-1.7,1.601c-1.101,0.699-0.3,1.3,2.3,1.8c-7.569,1.365-15.318,1.399-22.9,0.1c-3.799,1.2-4.6,0.5-3.5-1.399c1.101-2,1.601-3.2,1.5-3.801c-6.1-1.5-6.399-3.199-2-5.3l2.9-2.5z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M5.876,237.692c0.4-1.2,1.1-0.7,2.1,1.3c1,2.1,1.4,3.899,1,5.3c-0.4,1.5-0.1,3.2,0.9,5.2c1-0.9,0.8-0.2,0.6,1.7c-0.3,1.8-1.2,2.699-2.8,2.699c-1.5,0-1.8-0.6-0.9-1.699
+ c0.9-1.2,1.1-2.101,0.7-2.601c-0.5-0.6-0.4-1.5,0.2-2.8c-2-2.4-2.4-4.4-1.8-7v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#262626;stroke:none;" d="M46.876,240.692c0.5-1.2,0.8-0.7,1,1.3c0.1,2.1,0.1,3.899,0,5.3c-0.1,1.5-0.1,3.3-0.2,5.4l-0.8-10.9v-1.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M172.876,243.692c0.6-1.9,1-1.9,1.2,0.1c0.2,1.9,1.5,2.9,3.8,2.9c8.9,3.399,9.2,4.399,2,3.1c-2.9,1.3-3.9,1.1-4-0.7s-0.8-2.399-2.2-2c-1.3,0.5-1.9,0.101-1.6-1.3l0.8-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M290.776,243.092c1.4,0.601,1.9,1.8,1.4,3.4c-0.4,1.7-1.5,1.1-3.2-1.9l1.8-1.5z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M7.776,268.092c5.2,0.7,5,1.5-0.7,2.5l0.7-2.5z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M49.776,284.092c2,1.601,1.5,2.5-1.5,2.7s-3.5-0.2-1.4-1.2l2.9-1.5z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M195.776,284.092c4.4,0.601,4.7,1.5,1.1,2.7c-5.617,2.455-8.18,9-5.725,14.617c0.209,0.478,0.451,0.939,0.725,1.383c5.7,0,10.3,1.4,14.9,5c1.6,6,4.6,9,8.9,10c0.2,5-1.4,5.7-5.7,3
+ c-1.6,2.4-3.6,2.1-6.1,0.1c-5.4,2.7-7.1,3.4-6.1,2.9c-4.4,0.1-6.2-0.9-6-4c-1.2-3.1-2.5-5.6-4.8-8.1c-1-4.4-0.6-6.4,0.9-7c0.5-4.9-0.1-8.2-1-10.9c-4-1.5-4-3.1-0.8-4.8c3.2-1.7,5.5-3.101,6.8-4.2l2.9-0.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#111110;stroke:none;" d="M305.875,285.692c0.701-1.601,1-1,0.801,1.699c-0.1,2.601-0.4,2.801-0.801,0.4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M42.776,288.792c-0.8-1.3-0.1-1.6,2.1-1c2.3,0.6,2.9,1.3,2,2c-1.5,1.9-2.9,2.8-5.3,3.1c-2.4,0.301-1.9-0.399,1.3-2.1l-0.1-2z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M46.876,292.692c2.7-1.2,3.3,0.8,1.8,6c-1.6,1.1-2.4,1.5-3.2,1.399c-0.7-0.1-1.6,0.3-2.5,1c-1,0.8-1.3,0.4-1.1-1.2c0.2-1.5,0-1.8-0.6-0.699c-0.6,1-1.2,1.3-1.9,0.699
+ c-0.8-0.5-0.7-1.1,0.2-1.699c0.8-0.5,1.2-1.2,1.2-2c-0.1-0.801,0.1-1.301,0.5-1.5c0.4-0.2,1.1-0.2,2.2-0.101c1,0.101,1.8,0.101,2.4,0l1-1.899z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M34.876,298.692c0.6-1.601,1.4-1,2.2,1.699c0.9,2.601,0.4,2.801-1.3,0.4l-0.9-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M173.776,300.092c1.3,0,1.2,1-0.3,2.9c-1.5,1.899-2.8,3.6-3.9,5.3c-1.2,1.7-2.4,2.8-3.9,3.3c-1.4,0.5-3.4,0.601-5.8,0.3c-2.6,0.9-3.3,1.801-3,2.9s0,1.6-0.9,1.4c-0.9-0.101-0.6,0.3,0.9,1.3
+ c1.4,1,1.5,1.7,0.2,2.1c-1.4,0.4-1.8,1.2-1.2,2.5c0.6,1.2,1.3,1.3,2.1,0.2c0.8-1.1,1.6-1.1,2.2,0.1c0.6,1.2,1.5,2.101,2.7,2.601c1.2,0.6,2.3,1.1,3.5,1.6c1.2,0.4,2.3,0.7,3.5,0.7s2.3,0,3.5,0s2.3,0.1,3.5,0.5c1.2,0.1,2.5,0,4-0.3c1.4-0.3,2.5,0.1,3.2,1.1
+ c0.8,1,1.9,1.2,3.5,0.8c1.6-0.5,2.7-0.399,3.4,0.4c0.6,0.7,1.6,0.8,2.7,0.3c1.2-0.5,2.3-0.5,3.3,0s2.1,1.3,3.3,2.3c1.2,1,2.5,1.4,3.9,1.4c1.4-0.1,2.4,0.3,3.2,1.2c0.8,0.8,2,1.3,3.5,1.3c1.6,0.1,2.9,0.2,4,0.5l33,11.1c1,0.5,1.9,0.2,2.801-0.699
+ c0.9-1,1.5-1.101,1.8-0.301c0.399,0.7,0.899,1,1.7,1c0.8-0.1,1,0.2,0.699,0.9c-0.399,0.7-1.199,1.2-2.399,1.3c-1.3,0.101-2.2,0.4-2.8,0.8c-0.6,0.5-1.6,0.601-2.9,0.5c-1.4-0.199-2.3,0.101-2.8,0.801c-0.399,0.8-1.399,1.1-2.8,1.199c-1.4,0.101-2.4,0.4-2.9,1.101
+ c-0.5,0.6-1.199,0.7-2,0.399c-0.8-0.399-0.8-1.1,0.1-2.1c0.9-1,1.4-2.1,1.4-3.4c0-1.199-0.6-1.6-1.8-1.3s-1.601,0-1.101-0.899c0.601-1,0.201-1.7-1-2.301c-10.234-3.77-21.098-5.535-32-5.199c-2.3-1.7-3.9-2.101-5.8-1.801c-1.9,0.301-3.2,0.101-3.9-0.399
+ c-0.7-0.5-1.7-1.3-3.1-2.4c-1.3-1-2.7-1.2-4.2-0.6c-1.6,0.7-2.7,0.399-3.5-0.9s-1.7-2.2-2.6-2.7s-1.7,0.2-2.4,2.101c-0.6,1.8-1.1,3.399-1.4,4.7c-0.3,1.3-0.2,2.699,0.3,4.399c0.6,1.7,1.4,2.8,2.5,3.3c1.1,0.601,2.3,1.601,3.7,3.2c1.4,1.601,2.8,2.4,4.4,2.3
+ c2.3,0.601,3,1.101,3,2.301c0.1,1.199-0.8,1.1-2.5-0.101c-1.7-1.3-3.3-2-4.8-2.1c-1.5-0.2-2.6-0.7-3.4-1.601c-0.7-0.899-1.8-1.199-3.3-0.8c-1.5,0.4-3-0.399-4.3-2.3c-1.4-2-2.8-3.5-4.3-4.6c-1.4-1.2-2.8-2.601-4.1-4.301c-1.4-1.699-2.1-2.6-2.3-2.6
+ c-0.7-2.3-1.7-3.1-3.2-3.3c-1.4-0.2-2.3-0.8-2.7-1.9c-0.3-1.2-0.9-1.5-1.9-1.1c-0.9,0.5-1.7,0-2.2-1.3c-0.6-1.4-1.2-1.601-1.9-0.7c-0.7,0.899-1.2,0.8-1.6-0.2s-0.5-2.1-0.5-3.1c0.1-1,0.1-2.101-0.1-3.301c-0.2-1.199,0-2.199,0.8-2.8c0.7-0.7,1.4-1.5,1.9-2.5
+ c0.6-1,1.1-2,1.5-3c0.5-0.899,1.4-0.899,2.9,0.101c0.9-2.5,1.4-3.5,2.5-4c1-0.5,2.2-0.601,3.6-0.4c1.3,0.2,2.4-0.4,3.1-1.9c0.8-1.399,1.7-2,2.8-1.699c1.1,0.3,2,0,2.7-1c0.6-1,1.7-1.301,3.3-0.9l2.9-1.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#10100F;stroke:none;" d="M114.876,301.692c0.7-1.601,1-1,0.8,1.699c-0.1,2.601-0.4,2.801-0.8,0.4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M227.776,311.092c2-1.1,3.5-0.899,4.5,0.4c0.9,1.2,0.5,2.399-1.4,3.6c-1.799,1.101-3.1,0.7-3.899-1.399l0.8-2.601z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M248.176,312.892c1.6-1,2.8-0.3,3.6,2.2c0.801,2.5,1.5,4.2,2.1,5.2c0.601,0.9,1.4,2.8,2.5,5.5c1,2.7,2.201,3.4,3.5,2c-0.1,1.5-0.1,2.5,0.101,3.9c0.2,1.399,0.601,1.8,1.399,1.1
+ c0.701-0.6,1.201-0.3,1.4,0.9c0.2,1.199,0.1,1.899-0.4,2.1c-0.5,0.3-0.799,1-0.699,2.4c0.1,1.399,0.5,2.6,1.4,3.5c0.799,0.899,1.399,2,1.799,3.1c0.301,1.2,0.5,2.2,0.4,3.3c-0.1,1-0.6,2.2-1.5,3.601c-1.6-2.9-2.4-5.601-2.9-7.9c-4.466-5.28-7.832-11.4-9.899-18
+ c-0.222-3.407-0.894-6.77-2-10l-0.8-2.9z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#0D0D0D;stroke:none;" d="M168.776,327.792c-0.6-1.2,0-1.7,2-1.6c1.9,0.1,1.9,0.6,0.1,1.6h-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#303030;stroke:none;" d="M357.875,328.692c0.6-1.5,0.9-0.801,1,1.899s-0.1,4.101-0.799,4.2c-0.602,0.1-0.602-1.2-0.201-4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#10100F;stroke:none;" d="M114.876,329.692c0.7-1.601,1-1,0.8,1.699c-0.1,2.601-0.4,2.801-0.8,0.4v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M70.876,331.692c1.7-1.4,1.7-0.7,0,2.1v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M77.876,336.692c1.5-1.5,3.2,0.5,5,6.1c-1.3,2.8-2.3,3.2-3,2c-0.7-1.1-0.8-2.1-0.4-2.9c0.5-0.8-0.4-1.899-2.6-3.1l1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M70.876,340.692c0.9-0.9,1.4,0.3,1.5,3.699c0.1,3.301-0.6,2.801-2.3-1.6l0.8-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M368.776,343.092c1.301,0.4,1.301,0.9-0.301,1.601c-1.5,0.699-2.6,1.5-3.299,2.3c-0.6,0.8-0.4,0.1,0.699-2.2l2.9-1.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M87.876,373.692c-0.8-1.301-0.5-1.7,0.8-1.2c1.4,0.399,2.1,0.5,2.2,0.1c0.1-0.399,0.1,0.101,0,1.4c0,1.399-0.7,1.7-2,0.8l-1-1.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M319.875,382.692c0.4-1.5,0.701-1.101,1,1.1c0.201,2.3,0,3.7-0.699,4.1c-0.701,0.5-0.801-0.5-0.301-3.1v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#515151;stroke:none;" d="M320.875,383.692c0.9-1.301,1.201-0.4,0.801,2.699c-0.4,3.101-0.701,2.9-0.801-0.6v-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M285.176,402.892c0.5-1.399,1.4-1.3,2.8,0.301c1.399,1.6,1,2.1-1.101,1.699l-1.699-2z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M281.776,403.092c0.4-0.3,1.1,0,2,0.9c0.801,0.899,1,1.5,0.301,1.899c-0.701,0.301-1.5,0.801-2.5,1.301s-1.201,0.1-0.701-1.4l0.9-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M306.776,404.092c1.1,0.101,0.4,1-2.3,2.601c-2.601,1.6-4.101,1.899-4.5,0.8c-0.399-1,0.899-1.601,3.899-1.8l2.9-1.601z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#262626;stroke:none;" d="M287.776,411.792c-0.4-1.3,0.6-1.8,3-1.5c2.301,0.3,2,0.8-0.9,1.5h-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M140.876,412.692c-0.2-1.301,0.2-1.7,1.1-1.2c1,0.399,1.6,0.399,2,0.1s0.5,0,0.3,1.101c-0.1,1-0.5,1.199-1.2,0.6c-0.6-0.6-1.3-0.1-2,1.4l-0.2-2z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M145.876,414.692c3-1.9,5.6-0.5,7.8,4.3c0.1,1.8,0.2,2.7,0.5,3.6c0.3,0.9,0,1.9-0.9,2.8c-0.8,1-1.8,1-2.9,0s-1.8-0.899-2.3,0.4s0.4,2.6,2.8,3.9c1.1,0.5,1.4,1.199,1.7,2.6c0.2,1.3,0,1.9-0.6,1.7
+ s-1.5-0.101-2.6,0.2c-1.1,0.399-1.6,0.1-1.5-1c0-1.101,0.1-1.9,0.1-2.301c0.5-2.1-0.4-2.6-2-1.699c-1.6,0.899-3,0.699-4.1-0.4c-2.1-2.5-1.7-3.6,0.3-3.3s1.5-0.2-1.3-1.601c0.1-4.1-0.9-6-3.8-6c1.5-2.5,2.6-2.899,4.1-1.6c1.5,1.4,2.4,0.9,2.7-1.4l2-0.199z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M162.876,425.692c3.8-2.101,4.1-1.7,1,1.199l-1-1.199z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;stroke:none;" d="M161.176,527.892c6.527-0.989,13.164-1.022,19.7-0.1h12l10.9,0.9c-2.7,2-5.3,3-7.9,3.1c-1.3,0.5-2.3,0.3-4.1,0.1c-1.7-0.199-2.7,0.2-3,1c-0.3,0.801-1.2,0.9-2.8,0.2c-1.6-0.6-2.5-0.6-2.7,0.2
+ c-0.2,0.7-1.4,1-3.5,0.7c-2-0.2-2.7-0.601-1.9-1.101c-2.5,0.801-3.5,0.101-4.2-1.199c-0.6-1.4-1.7-1.9-3.3-1.5c-1.6,0.3-2.7-0.301-3.3-2c-0.6-1.801-1.7-1.801-3.2-0.301h-2.7z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M142.876,536.692c0.2-1.4,1-0.5,2.6,2.6s2,4.5,1.1,4.3c-0.8-0.3-2-1.899-3.5-4.8l-0.2-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M149.876,547.692c-0.2-1.301,0.5-0.801,2.1,1.399c1.5,2.3,2.9,4.2,3.9,5.7c4.5,5.8,7.2,10.1,8.8,13.9c-5.835-5.514-10.792-11.888-14.7-18.9l-0.1-2.1z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M165.176,570.892c0.2-2,1-1.899,2.4,0.4c1.3,2.2,2.4,3.8,3.5,4.5c2.3,2.6,3.5,4.3,4.5,6.2c0.9,1.899,2.4,3.5,4.5,4.7c2.1,1.199,1.7,1.899-1.2,2.1l-12.1-16l-1.6-1.9z"/>
+ </g>
+ <g>
+ <path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;" d="M184.776,585.092c2.3,0.9,5,1.8,8,2.7c-0.3,1.9-1.1,2-2.5,1.4c-1.3-0.601-1.9-0.2-1.6,1.1c0.3,1.4-0.3,1.4-1.8,0.1c-1.4-1.199-2.4-1.399-2.9-0.399c-0.5,0.899-1,1.3-1.7,1.3
+ c-0.6-0.1-0.6-0.8,0-2.1c0.5-1.301,0.8-2.101,0.7-2.4l1.8-1.7z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M110.117,367.483c-7.499,28.498,4.5,62.996,25.499,83.996"/>
+ <path style="fill:#DD192A;stroke:none;" d="M108.45,365.721c-7.732,30.791,4.995,64.737,26.764,86.891c2.384,2.427,2.336-0.705,0.804-2.264c-20.342-20.702-31.422-52.475-24.234-81.102c0.375-1.495-3.013-4.804-3.334-3.525z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M139.851,455.03c2.944,9.323,1.472,14.721-1.472,24.534c-2.453,10.304,0.491,21.59-2.944,31.403"/>
+ <path style="fill:#DD192A;stroke:none;" d="M137.399,455.237c2.787,9.479,0.065,16.534-1.865,25.765c-2.018,9.648,0.545,19.658-2.438,29.202c-0.794,2.542,3.988,3.729,4.677,1.527c3.079-9.85,1.15-20.092,2.728-30.152c0.753-4.804,2.71-9.306,3.305-14.177
+ c0.519-4.251-0.311-8.52-1.504-12.579c-0.663-2.253-5.639-2.094-4.902,0.414z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M106.975,426.571c0.491,6.379,3.926,12.758,7.851,17.174c3.925,5.888,13.248,9.322,15.702,15.701c2.944,7.851-3.925,19.627-5.888,27.479c-1.963,6.378-9.323,24.043-4.907,29.44"/>
+ <path style="fill:#DD192A;stroke:none;" d="M104.585,427.304c1.119,9.767,7.151,18.045,14.783,23.903c3.666,2.814,7.692,5.493,9.125,10.119c1.398,4.515-0.734,10.079-2.198,14.312c-2.59,7.489-5.307,14.921-7.695,22.483c-1.744,5.526-4.752,13.969-1.064,19.304
+ c1.013,1.466,5.627-0.334,4.394-2.119c-3.763-5.443,0.803-15.891,2.627-21.372c2.577-7.745,5.59-15.384,7.92-23.201c2.575-8.639,0.45-14.471-6.502-19.958c-8.269-6.526-15.347-13.914-16.61-24.936c-0.203-1.771-5.009-0.527-4.78,1.465z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M259.085,390.752c-6.379,23.062-8.832,42.688-23.553,62.807c-11.776,16.192-13.739,39.254-14.721,58.881"/>
+ <path style="fill:#DD192A;stroke:none;" d="M256.725,390.811c-2.824,10.32-5.111,20.783-8.19,31.033c-3.498,11.642-8.741,22.112-15.729,32.035c-11.909,16.909-13.367,39.165-14.389,59.137c-0.134,2.612,4.666,1.244,4.789-1.152
+ c0.56-10.939,1.442-21.846,3.784-32.566c2.455-11.24,7.407-20.126,13.686-29.588c11.743-17.7,15.267-38.905,20.77-59.016c0.762-2.784-4.096-2.167-4.721,0.117z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M259.085,416.758c-4.416,11.776-7.852,23.062-11.776,34.838c-3.435,9.813-9.813,16.683-12.267,27.478"/>
+ <path style="fill:#DD192A;stroke:none;" d="M257.628,416.909c-4.271,11.496-7.914,23.202-11.776,34.838c-3.19,9.613-9.775,17.532-12.267,27.478c-0.306,1.22,2.637,0.804,2.914-0.303c2.477-9.891,8.755-18.005,12.267-27.478
+ c4.259-11.487,7.506-23.343,11.776-34.838c0.414-1.115-2.518-0.765-2.914,0.303z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M88.82,383.392c-2.944,7.36-4.907,15.701-5.888,23.553c2.944-4.907,4.416-10.305,7.851-15.211c0.981,9.322-3.435,20.608-4.416,29.931c1.472-5.397,3.435-10.795,6.379-15.701c-0.491,9.813-3.925,19.627-4.907,29.44
+ c0.981-4.907,3.435-9.813,4.907-15.211c-1.963,9.323-4.907,18.155-6.379,27.478c0.981-4.416,2.454-9.322,5.888-12.757c1.963,6.869-2.453,17.664-1.962,25.515c2.944-5.397,4.907-11.776,9.323-16.683c1.962,6.869-3.435,16.192-2.944,23.552
+ c1.963-3.435,4.416-7.851,7.36-9.813c-0.491,8.342-2.454,16.684-1.963,25.024c1.472-7.359,2.944-15.701,9.323-20.117c0.49,8.342-2.944,17.174-3.926,25.515c1.472-5.888,3.435-13.248,6.379-18.154c-1.472,11.285-2.944,23.062-4.907,34.347"/>
+ <path style="fill:#66BD61;stroke:none;" d="M87.431,383.211c-2.977,7.693-4.879,15.664-5.969,23.836c-0.21,1.573,2.373,0.936,2.859,0.078c2.771-4.887,4.587-10.23,7.68-14.943c-0.889-0.02-1.778-0.04-2.667-0.06c0.754,10.077-3.226,19.754-4.437,29.645
+ c-0.197,1.607,2.603,0.99,2.939-0.205c1.526-5.405,3.496-10.542,6.298-15.418c-0.953-0.025-1.906-0.052-2.859-0.078c-0.679,9.969-3.769,19.534-4.907,29.44c-0.181,1.576,2.651,1.047,2.94-0.205c1.181-5.11,3.349-9.904,4.826-14.928
+ c-0.953-0.026-1.906-0.052-2.859-0.078c-2.003,9.192-4.813,18.189-6.379,27.478c-0.258,1.529,2.643,1.066,2.939-0.205c1.068-4.574,2.45-8.655,5.637-12.206c-0.889-0.02-1.778-0.04-2.667-0.06c1.902,8.314-2.224,16.842-1.983,25.229
+ c0.043,1.525,2.34,1.068,2.859,0.078c2.931-5.589,5.043-11.523,9.152-16.415c-0.889-0.02-1.778-0.04-2.667-0.06c1.727,7.836-3.133,15.414-2.966,23.266c0.034,1.557,2.319,1.023,2.859,0.078c1.939-3.391,3.808-6.861,6.939-9.307
+ c-0.813-0.195-1.625-0.391-2.438-0.585c-0.598,8.363-2.275,16.61-1.963,25.024c0.06,1.594,2.683,1.087,2.94-0.205c1.413-7.088,2.74-14.671,8.821-19.327c-0.813-0.195-1.625-0.39-2.438-0.585c0.248,8.71-2.766,16.965-3.926,25.515
+ c-0.213,1.574,2.628,1.03,2.94-0.205c1.549-6.142,3.179-12.313,6.298-17.871c-0.953-0.026-1.906-0.052-2.859-0.078c-1.493,11.47-2.955,22.943-4.906,34.347c-0.255,1.491,2.711,1.132,2.939-0.205c1.952-11.403,3.414-22.877,4.907-34.347
+ c0.204-1.57-2.375-0.942-2.859-0.078c-3.212,5.723-4.865,12.116-6.46,18.438c0.98-0.068,1.96-0.137,2.94-0.205c1.16-8.55,4.173-16.805,3.926-25.515c-0.036-1.239-1.704-1.146-2.438-0.585c-6.656,5.097-8.269,13.104-9.826,20.907c0.98-0.068,1.96-0.137,2.94-0.205
+ c-0.313-8.414,1.365-16.661,1.963-25.024c0.09-1.27-1.783-1.097-2.438-0.585c-3.486,2.723-5.619,6.538-7.782,10.32c0.953,0.025,1.906,0.052,2.859,0.078c-0.173-8.085,4.708-15.737,2.923-23.838c-0.258-1.171-2.139-0.688-2.667-0.06
+ c-4.249,5.058-6.46,11.164-9.494,16.95c0.953,0.025,1.906,0.052,2.859,0.078c-0.247-8.611,3.9-17.24,1.941-25.801c-0.271-1.187-2.122-0.667-2.667-0.06c-3.428,3.818-4.99,8.383-6.14,13.308c0.979-0.068,1.96-0.137,2.939-0.205
+ c1.566-9.288,4.376-18.285,6.379-27.478c0.301-1.38-2.535-1.182-2.859-0.078c-1.533,5.213-3.762,10.19-4.988,15.494c0.98-0.068,1.96-0.137,2.94-0.205c1.138-9.906,4.228-19.472,4.906-29.44c0.108-1.583-2.353-0.959-2.859-0.078
+ c-2.904,5.051-4.881,10.392-6.459,15.984c0.979-0.068,1.96-0.137,2.939-0.205c1.241-10.127,5.168-19.896,4.395-30.217c-0.086-1.157-2.251-0.694-2.667-0.06c-3.212,4.895-5.144,10.402-8.021,15.479c0.953,0.026,1.906,0.052,2.859,0.078
+ c1.064-7.978,2.9-15.755,5.808-23.27c0.612-1.581-2.299-1.601-2.778-0.361z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M265.464,405.472c0,9.813-1.963,20.118-0.491,29.932c1.473-2.944,2.453-6.869,3.435-10.795c-2.453,11.285-5.397,22.08-6.869,33.366c1.472-4.907,2.944-10.305,3.435-15.211c-3.435,8.832-5.397,18.155-9.322,26.987
+ c0.49-2.454,0.98-5.397,1.472-8.342c-3.435,6.379-3.926,14.229-6.379,21.59c-0.981-4.907,0.49-10.795,0.981-16.192c-3.435,6.379-4.907,12.758-6.379,19.137c0.491-4.416,2.453-10.305,0.981-14.721c-2.944,8.832-2.453,18.646-6.379,26.987
+ c-0.981-2.944-0.49-6.379-0.49-9.813c-4.907,6.869-3.926,17.664-5.397,25.516c-0.981-5.889,0-11.776-0.491-17.174c-1.963,8.832-2.944,18.646-0.981,27.968"/>
+ <path style="fill:#66BD61;stroke:none;" d="M264.015,405.86c-0.117,10-1.773,19.946-0.491,29.932c0.098,0.756,2.649-0.124,2.882-0.632c1.582-3.464,2.509-7.112,3.435-10.795c-0.955,0.162-1.91,0.324-2.865,0.486c-2.442,11.096-5.316,22.096-6.869,33.366
+ c-0.111,0.807,2.659,0.21,2.865-0.486c1.482-5.007,2.811-10.017,3.435-15.211c0.101-0.839-2.618-0.168-2.865,0.486c-3.366,8.913-5.556,18.22-9.322,26.987c0.955-0.162,1.91-0.324,2.865-0.486c0.534-2.773,1.006-5.556,1.472-8.342
+ c0.142-0.85-2.57-0.108-2.865,0.486c-3.37,6.797-4.134,14.41-6.379,21.59c0.961-0.211,1.921-0.421,2.882-0.632c-0.812-5.429,0.408-10.795,0.981-16.192c0.066-0.624-2.616,0.112-2.882,0.632c-3.113,6.089-4.843,12.505-6.379,19.137
+ c0.955-0.162,1.91-0.324,2.865-0.486c0.678-4.965,2.253-9.872,0.998-14.866c-0.184-0.729-2.702,0.051-2.882,0.632c-2.736,8.881-2.647,18.393-6.379,26.987c0.961-0.211,1.921-0.421,2.882-0.632c-0.814-3.261-0.553-6.482-0.49-9.813
+ c0.014-0.756-2.615,0.221-2.882,0.632c-4.909,7.575-3.963,16.967-5.397,25.516c0.961-0.211,1.921-0.421,2.882-0.632c-0.756-5.719-0.132-11.436-0.491-17.174c-0.04-0.639-2.746-0.002-2.882,0.632c-1.988,9.312-2.792,18.696-0.998,28.113
+ c0.13,0.678,3.045-0.005,2.898-0.777c-1.776-9.322-1.008-18.589,0.965-27.822c-0.961,0.211-1.921,0.421-2.882,0.632c0.36,5.737-0.264,11.454,0.491,17.174c0.088,0.662,2.776-0.002,2.882-0.632c1.438-8.567,0.485-17.938,5.397-25.516
+ c-0.961,0.211-1.921,0.421-2.882,0.632c-0.062,3.33-0.323,6.552,0.49,9.813c0.192,0.769,2.65-0.1,2.882-0.632c3.73-8.594,3.642-18.106,6.379-26.987c-0.961,0.211-1.921,0.421-2.882,0.632c1.229,4.888-0.301,9.714-0.965,14.575
+ c-0.108,0.797,2.699,0.231,2.865-0.486c1.535-6.631,3.266-13.048,6.379-19.137c-0.961,0.211-1.921,0.421-2.882,0.632c-0.573,5.402-1.794,10.753-0.981,16.192c0.106,0.711,2.701-0.056,2.882-0.632c2.244-7.18,3.008-14.793,6.379-21.59
+ c-0.955,0.162-1.91,0.324-2.865,0.486c-0.465,2.785-0.938,5.568-1.472,8.342c-0.155,0.807,2.589,0.157,2.865-0.486c3.767-8.768,5.955-18.073,9.322-26.987c-0.955,0.162-1.91,0.324-2.865,0.486c-0.624,5.193-1.952,10.204-3.435,15.211
+ c0.955-0.162,1.91-0.324,2.865-0.486c1.553-11.271,4.427-22.27,6.869-33.366c0.162-0.736-2.678-0.261-2.865,0.486c-0.925,3.683-1.853,7.331-3.435,10.795c0.961-0.211,1.921-0.421,2.882-0.632c-1.282-9.984,0.373-19.931,0.491-29.932
+ c0.006-0.537-2.888-0.111-2.898,0.777z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M286.522,436.394c-13,32-21,65-35,96c-14,32-26,70-30,105"/>
+ <path style="fill:#97BD95;stroke:none;" d="M285.076,435.995c-6.872,17.045-12.491,34.538-18.322,51.956c-5.741,17.149-12.391,33.756-19.404,50.413c-13.288,31.56-23.312,64.96-27.327,99.029c-0.227,1.919,2.776,1.897,3,0
+ c4.105-34.837,14.72-68.883,28.425-101.076c6.673-15.674,12.771-31.413,18.199-47.569c5.852-17.412,11.449-34.909,18.322-51.956c0.724-1.795-2.179-2.567-2.893-0.797z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M297.522,442.394c-2,8-5,17-4,26c7-6,13-16,22-17c0,7-2,14-3,20c6-5,11-10,18-14c-3,9-7,17-8,26c11-3,19-16,32-15c0,12-11,24-10,36c11-7,20-22,34-24c-4,13-11,25-14,38c8-9,16-20,27-24c-1,10-7,20-8,30c6-2,12-7,19-8
+ c0,7-2,14-1,19c3-2,9-2,12-3c-1,3-1,8-2,10"/>
+ <path style="fill:#97BD95;stroke:none;" d="M295.904,440.487c-2.206,8.64-4.758,17.119-4.017,26.132c0.05,0.597,2.826,4.06,3.253,3.681c6.8-6.043,12.355-15.456,22-17c-1.084-1.228-2.169-2.454-3.253-3.681c-0.167,6.762-1.806,13.245-2.983,19.868
+ c-0.122,0.688,2.81,4.172,3.236,3.813c5.841-4.925,11.402-10.077,18-14c-1.079-1.271-2.157-2.542-3.236-3.813c-2.948,8.608-6.785,16.907-8,26c-0.1,0.744,2.459,4.051,3.236,3.813c11.483-3.527,18.988-15.518,31.868-15.006c-1.041-1.225-2.081-2.45-3.121-3.675
+ c-0.455,12.769-10.573,23.063-10,36c0.027,0.616,2.711,4.04,3.253,3.681c11.544-7.652,19.509-21.476,34-24c-1.079-1.271-2.157-2.542-3.236-3.813c-4.103,12.886-10.776,24.822-14,38c-0.186,0.762,2.99,4.092,3.236,3.813c7.942-9.012,15.447-19.448,27-24
+ c-1.079-1.271-2.157-2.542-3.236-3.813c-1.313,10.363-6.687,19.638-8,30c-0.092,0.725,2.492,4.087,3.236,3.813c6.508-2.404,12.075-6.707,19-8c-1.084-1.228-2.169-2.454-3.253-3.681c-0.151,6.307-1.9,12.71-1,19c0.091,0.63,2.608,4.036,3.253,3.681
+ c3.7-2.042,8.007-1.893,12-3c-1.079-1.271-2.157-2.542-3.236-3.813c-0.9,3.28-0.799,6.814-2,10c-0.427,1.134,3.325,3.576,3.236,3.813c1.201-3.187,1.099-6.721,2-10c0.197-0.718-2.499-4.017-3.236-3.813c-3.992,1.108-8.3,0.959-12,3
+ c1.084,1.228,2.169,2.454,3.253,3.681c-0.9-6.289,0.848-12.693,1-19c0.018-0.757-2.458-3.829-3.253-3.681c-6.924,1.294-12.492,5.597-19,8c1.079,1.271,2.157,2.542,3.236,3.813c1.313-10.363,6.687-19.638,8-30c0.091-0.717-2.508-4.1-3.236-3.813
+ c-11.552,4.553-19.057,14.989-27,24c1.079,1.271,2.157,2.542,3.236,3.813c3.224-13.179,9.896-25.115,14-38c0.234-0.737-2.47-3.945-3.236-3.813c-14.49,2.525-22.456,16.348-34,24c1.084,1.228,2.169,2.454,3.253,3.681c-0.573-12.907,9.544-23.226,10-36
+ c0.027-0.776-2.33-3.644-3.121-3.675c-13.056-0.52-20.5,11.422-32.132,14.994c1.079,1.271,2.157,2.542,3.236,3.813c1.215-9.094,5.052-17.393,8-26c0.225-0.657-2.701-4.13-3.236-3.813c-6.597,3.924-12.158,9.076-18,14c1.079,1.271,2.157,2.542,3.236,3.813
+ c1.193-6.714,2.847-13.283,3.017-20.132c0.019-0.77-2.445-3.81-3.253-3.681c-9.645,1.545-15.199,10.958-22,17c1.084,1.228,2.169,2.454,3.253,3.681c-0.734-8.919,1.803-17.328,3.983-25.868c0.326-1.279-3.341-3.4-3.236-3.813z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M6.522,443.394c19-14,40-26,60-39c-3,11-7,23-12,34c3-1,5,0,8,0c-2,7-8,13-10,19c2,0,9,1,13,0c-2,6-6,13-7,20c3-1,7,0,10-1c-2,3-2,11-3,13c3-1,8,1,12-1c-2,3-3,9-6,12c1,0,5,0,7,0c0,2,1,7,0,9c3,0,7,1,10,1"/>
+ <path style="fill:#97BD95;stroke:none;" d="M8.127,444.965c19.084-13.972,39.622-25.766,59.453-38.613c-1.121-0.834-2.241-1.668-3.362-2.501c-3.204,11.607-7.073,23.004-12,34c-0.799,1.784,1.17,3.103,2.74,2.747c2.499-0.566,4.87-0.055,7.368,0.086
+ c-0.703-0.944-1.405-1.889-2.108-2.833c-2.262,6.9-7.44,12.24-10,19c-0.571,1.509,0.634,2.783,2.108,2.833c4.594,0.156,9.064,0.802,13.632-0.086c-0.913-0.916-1.826-1.832-2.74-2.747c-2.433,6.895-5.861,13.313-7.129,20.582c-0.282,1.615,1.551,2.477,2.869,2.165
+ c3.296-0.781,6.688-0.216,10-1c-0.82-1.099-1.64-2.196-2.46-3.294c-2.353,4.272-1.601,9.139-3.28,13.547c-0.688,1.807,1.09,3.104,2.74,2.747c4.06-0.88,7.957,0.563,12-1c-0.82-1.099-1.64-2.196-2.46-3.294c-2.284,3.879-3.006,8.55-6,12
+ c-1.246,1.436,0.199,3.38,1.828,3.38c2.333,0,4.667,0,7,0c-0.746-0.75-1.492-1.501-2.237-2.251c0.127,2.719,0.991,5.78,0.129,8.418c-0.499,1.528,0.581,2.771,2.108,2.833c3.354,0.139,6.644,0.861,10,1c2.974,0.123,3.628-4.447,0.392-4.58
+ c-3.354-0.139-6.644-0.861-10-1c0.703,0.944,1.405,1.889,2.108,2.833c1.033-3.162,0.28-6.345,0.129-9.582c-0.061-1.305-0.857-2.251-2.237-2.251c-2.333,0-4.667,0-7,0c0.609,1.126,1.219,2.253,1.828,3.38c3.043-3.506,3.699-8.092,6-12
+ c0.969-1.646-0.361-4.105-2.46-3.294c-3.931,1.52-7.971,0.127-12,1c0.913,0.916,1.826,1.832,2.74,2.747c1.508-3.962,0.643-8.682,2.72-12.453c1.011-1.836-0.334-3.797-2.46-3.294c-3.296,0.781-6.688,0.216-10,1c0.957,0.722,1.913,1.443,2.869,2.165
+ c1.192-6.835,4.582-12.932,6.871-19.418c0.648-1.836-1.061-3.073-2.74-2.747c-4.099,0.797-8.248,0.054-12.368-0.086c0.703,0.944,1.405,1.889,2.108,2.833c2.555-6.75,7.73-12.076,10-19c0.506-1.545-0.588-2.747-2.108-2.833c-3.038-0.173-5.632-0.593-8.632,0.086
+ c0.913,0.916,1.826,1.832,2.74,2.747c4.926-10.996,8.795-22.392,12-34c0.54-1.956-1.546-3.678-3.362-2.501c-20.209,13.094-41.098,25.147-60.547,39.387c-2.62,1.918,0.771,4.929,3.211,3.143z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M128.522,527.394c16,34,29,70,41,106"/>
+ <path style="fill:#97BD95;stroke:none;" d="M126.734,526.707c16.098,34.348,28.999,70.048,41,106c0.424,1.27,4.426,3.92,3.576,1.373c-12-35.951-24.902-71.651-41-106c-0.553-1.179-4.689-3.749-3.576-1.373z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M382.522,550.394c34-8-16,48-21,54c8-6,16-13,26-14c-1,18-19,33-11,52"/>
+ <path style="fill:#97BD95;stroke:none;" d="M382.92,551.84c4.524-1.012,10.878-1.77,9.664,4.682c-1.184,6.29-5.437,12.236-8.935,17.438c-6.981,10.379-15.172,19.805-23.188,29.374c-1.015,1.21,0.367,3.452,1.817,2.355c7.673-5.797,15.359-12.487,25.243-13.795
+ c-0.5-0.5-1-1-1.5-1.5c-1.453,18.394-18.423,33.196-10.946,52.398c0.693,1.782,3.596,1.008,2.893-0.797c-7.186-18.457,9.64-33.702,11.054-51.602c0.059-0.739-0.731-1.602-1.5-1.5c-10.554,1.396-18.521,7.982-26.757,14.205c0.605,0.785,1.212,1.57,1.817,2.355
+ c9.475-11.31,19.199-22.476,26.949-35.085c3.009-4.896,7.131-11.479,6.065-17.521c-1.071-6.079-9.29-4.837-13.474-3.901c-1.888,0.422-1.087,3.314,0.797,2.893z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M16.522,481.394c30,0-20,52-15,59c8,12,29-1,34,18c6,17-15,36-17,53c11-1,21-7,27,4c3,4-2,12,1,16"/>
+ <path style="fill:#97BD95;stroke:none;" d="M15.585,481.996c15.126,0.245,7.22,16.068,2.904,23.864c-3.422,6.181-7.346,12.075-11.119,18.043c-2.719,4.3-5.919,8.819-7.37,13.754c-1.426,4.852,4.732,7.598,8.54,8.561c7.438,1.882,16.058-0.203,22.029,5.692
+ c8.146,8.042,3.832,21.428-0.37,30.096c-4.679,9.652-11.558,18.784-13.107,29.639c-0.058,0.403,0.533,0.375,0.806,0.345c7.247-0.79,16.429-5.04,22.94-0.283c7.963,5.817,0.323,13.393,4.235,20.076c0.43,0.734,3.146-0.352,2.897-0.777
+ c-2.326-3.973,0.083-8.861-0.032-13.184c-0.113-4.271-4.754-8.007-8.451-9.145c-3.594-1.107-7.838-0.137-11.405,0.562c-0.654,0.128-8.121,1.834-7.961,0.715c0.418-2.931,1.504-5.761,2.623-8.481c4.376-10.644,11.763-19.899,14.591-31.194
+ c2.041-8.149-0.3-18.775-8.571-22.414c-7.183-3.161-15.726-0.558-22.606-4.706c-5.498-3.313-3.047-7.51-0.623-11.955c6.588-12.076,15.745-22.886,20.592-35.879c1.202-3.221,2.262-7.205,0.768-10.501c-1.572-3.467-6.131-3.978-9.438-4.031
+ c-0.622-0.01-3.313,1.182-1.873,1.205z"/>
+ </g>
+ <g>
+ <path style="fill:none;stroke:none;" d="M224.522,532.394c0,23-7,46-9,68"/>
+ <path style="fill:#97BD95;stroke:none;" d="M222.253,532.904c-0.187,23.006-6.794,45.208-9,68c-0.267,2.752,4.331,1.109,4.537-1.021c2.206-22.792,8.813-44.995,9-68c0.022-2.795-4.52-1.126-4.537,1.021z"/>
+ </g>
+ </g>
+ <g id="Layer_x0020_4" style="fill-rule:nonzero;clip-rule:nonzero;fill:none;stroke:#000000;stroke-miterlimit:4;">
+ <g>
+ <path style="stroke:none;" d="M182.95,583.65c0.623,2.493,0.312,4.986,0.312,7.479c1.247-2.181,2.181-5.297,3.428-7.79c-0.312,1.869-0.623,4.051-0.935,5.921c1.247-1.247,2.182-3.428,3.116-4.986c-0.312,2.182-0.623,4.363-0.623,6.232
+ c1.558-2.182,2.493-4.985,3.428-7.479c-0.935,2.805-1.87,5.921-1.247,9.037c1.558-2.493,2.493-5.609,4.363-8.103c0,2.182-0.624,4.362-0.312,6.544"/>
+ <path style="fill:#F2F219;stroke:none;" d="M181.503,584.049c0.493,2.344,0.286,4.705,0.258,7.08c-0.018,1.469,2.081,2.08,2.795,0.757c1.35-2.503,2.2-5.229,3.428-7.79c-0.914-0.385-1.828-0.771-2.742-1.155c-0.322,1.972-0.613,3.948-0.935,5.921
+ c-0.22,1.346,1.408,2.691,2.507,1.459c1.413-1.583,2.301-3.464,3.351-5.29c-0.914-0.385-1.828-0.771-2.742-1.155c-0.313,2.204-0.627,4.402-0.677,6.631c-0.035,1.571,2,1.94,2.795,0.757c1.619-2.408,2.574-5.134,3.579-7.837c-0.964-0.266-1.928-0.531-2.893-0.797
+ c-1.074,3.267-1.783,6.396-1.247,9.834c0.209,1.346,2.135,1.38,2.742,0.358c1.572-2.646,2.579-5.576,4.363-8.103c-0.932-0.252-1.864-0.505-2.795-0.757c-0.07,2.195-0.517,4.344-0.312,6.544c0.178,1.909,3.179,1.927,3,0c-0.205-2.2,0.241-4.349,0.312-6.544
+ c0.051-1.602-1.989-1.898-2.795-0.757c-1.784,2.525-2.791,5.455-4.363,8.103c0.914,0.119,1.828,0.238,2.742,0.358c-0.444-2.85,0.366-5.56,1.247-8.24c0.611-1.859-2.229-2.582-2.893-0.797c-0.918,2.47-1.797,4.92-3.277,7.12c0.932,0.252,1.864,0.505,2.795,0.757
+ c0.043-1.962,0.294-3.892,0.569-5.834c0.225-1.583-1.828-2.744-2.742-1.155c-0.912,1.585-1.654,3.307-2.881,4.683c0.835,0.486,1.671,0.973,2.507,1.459c0.322-1.972,0.613-3.948,0.935-5.921c0.253-1.551-1.95-2.808-2.742-1.155c-1.227,2.56-2.079,5.289-3.428,7.79
+ c0.932,0.252,1.864,0.505,2.795,0.757c0.031-2.662,0.187-5.253-0.365-7.877c-0.398-1.893-3.29-1.09-2.893,0.797z"/>
+ </g>
+ <g>
+ <path style="fill:#3398C3;stroke:none;" d="M141.816,532.234c2.493,11.529,12.153,19.008,17.762,28.356c3.428,5.298,7.167,9.972,10.906,14.958c2.493,3.116,5.609,9.972,8.414,10.906"/>
+ <g>
+ <path style="stroke:none;" d="M141.816,532.234c2.493,11.529,12.153,19.008,17.762,28.356c3.428,5.298,7.167,9.972,10.906,14.958c2.493,3.116,5.609,9.972,8.414,10.906"/>
+ <path style="fill:#3398BE;stroke:none;" d="M140.37,532.633c2.825,11.468,11.874,19.024,17.913,28.715c3.666,5.883,8.326,11.055,12.201,16.783c2.181,3.226,3.98,7.792,7.657,9.619c1.727,0.858,3.247-1.729,1.515-2.59c-3.662-1.82-5.509-7.199-7.875-10.368
+ c-3.978-5.327-8.139-10.518-11.66-16.168c-5.674-9.104-14.194-15.979-16.857-26.788c-0.462-1.878-3.355-1.081-2.893,0.797z"/>
+ </g>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M142.345,521.713"/>
+ <path style="fill:#F2F219;stroke:none;" d="M142.345,526.713c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M146.593,527.448"/>
+ <path style="fill:#F2F219;stroke:none;" d="M146.593,532.448c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M151.69,528.723"/>
+ <path style="fill:#F2F219;stroke:none;" d="M151.69,533.723c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M156.576,528.298"/>
+ <path style="fill:#F2F219;stroke:none;" d="M156.576,533.298c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M161.674,529.997"/>
+ <path style="fill:#F2F219;stroke:none;" d="M161.674,534.997c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M168.258,532.333"/>
+ <path style="fill:#F2F219;stroke:none;" d="M168.258,537.333c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M174.206,535.731h0.212"/>
+ <path style="fill:#F2F219;stroke:none;" d="M174.206,540.731c0.071,0,0.142,0,0.212,0c2.726,0,5-2.274,5-5s-2.274-5-5-5c-0.071,0-0.142,0-0.212,0c-2.726,0-5,2.274-5,5s2.274,5,5,5z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M181.002,536.369"/>
+ <path style="fill:#F2F219;stroke:none;" d="M181.002,541.369c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M187.799,535.944"/>
+ <path style="fill:#F2F219;stroke:none;" d="M187.799,540.944c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M193.959,535.307"/>
+ <path style="fill:#F2F219;stroke:none;" d="M193.959,540.307c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M201.181,533.183"/>
+ <path style="fill:#F2F219;stroke:none;" d="M201.181,538.183c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M206.066,529.784"/>
+ <path style="fill:#F2F219;stroke:none;" d="M206.066,534.784c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M212.014,526.599"/>
+ <path style="fill:#F2F219;stroke:none;" d="M212.014,531.599c6.449,0,6.449-10,0-10s-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M217.96,521.713"/>
+ <path style="fill:#F2F219;stroke:none;" d="M217.96,526.713c6.448,0,6.448-10,0-10c-6.449,0-6.449,10,0,10z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M151.522,400.394c12,16,36,24,54,13"/>
+ <path style="fill:#000000;stroke:none;" d="M150.174,400.953c13.087,16.87,37.243,23.92,56.24,12.846c1.691-0.985-0.876-1.341-1.785-0.811c-17.706,10.321-39.874,2.167-51.76-13.154c-0.589-0.759-3.382,0.234-2.695,1.119z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M382.522,304.394c-2,28-19,55-16,83c18-15,24-43,38-60c2,27-8,58-14,85c-2,8-3,19-7,26c-3-7-7-16-12-21c-11-10-59-22-63,2c-9,43,110-24,125-30"/>
+ <path style="fill:#41783E;stroke:none;" d="M381.073,304.782c-2.317,28.25-18.683,54.179-16,83c0.068,0.727,2.492-0.267,2.761-0.497c18.535-15.921,23.068-41.429,38-60c-0.92,0.166-1.84,0.331-2.761,0.497c1.3,20.021-3.14,39.834-7.804,59.176
+ c-2.175,9.016-4.347,18.03-6.501,27.051c-1.979,8.284-2.613,17.002-6.675,24.64c0.959-0.214,1.918-0.429,2.878-0.644c-3.799-8.828-7.677-19.014-16.348-24.09c-6.468-3.787-13.995-5.992-21.278-7.528c-11.737-2.477-29.756-3.903-37.857,7.168
+ c-5.063,6.917-4.035,17.918,5.008,20.176c10.188,2.544,22.397-1.714,31.977-4.791c17.942-5.764,35.193-13.757,52.155-21.901c11.775-5.655,23.286-12.397,35.396-17.314c1.911-0.776,0.095-1.105-1.002-0.66c-8.816,3.58-17.225,8.353-25.747,12.561
+ c-14.304,7.063-28.735,13.906-43.517,19.917c-10.887,4.427-62.454,25.538-53.185-4.923c4.541-14.926,27.332-10.936,38.434-8.181c6.292,1.562,12.586,3.808,18.13,7.21c7.801,4.788,11.486,15.116,14.937,23.135c0.307,0.711,2.607-0.134,2.878-0.644
+ c4.035-7.586,4.852-16.364,6.676-24.641c2.125-9.645,4.609-19.209,6.925-28.81c4.541-18.831,8.684-38.202,7.42-57.683c-0.043-0.661-2.512,0.187-2.761,0.497c-14.921,18.558-19.5,44.11-38,60c0.92-0.165,1.84-0.331,2.761-0.497c-2.682-28.8,13.683-54.755,16-83
+ c0.032-0.402-2.827-0.091-2.898,0.776z"/>
+ </g>
+ <g>
+ <path style="fill:#92CACC;stroke:none;" d="M28.522,25.394c36-7,89-16,124-3c-30,15-74,22-96,49c26,4,55-10,81-10c-31,12-90,20-108,51c16,6,38-4,56-2c-7,20-48,26-62,44c-17,23,6,16,20,23c26,13-15,37-2,49"/>
+ <g>
+ <path style="stroke:none;" d="M28.522,25.394c36-7,89-16,124-3c-30,15-74,22-96,49c26,4,55-10,81-10c-31,12-90,20-108,51c16,6,38-4,56-2c-7,20-48,26-62,44c-17,23,6,16,20,23c26,13-15,37-2,49"/>
+ <path style="fill:#41783E;stroke:none;" d="M28.856,27.372c20.106-3.9,40.316-7.335,60.756-8.886c20.606-1.563,42.314-1.275,61.954,5.826c-0.007-1.239-0.014-2.477-0.021-3.716c-32.09,15.843-72.927,20.792-97.002,49.692c-1.25,1.5,0.059,2.902,1.646,3.124
+ c27.593,3.851,53.646-9.705,81-10c-0.214-1.272-0.429-2.544-0.644-3.816c-19.62,7.503-40.337,11.772-60.125,18.82c-18.511,6.593-38.704,15.801-49.194,33.337c-0.678,1.133,0.329,2.209,1.341,2.558c18.443,6.362,37.836-3.646,56.623-1.9
+ c-0.654-0.886-1.309-1.772-1.963-2.658c-3.117,8.239-11.006,13.093-18.368,17.177c-8.624,4.785-17.773,8.559-26.435,13.281c-8.093,4.412-14.827,9.67-19.882,17.439c-3.339,5.132-5.813,12.165,0.907,15.544c6.201,3.119,13.913,2.703,20.457,4.978
+ c7.874,2.737,11.722,8.75,8.686,16.633c-3.476,9.023-18.638,23.408-9.028,32.945c1.8,1.786,6.04-0.611,3.92-2.716c-4.519-4.484-0.477-10.923,2.112-15.352c3.238-5.54,7.031-10.822,8.744-17.089c4.373-16.006-16.493-19.389-27.349-21.513
+ c-2.282-0.447-5.494-0.929-6.743-3.149c-1.946-3.459,3.562-10.093,5.255-12.435c5.178-7.162,14.271-11.541,21.947-15.383c13.698-6.857,34.41-13.321,40.371-29.082c0.558-1.474-0.52-2.524-1.963-2.658c-18.259-1.697-37.601,8.232-55.377,2.1
+ c0.447,0.853,0.894,1.706,1.341,2.558c10.308-17.23,30.982-25.57,49.06-31.907c18.985-6.655,38.824-10.748,57.621-17.936c2.167-0.829,1.775-3.842-0.644-3.816c-27.314,0.295-53.53,13.834-81,10c0.548,1.041,1.097,2.083,1.646,3.124
+ c23.428-28.122,63.739-32.875,94.998-48.308c1.805-0.891,2.028-2.975-0.021-3.716c-19.46-7.036-40.862-7.494-61.296-6.166c-21.538,1.4-42.827,5-63.994,9.105c-3.074,0.596-2.424,4.557,0.668,3.957z"/>
+ </g>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M302.522,19.394c24-3,55-2,78,6c-27,11-63,9-86,28c10,12,48,4,64,7c-9,13-33,15-45,25c19,8,46,1,63,14c-15,7-34,10-46,20c14,9,32,5,47,13c-11,16-20,23-2,40"/>
+ <path style="fill:#41783E;stroke:none;" d="M302.336,20.243c25.513-3.084,52.797-2.343,77.308,5.972c0.098-0.488,0.195-0.976,0.293-1.464c-28.233,11.227-61.946,8.554-86.586,28.37c-0.246,0.198-0.411,0.584-0.171,0.853c5.031,5.612,13.552,6.453,20.618,6.945
+ c10.37,0.723,20.807-0.209,31.182-0.378c2.19-0.035,4.381-0.011,6.57,0.066c0.982,0.035,1.962,0.109,2.94,0.188c0.689,0.055,2.561-0.3,1.99,0.476c-3.703,5.039-9.985,7.924-15.551,10.332c-9.66,4.179-20.221,6.846-28.579,13.519
+ c-0.318,0.254-0.438,0.813,0.024,0.998c20.133,8.056,44.774,0.705,63,14c0.188-0.456,0.374-0.912,0.562-1.368c-15.375,6.999-33.132,9.58-46.586,20.37c-0.369,0.296-0.381,0.751,0.024,0.998c7.409,4.505,15.713,5.906,24.18,7.08
+ c4.741,0.657,9.45,1.354,14.093,2.539c2.512,0.641,4.911,1.58,7.267,2.645c1.553,0.701-2.408,5.124-2.93,5.848c-3.608,5.013-7.764,10.36-8.158,16.759c-0.443,7.209,5.627,13.41,10.354,17.985c0.77,0.745,3.511-0.36,2.684-1.16
+ c-5.485-5.31-11.414-11.75-9.765-19.964c1.436-7.151,7.748-13.593,11.778-19.401c0.2-0.289,0.098-0.626-0.209-0.781c-14.378-7.26-31.472-4.479-45.633-12.169c-1.048-0.569,8.893-6.145,9.229-6.306c3.704-1.774,7.59-3.174,11.457-4.542
+ c7.841-2.775,15.802-5.162,23.386-8.615c0.557-0.253,1.262-0.857,0.562-1.368c-17.135-12.5-40.042-7.042-59.367-12.686c-4.199-1.226-1.216-2.136,1.008-3.453c2.082-1.233,4.313-2.214,6.526-3.181c4.524-1.976,9.197-3.608,13.782-5.435
+ c7.589-3.023,15.307-6.725,20.26-13.465c0.296-0.402-0.066-0.806-0.478-0.876c-10.474-1.805-21.464-0.441-32.018-0.207c-5.959,0.133-11.96,0.091-17.876-0.705c-2.592-0.349-5.16-0.939-7.616-1.838c-2.072-0.758-6.99-2.599-4.192-4.731
+ c23.574-17.973,56.709-15.438,83.409-26.055c0.741-0.294,1.291-1.125,0.293-1.464c-24.933-8.459-52.745-9.164-78.692-6.028c-1.442,0.174-2.373,1.94-0.371,1.698z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M306.522,31.394c2,23-8,47-8,70c16-21,27-46,43-65c5,28-4,59,4,87c21-21,30-54,48-75c6,37-12,82-17,118"/>
+ <path style="fill:#41783E;stroke:none;" d="M305.073,31.782c1.749,23.723-7.741,46.387-8,70c-0.01,0.883,2.506-0.05,2.782-0.417c15.661-20.783,26.339-44.941,43-65c-0.928,0.139-1.854,0.278-2.782,0.417c4.852,28.85-3.787,58.462,4,87
+ c0.26,0.95,2.407-0.035,2.782-0.417c21.158-21.568,28.733-52.116,48-75c-0.928,0.139-1.854,0.278-2.782,0.417c6.101,39.9-11.413,78.896-16.991,117.825c-0.14,0.972,2.759,0.425,2.881-0.427c5.595-39.05,23.129-78.146,17.009-118.175
+ c-0.143-0.934-2.465,0.041-2.782,0.417c-19.268,22.886-26.846,53.437-48,75c0.928-0.139,1.854-0.278,2.782-0.417c-7.788-28.538,0.852-58.15-4-87c-0.157-0.931-2.461,0.031-2.782,0.417c-16.661,20.059-27.339,44.217-43,65c0.928-0.139,1.854-0.278,2.782-0.417
+ c0.258-23.615,9.749-46.263,8-70c-0.058-0.774-2.97-0.2-2.898,0.776z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M98.522,189.394c-15,29-21,69-23,101c8-28,19-56,28-84c-2,22-8,43-10,65c11-21,17-45,27-67c-6,32-21,70-18,101"/>
+ <path style="fill:#41783E;stroke:none;" d="M97.169,189.348c-15.778,30.966-20.896,66.908-23.098,101.219c-0.082,1.277,2.637,0.57,2.901-0.348c8.173-28.378,18.929-55.912,28-84c-0.967,0.116-1.934,0.232-2.901,0.348c-2.101,21.855-7.899,43.146-10,65
+ c-0.119,1.231,2.444,0.568,2.804-0.128c11.08-21.467,17.126-45.013,27-67c-0.935,0.042-1.869,0.085-2.804,0.128c-6.375,33.312-21.003,66.746-17.998,101.214c0.087,0.996,2.997,0.362,2.897-0.776c-2.988-34.285,11.66-67.648,18.002-100.786
+ c0.224-1.17-2.477-0.6-2.804,0.128c-9.873,21.985-15.924,45.54-27,67c0.935-0.042,1.869-0.085,2.804-0.128c2.101-21.855,7.899-43.146,10-65c0.123-1.279-2.613-0.545-2.901,0.348c-9.071,28.089-19.827,55.622-28,84c0.967-0.116,1.934-0.232,2.901-0.348
+ c2.19-34.113,7.212-69.988,22.902-100.781c0.647-1.27-2.261-0.964-2.706-0.091z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M310.522,191.394c18,36,15,78,14,117"/>
+ <path style="fill:#41783E;stroke:none;" d="M309.073,191.782c17.808,36.312,15.024,77.502,13.991,116.758c-0.036,1.368,2.887,0.835,2.916-0.293c1.036-39.387,3.862-80.801-14.009-117.242c-0.555-1.13-3.397-0.242-2.898,0.776z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M342.522,238.394c14,33,4,81-10,112"/>
+ <path style="fill:#41783E;stroke:none;" d="M341.073,238.782c7.465,18.112,7.796,38.146,5.397,57.337c-2.341,18.727-7.709,37.232-15.398,54.45c-0.414,0.927,2.474,0.604,2.9-0.352c7.938-17.774,13.185-36.738,15.599-56.05c2.34-18.721,1.663-38.537-5.6-56.162
+ c-0.429-1.039-3.285-0.163-2.898,0.776z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M372.522,259.394c-6,36-12,68-30,100"/>
+ <path style="fill:#41783E;stroke:none;" d="M371.058,259.518c-5.771,34.561-12.702,68.799-29.914,99.736c-0.774,1.391,2.169,1.335,2.756,0.279c17.302-31.095,24.284-65.521,30.086-100.264c0.234-1.402-2.721-0.991-2.928,0.248z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M340.522,247.394c2,32-8,67-15,98"/>
+ <path style="fill:#41783E;stroke:none;" d="M339.073,247.782c1.849,33.219-7.722,65.729-15,97.792c-0.247,1.092,2.673,0.63,2.898-0.361c7.313-32.219,16.856-64.83,15-98.208c-0.053-0.942-2.96-0.343-2.898,0.776z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M300.522,359.394c-1,13-6,26-8,39"/>
+ <path style="fill:#41783E;stroke:none;" d="M299.081,359.604c-1.21,13.281-5.843,25.885-8,39c-0.159,0.972,2.74,0.444,2.883-0.422c2.156-13.115,6.789-25.719,8-39c0.093-1.018-2.805-0.426-2.883,0.422z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M317.522,352.394c-2,14-5,28-7,41"/>
+ <path style="fill:#41783E;stroke:none;" d="M316.083,352.615c-2.003,13.723-4.853,27.301-7,41c-0.144,0.915,2.748,0.38,2.877-0.443c2.146-13.699,4.996-27.276,7-41c0.135-0.922-2.757-0.377-2.877,0.443z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M335.522,350.394c2,10,2,21-1,31"/>
+ <path style="fill:#41783E;stroke:none;" d="M334.073,350.782c1.934,10.295,1.841,20.644-1.01,30.754c-0.349,1.235,2.599,0.848,2.918-0.285c2.894-10.262,2.949-20.811,0.99-31.246c-0.224-1.19-3.131-0.46-2.898,0.777z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M111.522,348.394c-2.316-8.887-4.786-10.421-3.505-21.399c-4.01,1.734-7.974,4.031-12.258,3.498c-1.846-10.303,8.353-19.444-2.236-26.099"/>
+ <path style="fill:#41783E;stroke:none;" d="M112.971,348.005c-2.056-7.506-4.33-13.238-3.515-21.227c0.085-0.834-1.6-0.419-1.978-0.251c-1.503,0.671-3.002,1.352-4.511,2.009c-1.907,1.209-3.885,1.287-5.935,0.23c-0.103-1.253-0.062-2.505,0.123-3.754
+ c0.309-2.91,1.342-5.755,2.068-8.577c1.369-5.329,0.251-9.371-4.346-12.573c-0.755-0.526-3.333,0.629-2.71,1.063c9.421,6.563,0.951,16.859,2.143,25.955c0.027,0.207,0.383,0.298,0.537,0.305c5.034,0.234,9.183-1.705,13.708-3.723
+ c-0.659-0.083-1.318-0.167-1.978-0.251c-0.817,8.016,1.42,13.991,3.496,21.571c0.231,0.846,3.128,0.063,2.897-0.777z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M72.522,311.394c13,0,5,14,4,22c2-1,8-2,10-4c-4,14,6,16,8,28"/>
+ <path style="fill:#41783E;stroke:none;" d="M71.043,312.529c11.563,0.447,4.104,14.931,3.127,21.441c-0.185,1.231,2.829,0.144,3.243-0.031c3.706-1.567,7.739-1.97,10.973-4.563c-1.405,0.198-2.81,0.396-4.215,0.594c-1.29,5.035-1.231,9.469,1.233,14.118
+ c2.55,4.81,5.667,8.618,6.755,14.121c0.203,1.028,4.988-0.308,4.727-1.631c-0.928-4.695-3.178-8.415-5.719-12.388c-3.155-4.935-3.755-9.668-2.293-15.373c0.353-1.378-3.802,0.263-4.215,0.594c-2.437,1.954-6.179,2.233-9.027,3.437
+ c1.081-0.01,2.162-0.021,3.243-0.031c1.223-8.152,8.666-22.036-4.873-22.559c-1.096-0.042-5.438,2.174-2.957,2.271z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M171.522,341.394c12,15,38,17,56,12c-12,4-32,2-43-2c15,5,27,7,42,2c-3,2-7,2-11,3"/>
+ <path style="fill:#66BD61;stroke:none;" d="M169.281,342.046c13.904,16.637,39.715,18.226,59.334,12.992c-0.729-1.097-1.457-2.192-2.186-3.289c-12.846,3.992-28.5,2.41-41.065-1.971c-0.561,1.077-1.123,2.153-1.684,3.23c14.712,4.817,28.927,6.78,43.935,2.029
+ c-0.906-1.023-1.812-2.047-2.718-3.069c-3.227,1.785-6.924,2.002-10.468,2.78c-3.197,0.703-0.161,3.805,2.186,3.289c3.976-0.874,7.918-1.221,11.532-3.22c2.579-1.427-0.924-3.637-2.718-3.069c-13.807,4.371-26.556,2.454-40.065-1.971
+ c-2.63-0.861-4.794,2.146-1.684,3.23c13.754,4.795,30.885,6.396,44.935,2.029c3.17-0.985,0.135-3.907-2.186-3.289c-17.128,4.569-40.428,3.636-52.666-11.008c-1.388-1.66-6.235-0.793-4.482,1.305z"/>
+ </g>
+ <g style="fill:#FFFFFF;stroke:none;">
+ <path d="M189.022,237.394c1,0,2,2,2.5-1c-0.5,0-2.5,1-2.5,1c0,0.5,0.5-0.5,0.5-0.5c0,1-0.5,1.5-0.5,2c1,1,2.5,2.5,4,3.5c0-1-1-2.5-1.5-3.5l1.5,0.5c-1.5,0.5-3.5,0.5-5.5,0.5l1.5-1.5c1.5,1.5,4,2.5,5,4"/>
+ <g>
+ <path style="fill:none;" d="M189.022,237.394c1,0,2,2,2.5-1c-0.5,0-2.5,1-2.5,1c0,0.5,0.5-0.5,0.5-0.5c0,1-0.5,1.5-0.5,2c1,1,2.5,2.5,4,3.5c0-1-1-2.5-1.5-3.5l1.5,0.5c-1.5,0.5-3.5,0.5-5.5,0.5l1.5-1.5c1.5,1.5,4,2.5,5,4"/>
+ <path d="M187.396,238.28c-0.184-0.018,0.662,0.398,0.812,0.462c0.805,0.347,1.775,0.218,2.606,0.071c1.932-0.343,2.803-1.043,3.16-2.907c0.105-0.549-1.772-0.402-1.947-0.381c-1.729,0.207-3.302,0.904-4.847,1.671c-0.196,0.098-0.676,0.378-0.61,0.685
+ c0.009,0.043,0.019,0.086,0.028,0.13c0.127,0.597,1.581,0.434,1.947,0.381c1.349-0.193,2.721-0.477,3.382-1.765c-1.619,0.251-3.238,0.502-4.857,0.753c-0.04,0.571-0.255,1.028-0.425,1.563c-0.176,0.553,0.177,0.748,0.549,1.117
+ c1.095,1.088,2.233,2.127,3.504,3.007c0.775,0.536,4.885,0.143,4.776-1.161c-0.106-1.275-0.925-2.393-1.5-3.5c-1.498,0.432-2.995,0.863-4.493,1.295c0.5,0.167,1,0.333,1.5,0.5c0.414-0.473,0.828-0.945,1.242-1.417c-1.123,0.335-2.435,0.201-3.595,0.202
+ c0.363,0.291,0.726,0.583,1.088,0.874c0.5-0.5,1-1,1.5-1.5c-1.506,0.236-3.012,0.472-4.519,0.708c1.546,1.461,3.722,2.266,5,4c0.711,0.963,5.341-0.408,4.648-1.348c-1.279-1.733-3.455-2.538-5-4c-0.856-0.81-3.796-0.015-4.519,0.708c-0.5,0.5-1,1-1.5,1.5
+ c-0.755,0.755,0.562,0.875,1.088,0.874c2.5-0.001,4.992-0.078,7.405-0.798c0.364-0.108,2.54-0.985,1.242-1.417c-0.5-0.167-1-0.333-1.5-0.5c-0.556-0.185-5.01,0.298-4.493,1.295c0.575,1.107,1.394,2.225,1.5,3.5c1.592-0.387,3.184-0.774,4.776-1.161
+ c-1.06-0.732-2.019-1.576-2.95-2.464c-0.395-0.376-1.012-0.718-0.773-1.311c0.204-0.505,0.313-0.995,0.351-1.539c0.069-0.998-4.426-0.086-4.857,0.753c-0.051,0.098-0.134,0.326-0.19,0.387c0.9-0.301,1.8-0.602,2.699-0.902c-0.024,0.003-0.047,0.007-0.071,0.01
+ c0.649,0.127,1.298,0.254,1.947,0.382c-0.009-0.043-0.019-0.086-0.028-0.13c-0.204,0.229-0.407,0.457-0.61,0.685c0.153-0.076,0.32-0.159,0.461-0.224c0.786-0.36,1.253-0.292-0.308-0.105c-0.649-0.127-1.298-0.254-1.947-0.381
+ c-0.043,0.293-0.118,0.578-0.225,0.854c-0.175,0.264-0.14,0.294,0.104,0.091c0.563-0.189,1.126-0.379,1.689-0.569c-0.043,0.007-0.086,0.015-0.129,0.023c0.593-0.04,1.186-0.08,1.779-0.12c0.373,0.031-0.213-0.181-0.315-0.239
+ c-0.421-0.24-0.841-0.366-1.325-0.414c-1.14-0.112-2.46,0.14-3.468,0.689c-0.804,0.439-0.708,0.993,0.216,1.084z"/>
+ </g>
+ </g>
+ <g style="fill:#FFFFFF;stroke:none;">
+ <path d="M278.522,264.894c0.5-1,2-2,3-3c0.5,1,2,3.5,2.5,4.5c-2,0-4.5-1-5.5-1.5"/>
+ <g>
+ <path style="fill:none;" d="M278.522,264.894c0.5-1,2-2,3-3c0.5,1,2,3.5,2.5,4.5c-2,0-4.5-1-5.5-1.5"/>
+ <path d="M280.811,265.899c0.634-1.105,1.875-1.846,2.779-2.719c-1.437-0.518-2.873-1.035-4.309-1.553c0.781,1.528,1.719,2.972,2.5,4.5c0.33-0.429,0.661-0.858,0.992-1.287c-1.361-0.035-2.575-0.576-3.729-1.138c-0.664-0.324-2.392-0.771-2.813,0.186
+ c-0.437,0.994,1.101,1.873,1.766,2.197c2.264,1.104,4.753,1.798,7.271,1.862c0.706,0.018,1.359-0.57,0.992-1.287c-0.781-1.528-1.719-2.972-2.5-4.5c-0.555-1.085-3.167-2.655-4.309-1.553c-1.098,1.06-2.446,1.932-3.221,3.281
+ c-0.861,1.501,3.644,3.639,4.578,2.011z"/>
+ </g>
+ </g>
+ <g>
+ <path style="fill:#CC1233;stroke:none;" d="M181.522,233.894"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M271.022,259.894c-0.5,1,1-0.5,1-1.5l-2,1c2,0,1-0.5,0.5,0"/>
+ <path style="fill:#CC1233;stroke:none;" d="M269.558,257.965c-0.412,0.867,0.206,1.971,0.655,2.692c0.282,0.453,1.389,2.204,2.181,1.625c0.679-0.495,1.094-1.472,1.13-2.281c0.04-0.888-0.658-1.936-1.163-2.602c-0.272-0.359-1.067-1.425-1.66-1.128
+ c-0.667,0.333-1.333,0.667-2,1c-0.568,0.284,0.126,1.679,0.28,1.987c0.287,0.573,0.651,1.121,1.09,1.59c0.219,0.233,0.663,0.712,1.035,0.709c0.444-0.004,0.928-0.004,1.354-0.148c0.859-0.29-0.356-2.364-0.529-2.643c-0.455-0.73-1.691-2.44-2.729-1.496
+ c-0.629,0.571,0.294,2.066,0.606,2.567c0.312,0.501,0.685,0.993,1.144,1.37c0.146,0.12,0.655,0.523,0.893,0.307c0.097-0.087,0.197-0.146,0.321-0.188c0.187-0.063-0.211,0.02-0.036,0.009c0.161-0.009,0.214,0.112-0.146-0.079c-0.243-0.2-0.486-0.401-0.73-0.602
+ c0.004,0.004,0.009,0.008,0.013,0.012c-0.497-0.88-0.993-1.761-1.489-2.642c0.001,0.005,0.002,0.009,0.004,0.014c-0.009-0.248-0.017-0.495-0.024-0.742c0.064-0.191,0.194-0.192,0.063-0.132c-0.038,0.017-0.211,0.047-0.029,0.018
+ c-0.279,0.044-0.567,0.043-0.85,0.045c0.802,1.429,1.604,2.858,2.405,4.287c0.667-0.333,1.333-0.667,2-1c-0.941-1.243-1.882-2.486-2.823-3.73c0.014-0.294-0.059,0.172-0.098,0.275c-0.078,0.206-0.194,0.397-0.313,0.582c-0.057,0.088-0.091,0.125-0.21,0.256
+ c-0.046,0.05-0.097,0.095-0.148,0.139c-0.204,0.173-0.078-0.19,0.397,0.117c0.688,0.915,1.376,1.83,2.064,2.744c-0.003-0.007-0.006-0.015-0.008-0.021c0.072,0.307,0.145,0.614,0.217,0.921c-0.008,0.404-0.02,0.198,0.063,0.023c0.162-0.341-0.063-0.935-0.18-1.242
+ c-0.228-0.601-0.558-1.169-0.945-1.68c-0.223-0.293-1.41-1.761-1.803-0.935z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M180.022,234.894c0.417-0.438,0.672-0.662,1.308-0.167c-0.09,0.154,0.621-1.815,0.591-1.73c0.649,0.235,0.791,0.643,0.426,1.223c-0.417,0.118-0.693-0.012-0.829-0.389c0.03-0.006-1,0.828-1.334,0.932
+ c0.333-1.616,0.482-0.934,1.197-1.392c-0.254,0.447-0.626,0.599-1.116,0.454c1.398,0.042,1.201-0.083,2.284,0.469c-0.034-0.002-1.791,0.122-1.905,0.124c0.971-1.702,1.083,0.03,1.378-0.024"/>
+ <path style="fill:#CC1233;stroke:none;" d="M182.418,235.289c0.125-0.132,0.135-0.14,0.028-0.024c0.16-0.113,0.121-0.094-0.119,0.057c-0.372,0.081-0.743,0.161-1.114,0.242c-0.153,0.001-0.306,0.003-0.458,0.005c-0.418-0.068-0.836-0.136-1.254-0.204
+ c-0.123-0.042-0.24-0.097-0.351-0.164c-0.072-0.29-0.145-0.58-0.217-0.87c-0.002,0.003-0.004,0.005-0.006,0.008c1.606,0.066,3.212,0.131,4.817,0.197c0.127,0.244,0.048,0.382,0.094,0.225c0.021-0.072,0.045-0.143,0.069-0.213c0.02-0.061,0.106-0.31,0.002-0.01
+ c0.04-0.114,0.08-0.229,0.12-0.342c0.095-0.269,0.189-0.539,0.289-0.806c-1.632-0.166-3.263-0.332-4.895-0.498c0,0.001,0,0.001-0.001,0.002c-0.107,0.34,0.479,0.729,0.7,0.818c0.193,0.091,0.189,0.074-0.013-0.051c-0.101-0.149-0.113-0.16-0.035-0.031
+ c-0.028-0.142-0.039-0.141-0.033,0c-0.006,0.188,0.025-0.01-0.091,0.194c0.392-0.207,0.783-0.413,1.175-0.62c0.299-0.022,0.598-0.044,0.897-0.065c0.418,0.068,0.836,0.136,1.254,0.204c0.201,0.103,0.402,0.205,0.604,0.308c0.123,0.139,0.143,0.133,0.058-0.018
+ c-0.321-0.741-1.717-0.891-2.375-0.918c-0.711-0.029-1.998,0.019-2.442,0.721c0.213-0.337,0.305-0.284,0.114-0.128c-0.125,0.102-0.253,0.199-0.382,0.296c-0.119,0.089-0.24,0.175-0.363,0.259c-0.056,0.038-0.113,0.075-0.171,0.111
+ c-0.291,0.184,0.382-0.168,0.13-0.072c1.411,0.321,2.821,0.642,4.232,0.963c0.033-0.153,0.067-0.306,0.105-0.458c0.095-0.379-0.082,0.168,0.028-0.103c0.025-0.062,0.06-0.117,0.098-0.171c-0.128,0.183-0.25,0.244-0.482,0.335
+ c-0.739,0.293-0.402,0.137-0.172,0.076c0.481-0.127,0.829-0.265,1.256-0.522c-1.51-0.349-3.02-0.698-4.53-1.046c-0.111,0.141-0.111,0.163,0.002,0.066c0.151-0.071,0.306-0.132,0.466-0.182c0.422-0.034,0.845-0.067,1.267-0.101
+ c0.282,0.051,0.563,0.103,0.846,0.154c-0.449,0.676-0.897,1.352-1.346,2.027c0.238,0.006,0.477,0.01,0.715,0.013c0.254,0.002,0.867,0.082-0.152-0.042c0.222,0.038,0.092,0.007-0.39-0.093c0.319,0.084-0.537-0.228-0.197-0.08c0.188,0.082,0.371,0.179,0.555,0.272
+ c0.393-0.606,0.786-1.213,1.178-1.819c-0.636,0.017-1.269,0.101-1.905,0.124c1.006,0.5,2.011,0.999,3.017,1.498c0.084-0.142,0.17-0.279,0.267-0.413c0.117-0.137,0.104-0.131-0.042,0.018c-0.298,0.127-0.37,0.165-0.217,0.115c-0.372,0.081-0.743,0.162-1.114,0.242
+ c0.018-0.002,0.036-0.003,0.053-0.005c-0.443-0.018-0.885-0.036-1.328-0.054c-0.638-0.011-1.124-0.239-1.458-0.685c0.038,0.048,0.067,0.104,0.097,0.157c0.049,0.086,0.09,0.177,0.139,0.264c0.46,0.824,1.708,1.047,2.539,1.057
+ c0.627,0.008,2.503-0.024,2.543-1.013c0.039-0.964-1.826-1.21-2.453-1.217c-0.009,0-0.019,0-0.029,0c0.584,0.133,1.168,0.266,1.753,0.399c0.211,0.094,0.382,0.235,0.514,0.421c-0.019-0.029-0.037-0.06-0.053-0.09c-0.05-0.089-0.093-0.182-0.143-0.271
+ c-0.291-0.517-0.809-0.771-1.346-0.959c-1.046-0.367-2.203-0.27-3.24,0.051c-0.579,0.179-0.982,0.698-1.276,1.194c-0.299,0.503,0.184,0.906,0.598,1.111c0.751,0.373,1.597,0.417,2.418,0.387c0.635-0.023,1.269-0.106,1.905-0.124
+ c0.561-0.015,1.434-0.199,1.776-0.708c0.33-0.49-0.212-0.916-0.598-1.111c-0.674-0.342-1.338-0.593-2.081-0.751c-0.634-0.136-1.311-0.1-1.957-0.116c-0.736-0.02-1.968,0.017-2.442,0.72c-0.446,0.662,0.617,1.191,1.096,1.307c1.516,0.364,3.834,0.567,4.813-0.971
+ c0.438-0.688-0.613-1.159-1.096-1.307c-1.083-0.332-2.44-0.336-3.434,0.26c0.427-0.256,0.253-0.122,0.117-0.07c0.646-0.245,0.439-0.125,0.241-0.088c-0.441,0.083-0.732,0.226-1.119,0.43c-0.565,0.298-0.683,1.118-0.801,1.669
+ c-0.116,0.545,0.854,0.908,1.198,1.014c0.959,0.293,2.09,0.308,3.034-0.051c0.435-0.165,0.832-0.442,1.204-0.717c0.242-0.179,0.631-0.424,0.793-0.681c-1.606-0.065-3.211-0.131-4.817-0.197c0.268,0.619,0.955,0.986,1.58,1.138c1.14,0.276,2.771,0.427,3.804-0.295
+ c0.477-0.333,0.653-1.011,0.468-1.543c-0.177-0.507-0.762-0.857-1.23-1.048c0.233,0.273,0.466,0.545,0.7,0.818c0,0,0-0.001,0-0.002c-0.014-0.241-0.12-0.433-0.318-0.577c-0.405-0.335-0.965-0.49-1.472-0.574c-0.633-0.104-1.3-0.104-1.929,0.034
+ c-0.307,0.067-1.04,0.254-1.175,0.62c-0.12,0.325-0.234,0.652-0.349,0.979c-0.127,0.363-0.481,0.958-0.272,1.354c0.386,0.736,1.663,0.888,2.375,0.917c0.765,0.031,1.933-0.034,2.442-0.721c0.002-0.002,0.004-0.005,0.006-0.008c0.218-0.294,0.048-0.679-0.217-0.87
+ c-0.967-0.697-2.235-1.082-3.436-0.909c-1.061,0.153-1.722,0.403-2.448,1.156c-0.266,0.275-0.001,0.689,0.217,0.87c0.404,0.336,0.965,0.491,1.472,0.574c1.022,0.168,2.339,0.139,3.104-0.653z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M393.717,625.076c1.265,2.952,0.844,6.326,1.054,9.489c3.585-7.591,7.17-18.978,14.761-23.405"/>
+ <path style="fill:#FFFFFF;stroke:none;" d="M392.268,625.465c1.042,3.126,0.925,6.233,1.054,9.489c0.021,0.522,2.658-0.19,2.874-0.659c3.718-8.036,6.563-18.102,14.435-23.132c1.179-0.753-1.722-0.31-2.197-0.006c-8.243,5.269-11.185,15.243-15.087,23.679
+ c0.958-0.22,1.916-0.439,2.874-0.659c-0.129-3.255-0.013-6.362-1.054-9.489c-0.202-0.605-3.072,0.256-2.898,0.777z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M408.266,618.962c0,8.645-5.482,16.235-6.114,24.67"/>
+ <path style="fill:#FFFFFF;stroke:none;" d="M406.817,619.351c-0.331,8.64-5.176,16.138-6.114,24.67c-0.043,0.394,2.801,0.109,2.898-0.777c0.938-8.533,5.782-16.017,6.114-24.67c0.018-0.458-2.865-0.085-2.898,0.777z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M417.333,616.01c-2.53,9.277-5.481,18.134-6.747,27.622"/>
+ <path style="fill:#FFFFFF;stroke:none;" d="M415.907,616.278c-2.539,9.191-5.394,18.281-6.771,27.742c-0.038,0.262,2.775,0.063,2.898-0.777c1.365-9.382,4.206-18.388,6.724-27.502c0.143-0.515-2.661-0.153-2.852,0.537z"/>
+ </g>
+ <g>
+ <path style="stroke:none;" d="M404.471,631.824c2.53-2.741,3.162-1.688,5.692-0.211c4.85,2.741,6.748,0.843,10.121-3.374"/>
+ <path style="fill:#FFFFFF;stroke:none;" d="M405.681,632.243c1.649-1.647,3.75,0.463,5.333,1.153c1.163,0.508,2.61,0.699,3.856,0.446c2.95-0.597,4.822-2.953,6.624-5.185c1.156-1.431-1.602-1.852-2.42-0.838c-1.12,1.386-2.381,3.311-4.133,3.94
+ c-1.875,0.673-4.163-1.342-5.698-2.188c-2.326-1.283-4.354,0.204-5.982,1.833c-1.284,1.283,1.519,1.739,2.42,0.838z"/>
+ </g>
+ </g>
+ </g>
+ </svg>
+
+ <!-- ============================================================= -->
+ <!-- Batik sample mark -->
+ <!-- ============================================================= -->
+ <use xlink:href="batikLogo.svg#Batik_Tag_Box" />
+
+</svg>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/batikLogo.svg b/ASF_20_SRC_AUTO/src/blocks/batik/samples/batikLogo.svg
new file mode 100755
index 0000000..5afd1d7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/batikLogo.svg
@@ -0,0 +1,174 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+
+<!-- ====================================================================== -->
+<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
+<!-- -->
+
+<!-- This software is published under the terms of the Apache Software -->
+<!-- License version 1.1, a copy of which has been included with this -->
+<!-- distribution in the LICENSE file. -->
+<!-- ====================================================================== -->
+
+<!-- ====================================================================== -->
+<!-- Defines the Batik Logo using an SVG font. -->
+<!-- -->
+<!-- @author vhardy@apache.org -->
+<!-- @author thomas.deweese@kodak.com -->
+<!-- @author bella.robinson@cmis.csiro.au -->
+<!-- @version $Id: batikLogo.svg,v 1.1 2003/05/07 19:15:02 vgritsenko Exp $ -->
+<!-- ====================================================================== -->
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body" width="450" height="500" viewBox="0 0 450 500">
+ <title>Batik Logo</title>
+ <g id="content">
+ <defs>
+ <g id="Batik_Squiggle" stroke="none" transform="scale(1.6, 1.6)">
+ <!-- The squiggle is defined as approx 54x57 units @ 0,0 -->
+ <path id="Batik_Squiggle_Blue" fill="#6666FF"
+ d="M14.88,13.024c-0.186-0.247-0.322-0.254-0.42-0.151c0.008-1.744-1.698-2.605-3.419-1.529c-0.065,0.047-0.131,0.104-0.197,0.161c-0.379-0.118-0.805-0.078-1.252,0.162
+ c0.995-1.338,2.228-3.299,3.129-5.603c0.479-1.44,0-4.32-2.16-3.12c-3.6,1.68-6.48,4.08-8.88,7.2c-0.72,0.96-1.92,2.88-0.96,4.319c0.62,1.034,2.126,0.463,2.993-0.328C2.767,15.45,1.173,17.944,0,20.944c-0.96,2.4,0.479,4.8,2.88,3.12
+ c1.376-0.953,2.701-1.957,3.942-3.023c0.134,0.188,0.406,0.114,0.857-0.337c0.221-0.221,0.441-0.445,0.661-0.668c0.672,0.652,1.843,0.769,2.938-0.052c0.061-0.091,0.136-0.169,0.204-0.253c1.212-0.44,2.762-2.248,2.917-2.867c0.72-1.2,1.2-2.64,0.48-3.84z"/>
+ <path id="Batik_Squiggle_Red" fill="#FF0000"
+ d="M33.84,11.583c0-1.08-0.976-2.341-2.222-2.058c0.021-0.034,0.041-0.068,0.062-0.103c0.72-1.199,1.2-2.64,0.72-4.079c-0.24-0.96-1.439-1.921-2.399-1.2c-1.075,0.645-2.147,1.24-3.2,1.832
+ c-0.161-0.339-0.372-0.642-0.619-0.871c0.073-0.16,0.144-0.32,0.218-0.481c0.48-1.2,0.72-6-1.92-4.56c-1.2,0.72-2.16,1.439-3.12,2.399c-1.2,1.2-1.92,3.12-1.439,4.801c0.063,0.189,0.14,0.355,0.226,0.503c-0.293,0.494-0.602,0.973-0.947,1.417
+ c-0.72,1.2-1.199,2.64-0.72,4.08c0.24,0.96,1.2,1.92,2.4,1.199c0.227-0.129,0.439-0.274,0.658-0.413c0.451,0.664,1.158,1.001,1.982,0.413c0.154-0.092,0.306-0.176,0.46-0.267c-0.298,1.618-0.163,3.473,1.433,3.402c0.371,0.98,1.139,1.784,2.188,1.185
+ c1.44-0.96,2.88-1.92,4.32-2.88c1.439-0.72,2.159-2.64,1.92-4.32z"/>
+ <path id="Batik_Squiggle_Green" fill="#33CC33"
+ d="M25.692,24.387c-0.212-1.113-1.282-1.869-2.892-1.283c-0.112,0.032-0.226,0.09-0.339,0.164c-0.809-0.396-2.029-0.135-2.781,0.316c-0.238,0.159-0.412,0.428-0.541,0.755
+ c-0.143,0.081-0.288,0.163-0.437,0.252c0.89-2.079-1.543-2.853-3.343-1.727c-2.16,1.2-3.84,2.4-5.28,4.56c-0.479,0.961-0.72,2.881,0.961,2.881c0.004,0,0.008,0,0.013,0c-0.304,0.808-0.617,1.614-0.974,2.399c-1.68,3.12,1.921,3.84,3.841,2.16
+ c0.105-0.105,0.217-0.202,0.324-0.304c0.622,0.677,1.771,0.869,3.035,0.064c0.818-0.446,1.635-0.87,2.446-1.298c0.973,0.631,2.822,0.489,3.794-0.622c0.413-0.413,0.799-0.814,1.167-1.217c0.011,0.006,0.021,0.012,0.033,0.017c0.029-0.048,0.056-0.096,0.085-0.144
+ c1.29-1.429,2.303-2.883,3.035-4.896c0.516-1.721-0.82-2.205-2.148-2.076z"/>
+ </g> <!-- End Batik_Squiggle -->
+
+ <!-- ============================= -->
+ <!-- Batik SVG Font Definition -->
+ <!-- ============================= -->
+
+ <font horiz-adv-x="150" id="Batik">
+ <font-face
+ font-family="Batik SVGFont"
+ units-per-em="240"
+ ascent="190"
+ descent="50"
+ alphabetic="0"/>
+
+ <missing-glyph horiz-adv-x="150" d="M20 0 V240 H100 V0 z"/>
+
+
+ <glyph unicode=" " glyph-name=" " horiz-adv-x="100"/>
+
+ <glyph id="B" unicode="B" glyph-name="B" horiz-adv-x="130">
+ <g transform="scale(1,-1)translate(0,-170)">
+ <path d="M21.244,141.963V40.831c0-6.188-0.57-10.773-1.707-13.754c-1.137-2.977-3.066-5.461-5.793-7.449c-1.137-0.766-2.367-1.395-3.695-1.891s-3.012-0.938-5.055-1.32c-2.125-0.371-3.488-0.781-4.094-1.23s-0.906-1.121-0.906-2.02
+ c0-1.195,0.32-2.035,0.969-2.52c0.645-0.484,1.953-0.73,3.93-0.73c0.758,0,3.816,0.211,9.176,0.625c5.355,0.418,10.387,0.625,15.098,0.625c2.961,0,7.883-0.207,14.758-0.625c6.875-0.414,12.324-0.625,16.352-0.625c16.711,0,29.762,3.461,39.145,10.379
+ s14.074,16.574,14.074,28.965c0,7.148-1.793,13.418-5.375,18.816c-3.586,5.398-9,9.996-16.242,13.797v2.18c11.574,2.051,20.445,6.547,26.613,13.492s9.254,15.879,9.254,26.805c0,15.406-5.184,27.645-15.551,36.715s-24.473,13.602-42.316,13.602
+ c-6.078,0-13.367-0.293-21.871-0.875c-8.508-0.586-13.898-0.875-16.172-0.875c-6.762,0-13.863,0.348-21.301,1.043c-1.824,0.137-2.965,0.207-3.418,0.207c-0.609,0-1.199-0.344-1.77-1.027s-0.852-1.406-0.852-2.172c0-1.598,1.355-2.93,4.074-3.996l0.113-0.055
+ c1.809-0.836,3.223-1.574,4.242-2.223c1.02-0.645,1.906-1.387,2.66-2.223c2.039-2.047,3.492-4.516,4.359-7.402s1.301-7.254,1.301-13.105z M39.244,73.209c0,3.648,0.453,5.93,1.367,6.84c0.914,0.914,2.816,1.367,5.711,1.367h16.555
+ c12.023,0,20.758-2.031,26.203-6.098c5.441-4.066,8.164-10.508,8.164-19.324c0-10.945-4.188-20.027-12.559-27.246c-8.375-7.219-18.914-10.832-31.625-10.832c-5.711,0-9.441,0.855-11.191,2.566s-2.625,5.148-2.625,10.316v42.41z M39.244,150.737
+ c0,6.539,1.789,10.953,5.371,13.242c3.578,2.293,11.16,3.438,22.746,3.438c14.172,0,24.82-3.031,31.945-9.094s10.688-15.156,10.688-27.281c0-13.031-4.234-23.188-12.695-30.461s-20.316-10.914-35.563-10.914H47.463c-3.578,0-5.84,0.477-6.793,1.426
+ s-1.426,3.285-1.426,7.004v52.641z"/>
+ <!-- Put the Squiggle in the B -->
+ <use xlink:href="#Batik_Squiggle"
+ transform="translate(45,103)" />
+ </g>
+ </glyph>
+
+ <glyph id="a" unicode="a" glyph-name="a" horiz-adv-x="105">
+ <path transform="scale(1,-1)translate(-125, -170)"
+ d="M194.825,161.952c-5.238,4.766-10.891,8.285-16.961,10.559c-6.07,2.27-12.863,3.406-20.375,3.406c-7.363,0-12.98-1.922-16.848-5.762c-3.871-3.844-5.805-9.414-5.805-16.719c0-9.359,4.266-16.758,12.805-22.195
+ c8.535-5.438,23.766-10.215,45.695-14.324v-15.789c0-7.09-2.16-12.523-6.477-16.297s-10.523-5.664-18.625-5.664c-6.891,0-11.758,0.992-14.598,2.977s-4.258,5.336-4.258,10.063c0,1.984,0.281,4.27,0.852,6.863s0.855,4.156,0.855,4.688
+ c0,1.07-0.516,1.945-1.547,2.633s-2.352,1.027-3.953,1.027c-3.055,0-5.652-0.816-7.793-2.449s-3.207-3.664-3.207-6.098c0-6.605,3.664-12.625,11-18.055c7.332-5.43,15.977-8.148,25.93-8.148c13.906,0,23.727,2.621,29.465,7.855
+ c5.734,5.238,8.605,14.535,8.605,27.891v42.844c0,6.516,0.621,10.715,1.867,12.594s3.609,2.816,7.086,2.816c0.602,0,1.434-0.035,2.492-0.113c1.055-0.078,1.773-0.117,2.152-0.117c0.527,0,1.02,0.246,1.473,0.73c0.453,0.488,0.68,1.07,0.68,1.742
+ c0,1.574-1.273,2.887-3.816,3.934s-5.785,1.574-9.73,1.574c-4.176,0-7.668-1.039-10.477-3.117s-4.973-5.191-6.488-9.348z M193.037,122.167c-16.43,3.43-27.789,7.273-34.074,11.535c-6.285,4.266-9.426,9.973-9.426,17.129c0,5.559,1.512,9.879,4.543,12.961
+ c3.027,3.086,7.27,4.625,12.723,4.625c7.492,0,13.738-1.941,18.738-5.832c4.996-3.887,7.496-8.813,7.496-14.777v-25.641z"/>
+ </glyph>
+
+ <glyph id="ti" unicode="ti" glyph-name="ti" horiz-adv-x="100">
+ <g style="fill:#FF0000;" transform="scale(1,-1)translate(-215,-170)">
+ <path d="M311.259,168.69c-0.684-0.531-2.199-0.871-4.551-1.023c-1.441,0-2.711-0.113-3.813-0.34s-2.105-0.57-3.012-1.027c-3.035-1.594-5.102-3.586-6.203-5.98c-1.102-2.391-1.648-6.625-1.648-12.703v-35.543c0-11.688,0.188-23.227,0.566-34.617
+ c0.078-2.047,0.117-3.227,0.117-3.531c0-1.594-0.191-2.617-0.57-3.074c-0.383-0.453-1.066-0.684-2.059-0.684c-1.066,0-9.44,3.681-11.451,4.196s-6.655,1.804-11.209,1.804h-20.266V55.045c0-1.148-0.117-1.918-0.344-2.301s-0.684-0.578-1.363-0.578
+ c-1.219,0-3.059,2.172-5.527,6.516s-4.727,7.617-6.777,9.824c-2.887,3.199-5.98,6.246-9.285,9.141s-4.953,4.609-4.953,5.141c0,0.609,0.375,1.203,1.129,1.773s1.434,0.855,2.035,0.855h8.586v59.84c0,11.266,2.051,19.273,6.16,24.027
+ c4.105,4.754,10.875,7.133,20.305,7.133c5.724,0,11.038-1.066,15.948-3.17c4.26-0.381,8.633-0.58,13.126-0.58c4.328,0,8.957,0.211,13.895,0.625c4.934,0.414,7.668,0.625,8.199,0.625c1.141,0,2.09-0.266,2.848-0.793c0.758-0.531,1.141-1.176,1.141-1.934
+ c0-1.137-0.344-1.969-1.023-2.5z M251.317,163.288c-2.773-2.922-4.156-7.227-4.156-12.914v-64.957c0,0,12.812,0.543,13.215,0.57c1.194,0.081,2.965,0.184,5.164,0.184c3.867,0,6.23,1.637,7.637,3.914c1.402,2.281,2.105,7.367,2.105,15.266v42.039
+ c0,4.781-0.285,8.273-0.848,10.477c-0.566,2.203-1.563,4.211-2.992,6.031c-0.758,0.836-1.961,1.863-3.617,3.074c-0.292,0.169-0.532,0.312-0.731,0.434c-1.229,0.172-2.446,0.261-3.651,0.261c-5.313,0-9.355-1.457-12.125-4.379z"/>
+ <path d="M284.067,48.667c1.969,0,4.207-1.535,6.711-4.605c2.5-3.07,3.754-5.555,3.754-7.453c0-1.969-1.309-4.453-3.926-7.449c-2.617-2.992-4.648-4.492-6.086-4.492c-1.594,0-3.695,1.555-6.313,4.664s-3.926,5.766-3.926,7.961c0,2.352,1.137,4.836,3.41,7.453s4.398,3.922,6.375,3.922z"/>
+ </g>
+ </glyph>
+
+
+ <glyph id="k" unicode="k" glyph-name="k" horiz-adv-x="120">
+ <path transform="scale(1,-1)translate(-310, -170)"
+ d="M331.507,147.307V35.413c0-8.078-0.68-13.219-2.031-15.43s-3.906-3.316-7.664-3.316h-1.805c-1.387,0-2.465-0.242-3.23-0.734c-0.77-0.492-1.191-1.188-1.27-2.094c0-1.656,1.977-2.941,5.93-3.848l0.23-0.074
+ c1.824-0.301,3.516-0.68,5.074-1.133s3.098-0.984,4.617-1.594c2.66-1.059,5.586-2.535,8.781-4.43c3.191-1.895,5.246-2.844,6.16-2.844c0.984,0,1.746,0.383,2.277,1.141s0.801,1.859,0.801,3.301c0,0.305-0.039,1.082-0.113,2.332
+ c-0.078,1.254-0.113,2.375-0.113,3.359c-0.383,5.391-0.668,10.684-0.859,15.883s-0.285,10.531-0.285,15.996v80.641l33.148-30.207c1.434-1.367,2.566-2.715,3.398-4.047c0.832-1.328,1.25-2.527,1.25-3.594c0-1.289-1.324-2.316-3.969-3.078
+ c-0.305-0.074-0.566-0.148-0.793-0.227c-1.891-0.375-3.215-0.828-3.969-1.359c-0.758-0.527-1.133-1.242-1.133-2.148c0-0.68,0.453-1.262,1.359-1.754s2.004-0.738,3.289-0.738c0.301,0,2.305,0.211,6.008,0.625c3.703,0.418,7.297,0.625,10.773,0.625
+ c2.871,0,6.141-0.207,9.809-0.625c3.664-0.414,5.875-0.625,6.633-0.625c1.438,0,2.496,0.227,3.176,0.68s1.02,1.133,1.02,2.039c0,1.734-1.285,2.828-3.855,3.281h-0.113c-1.133,0.152-2.27,0.379-3.402,0.684s-2.305,0.723-3.516,1.254
+ c-7.332,2.891-13.758,7.07-19.273,12.543c-0.605,0.684-1.059,1.141-1.359,1.367l-19.73,17.781c10.66,14.914,19.223,26.215,25.688,33.902s11.59,12.672,15.371,14.953c3.023,1.75,6.879,2.969,11.566,3.652c0.375,0.078,0.641,0.113,0.793,0.113
+ c2.191,0.152,3.609,0.438,4.254,0.852c0.641,0.414,1,1.113,1.078,2.094c0,1.133-0.512,1.922-1.535,2.375s-3.012,0.68-5.965,0.68h-19.277c-5,0-15.23-10.113-30.684-30.34c-5.609-7.375-10.117-13.227-13.523-17.563l-6.516,6.156v15.617
+ c0,6.852,0.531,11.344,1.602,13.477c1.066,2.133,3.086,3.883,6.059,5.25c1.219,0.535,3.121,0.992,5.715,1.371c0.078,0.023,0.152,0.031,0.23,0.031c2.133,0.152,3.523,0.492,4.172,1.023s0.973,1.363,0.973,2.5c0,0.836-0.344,1.496-1.027,1.988
+ s-1.594,0.738-2.734,0.738c-0.305,0-2.758-0.211-7.355-0.625c-4.602-0.414-8.992-0.625-13.172-0.625c-6.309,0-12.313,0.375-18.016,1.125c-0.914,0.082-1.445,0.125-1.594,0.125c-0.836,0-1.523-0.25-2.055-0.746s-0.797-1.09-0.797-1.777
+ c0-0.766,0.262-1.473,0.789-2.121c0.523-0.648,1.613-1.434,3.27-2.355c0.375-0.227,0.789-0.492,1.242-0.797c1.273-0.758,2.215-1.445,2.816-2.055c1.277-1.367,2.16-3.074,2.648-5.129c0.488-2.051,0.734-5.926,0.734-11.629z"/>
+ </glyph>
+
+ <glyph unicode="*" glyph-name="*" horiz-adv-x="120">
+ <g transform="scale(1, -1)">
+ <use xlink:href="#Batik_Squiggle"
+ transform="scale(2,2) translate(0,-67)" />
+ </g>
+ </glyph>
+
+ <hkern g1="B" g2="a" k="5"/>
+ <hkern g1="a" g2="t" k="14"/>
+ <hkern g1="a" g2="ti" k="14"/>
+ <hkern g1="i" g2="k" k="6"/>
+ <hkern g1="ti" g2="k" k="6"/>
+ </font>
+
+ <g id="Batik_Logo_Underline" transform="scale(.75,.75)" >
+ <path d="M37.886,60c-0.018,0.1-0.377,1.375-0.439,1.492c-0.15,0.285-1.382,2.046-1.598,2.291c0.206-0.233,0.428-0.452,0.65-0.67c-6.851,6.751-0.262,0.713,0.893-0.499c1.893-1.986-2.124,1.712,0.112-0.08
+ c0.604-0.484,1.242-0.925,1.886-1.355c-2.574,1.719,0.458-0.228,1.417-0.868c-2.634,1.761-1.231,0.788-0.605,0.423c1.799-1.049,3.686-1.946,5.591-2.783c0.978-0.43,1.97-0.828,2.964-1.217c1.844-0.723-1.918,0.683-0.003,0.012
+ c0.706-0.264,1.412-0.528,2.117-0.792c-1.224,0.456-1.388,0.521-0.491,0.195c2.531-0.908,5.102-1.708,7.683-2.461c5.73-1.672,11.556-3.013,17.401-4.216c30.689-6.315,61.555-8.765,92.723-10.467c35.225-1.924,70.559-2.313,105.819-1.278
+ c27.375,0.803,55.137,2.029,82.154,6.813c1.854,0.328,3.702,0.69,5.545,1.079c-2.182-0.459,0.632,0.149,1.102,0.26c0.785,0.185,1.566,0.383,2.347,0.585c2.714,0.705,5.407,1.537,7.987,2.642c0.676-4.98,1.351-9.959,2.026-14.939
+ c-29.001,20.428-70.184,18.783-104.484,20.881c-37.85,2.314-78.422,7.341-105.371,37.024c-3.142,3.46-5.693,10.35-0.21,12.998c8.018,3.873,16.683,5.137,25.266,7.166c7.149,1.69,13.362,4.381,16.934,11.121c4.934,9.311,2.75,18.519-0.175,28.003
+ c-3.217,10.428-5.508,20.886-0.692,31.219c4.219,9.05,19.441-3.641,15.823-11.611c-4.234-9.326,1.407-19.828,3.653-28.997c2.667-10.888,1.908-22.401-3.872-32.224c-9.76-16.588-31.066-13.848-46.449-21.271c-0.07,4.333-0.14,8.666-0.21,12.998
+ c10.537-11.719,25.017-18.668,40.974-22.714c18.159-4.604,37.034-5.719,55.666-6.747c37.146-2.049,77.822-2.405,109.506-24.634c4.136-2.902,8.771-12.048,2.026-14.939c-7.868-3.373-16.687-4.781-25.083-6.132c-12.447-2.004-25.032-3.156-37.6-4.075
+ c-33.215-2.427-66.599-2.839-99.887-2.247c-34.872,0.621-69.791,2.496-104.432,6.637c-24.317,2.907-50.972,6.112-73.187,17.171c-4.951,2.465-9.505,5.587-13.309,9.623c-1.027,1.089-2.19,2.464-2.986,3.643c0.137-0.203-3.419,6.639-1.518,3.165
+ c-0.205,0.374-0.38,0.762-0.549,1.151c-1.126,2.59-2.056,5.322-2.196,8.168c-0.222,4.484,4.48,3.091,6.917,1.551c3.856-2.437,7.345-6.516,8.167-11.093z"/>
+ </g> <!-- End Batik_Logo_Underline -->
+
+ <filter id="dropShadow" filterUnits="objectBoundingBox"
+ filterRes="200" width="1.4" height="1.4">
+ <feGaussianBlur in="SourceAlpha" stdDeviation="4" />
+ <feOffset dx="8" dy="8" />
+ <feComponentTransfer result="shadow">
+ <feFuncA type="linear" slope=".5" intercept="0" />
+ </feComponentTransfer>
+ <feComposite in2="shadow" in="SourceGraphic"/>
+ </filter>
+
+ <g id="Batik_Logo_Shadow" filter="url(#dropShadow)">
+ <g id="Batik_Logo">
+ <text id="text" x="0" y="0" font-family="Batik SVGFont"
+ font-size="180">Batik</text>
+ <use xlink:href="#Batik_Logo_Underline"/>
+ </g> <!-- End Batik_Logo -->
+ </g> <!-- End Batik_Logo_Shadow -->
+
+ <g id="Batik_Tag_Box" >
+ <rect x="1" y="1" width="446" height="496"
+ style="fill:none; stroke:black" />
+ <use xlink:href="#Batik_Squiggle"
+ transform="translate(418,467) scale(0.5, 0.5)" />
+ </g> <!-- End Batik_Tag_Box -->
+ </defs>
+
+ <use x="65" y="233" xlink:href="#Batik_Logo_Shadow" />
+ </g>
+
+ <!-- ============================================================= -->
+ <!-- Batik sample mark -->
+ <!-- ============================================================= -->
+ <use xlink:href="#Batik_Tag_Box" />
+</svg>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/henryV.svg b/ASF_20_SRC_AUTO/src/blocks/batik/samples/henryV.svg
new file mode 100644
index 0000000..a87b977
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/henryV.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+
+<!-- ========================================================================= -->
+<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
+<!-- -->
+<!-- This software is published under the terms of the Apache Software License -->
+<!-- version 1.1, a copy of which has been included with this distribution in -->
+<!-- the LICENSE file. -->
+<!-- ========================================================================= -->
+
+<!-- ========================================================================= -->
+<!-- Test description here -->
+<!-- -->
+<!-- @author bill.haneman@ireland.sun.com -->
+<!-- @version $Id: henryV.svg,v 1.1 2003/03/09 00:02:42 pier Exp $ -->
+<!-- ========================================================================= -->
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="450" height="500" viewBox="0 0 450 500">
+<title>Henry V</title>
+
+ <!-- ============================================================= -->
+ <!-- Test content -->
+ <!-- ============================================================= -->
+ <defs>
+ <filter id="blur" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" >
+ <feGaussianBlur stdDeviation="2 2" x="-10%" y="-10%" width="120%" height="120%" />
+ </filter>
+ <filter id="wideBlur" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" >
+ <feGaussianBlur stdDeviation="8 8" x="-10%" y="-10%" width="120%" height="120%" />
+ </filter>
+ <clipPath id="shakeSpeare" font-family="Serif" font-weight="bold" font-size="125" text-anchor="middle" transform="scale(0.8, 1.5)">
+ <text x="50%" y="28%">Henry</text>
+ <text font-size="200" x="50%" y="60%">V</text>
+ </clipPath>
+
+ <g font-family="Serif" font-weight="bold" font-size="125" text-anchor="middle" id="henryV" transform="scale(0.8, 1.5)">
+ <text x="50%" y="28%">Henry</text>
+ <text font-size="200" x="50%" y="60%">V</text>
+ </g>
+<g font-family="Serif" id="text" font-style="oblique" font-size="15" fill="DarkRed" transform="scale(1.10, 0.92)">
+<text x="3%" y="6%">O for a Muse of fire, that would ascend</text>
+<text x="3%" y="9%">The brightest heaven of invention,</text>
+<text x="3%" y="12%">A kingdom for a stage, princes to act</text>
+<text x="3%" y="15%">And monarchs to behold the swelling scene!</text>
+<text x="3%" y="18%">Then should the warlike Harry, like himself,</text>
+<text x="3%" y="21%">Assume the port of Mars; and at his heels,</text>
+<text x="3%" y="24%">Leash'd in like hounds, should famine, sword and fire</text>
+<text x="3%" y="27%">Crouch for employment. But pardon, and gentles all,</text>
+<text x="3%" y="30%">The flat unraised spirits that have dared</text>
+<text x="3%" y="33%">On this unworthy scaffold to bring forth</text>
+<text x="3%" y="36%">So great an object: can this cockpit hold</text>
+<text x="3%" y="39%">The vasty fields of France? or may we cram</text>
+<text x="3%" y="42%">Within this wooden O the very casques</text>
+<text x="3%" y="45%">That did affright the air at Agincourt?</text>
+<text x="3%" y="48%">O, pardon! since a crooked figure may</text>
+<text x="3%" y="51%">Attest in little place a million;</text>
+<text x="3%" y="54%">And let us, ciphers to this great accompt,</text>
+<text x="3%" y="57%">On your imaginary forces work.</text>
+<text x="3%" y="60%">Suppose within the girdle of these walls</text>
+<text x="3%" y="63%">Are now confined two mighty monarchies,</text>
+<text x="3%" y="66%">Whose high upreared and abutting fronts</text>
+<text x="3%" y="69%">The perilous narrow ocean parts asunder:</text>
+<text x="3%" y="72%">Piece out our imperfections with your thoughts;</text>
+<text x="3%" y="75%">Into a thousand parts divide on man,</text>
+<text x="3%" y="78%">And make imaginary puissance;</text>
+<text x="3%" y="81%">Think when we talk of horses, that you see them</text>
+<text x="3%" y="84%">Printing their proud hoofs i' the receiving earth;</text>
+<text x="3%" y="87%">For 'tis your thoughts that now must deck our kings,</text>
+<text x="3%" y="90%">Carry them here and there; jumping o'er times,</text>
+<text x="3%" y="93%">Turning the accomplishment of many years</text>
+<text x="3%" y="96%">Into an hour-glass: for the which supply,</text>
+<text x="3%" y="99%">Admit me Chorus to this history;</text>
+<text x="3%" y="102%">Who prologue-like your humble patience pray,</text>
+<text x="3%" y="105%">Gently to hear, kindly to judge, our play.</text>
+ </g>
+ </defs>
+ <rect width="100%" height="100%" fill="GoldenRod"/>
+ <g id="testContent" transform="scale(1.2,1.0)">
+ <g opacity="0.8" fill="Maroon">
+ <use xlink:href="#text"/>
+ </g>
+ <g transform="translate(-1, -1)">
+ <use xlink:href="#henryV" fill="DarkGoldenRod" stroke-width="0.1" stroke="black"/>
+ </g>
+ <g clip-path="url(#shakeSpeare)" transform="translate(-1, -1)">
+ <use xlink:href="#text"/>
+ <g font-style="normal">
+ <use xlink:href="#henryV" fill="none" stroke-width="4" stroke="black" filter="url(#blur)" opacity="0.35" transform="translate(-2, 2)"/>
+ </g>
+ </g>
+ </g>
+ <rect x="0%" y="0%" width="100%" height="100%" stroke="SaddleBrown" stroke-width="12" fill="none" filter="url(#wideBlur)"/>
+
+
+</svg>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/opac.svg b/ASF_20_SRC_AUTO/src/blocks/batik/samples/opac.svg
new file mode 100644
index 0000000..fb4f97d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/opac.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="yes"?>
+
+<svg width="300px" height="300px">
+ <g style="fill:#444">
+ <path d="M0,0v250h300v-250z"/>
+ </g>
+ <g style="stroke:#000; stroke-width:2; fill:#f00; fill-opacity:0.5">
+ <circle cx="100" cy="100" r="80"/>
+ </g>
+ <g style="stroke:#000; stroke-width:2; fill:#00f; fill-opacity:0.5">
+ <circle cx="200" cy="100" r="80"/>
+ </g>
+ <g style="stroke:#000; stroke-width:2; fill:#0f0; fill-opacity:0.5">
+ <circle cx="150" cy="150" r="80"/>
+ </g>
+</svg>
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/samples.xml b/ASF_20_SRC_AUTO/src/blocks/batik/samples/samples.xml
new file mode 100644
index 0000000..542915c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/samples.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<!-- CVS $Id: samples.xml,v 1.5 2003/09/07 06:13:39 vgritsenko Exp $ -->
+
+<samples name="Batik Samples" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <group name="Main examples page.">
+ <sample name="Back" href="..">to Cocoon examples main page</sample>
+ </group>
+
+ <group name="Hello World!">
+ <sample name="SVG" href="../hello-world/hello.svg">
+ SVG from the main samples
+ </sample>
+ <sample name="JPG" href="hello.jpeg">
+ Same hello in JPG format
+ </sample>
+ <sample name="PNG" href="hello.png">
+ Hello in PNG format
+ </sample>
+ </group>
+
+ <group name="Batik Logo">
+ <sample name="Batik Logo in SVG" href="batikLogo.svg">
+ Batik logo as it is in SVG (SVG browser, plugin, viewer needed).
+ </sample>
+ <sample name="Batik Logo in JPEG" href="batikLogo.jpeg">
+ Batik logo rasterized with Batik to JPEG.
+ </sample>
+ <sample name="Batik Logo in PNG" href="batikLogo.png">
+ Batik logo rasterized with Batik to PNG.
+ </sample>
+ </group>
+
+ <group name="Henry V">
+ <sample name="Henry V in SVG" href="henryV.svg">
+ Henry V as it is in SVG (SVG browser, plugin, viewer needed).
+ </sample>
+ <sample name="Henry V in JPEG" href="henryV.jpeg">
+ Henry V rasterized with Batik to JPEG.
+ </sample>
+ <sample name="Henry V in PNG" href="henryV.png">
+ Henry V rasterized with Batik to PNG.
+ </sample>
+ </group>
+
+ <group name="Anne's Portrait">
+ <note>Note: You can refer to other SVG files. anne.svg refers to
+ batikLogo.svg to draw batik 'stamp' in the lower right corner.</note>
+ <sample name="Anne in SVG" href="anne.svg">
+ Portrait as it is in SVG (SVG browser, plugin, viewer needed).
+ </sample>
+ <sample name="Anne in JPEG" href="anne.jpeg">
+ Portrait rasterized with Batik to JPEG.
+ </sample>
+ <sample name="Anne in PNG" href="anne.png">
+ Portrait rasterized with Batik to PNG.
+ </sample>
+ </group>
+
+ <group name="Resources">
+ <sample name="SVG Specification" href="http://www.w3.org/TR/SVG/">
+ Scalable Vector Graphics (SVG) 1.0 Specification
+ </sample>
+ <sample name="Batik web site" href="http://xml.apache.org/batik">
+ Links and reference information, SVG browser
+ </sample>
+ <sample name="Adobe SVG Viewer" href="http://www.adobe.com/svg/viewer/install/main.html">
+ SVG browser plugin
+ </sample>
+ <sample name="Mozilla SVG Project" href="http://www.mozilla.org/projects/svg/">
+ Mozilla with native SVG support
+ </sample>
+ </group>
+</samples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/batik/samples/sitemap.xmap
new file mode 100644
index 0000000..a91bcf3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/sitemap.xmap
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+
+<!--+
+ | Batik block samples sitemap
+ |
+ | CVS $Id: sitemap.xmap,v 1.7 2003/09/30 17:05:57 joerg Exp $
+ +-->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Components ================================ -->
+
+ <map:components>
+ <map:serializers default="html">
+ <map:serializer logger="sitemap.serializer.svgxml" mime-type="image/svg+xml" name="svgxml" src="org.apache.cocoon.serialization.XMLSerializer">
+ <doctype-public>-//W3C//DTD SVG 1.0//EN</doctype-public>
+ <doctype-system>http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd</doctype-system>
+ </map:serializer>
+ <map:serializer logger="sitemap.serializer.svg2jpeg" name="svg2jpeg" src="org.apache.cocoon.serialization.SVGSerializer" mime-type="image/jpeg">
+ <parameter name="quality" type="float" value="0.9"/>
+ </map:serializer>
+ <map:serializer logger="sitemap.serializer.svg2png" name="svg2png" src="org.apache.cocoon.serialization.SVGSerializer" mime-type="image/png"/>
+ </map:serializers>
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view from-label="content" name="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="content" name="pretty-content">
+ <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+ <map:serialize type="html"/>
+ </map:view>
+
+ <map:view from-position="last" name="links">
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+ <map:pipeline type="caching">
+ <map:match pattern="">
+ <map:redirect-to uri="welcome"/>
+ </map:match>
+
+ <map:match pattern="welcome">
+ <map:generate src="samples.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <!-- ========================== batik ================================ -->
+
+ <map:match pattern="hello.jpeg">
+ <map:generate src="cocoon://samples/hello-world/hello.svg"/>
+ <map:serialize type="svg2jpeg"/>
+ </map:match>
+
+ <map:match pattern="hello.png">
+ <map:generate src="cocoon://samples/hello-world/hello.svg"/>
+ <map:serialize type="svg2png"/>
+ </map:match>
+
+ <map:match pattern="*.svg">
+ <map:generate src="{1}.svg"/>
+ <map:serialize type="svgxml"/>
+ </map:match>
+
+ <map:match pattern="*.jpeg">
+ <map:generate src="{1}.svg"/>
+ <map:serialize type="svg2jpeg"/>
+ </map:match>
+
+ <map:match pattern="*.png">
+ <map:generate src="{1}.svg"/>
+ <map:serialize type="svg2png"/>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/fragment-extractor.xsl b/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/fragment-extractor.xsl
new file mode 100644
index 0000000..7352bd1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/fragment-extractor.xsl
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fe="http://apache.org/cocoon/fragmentextractor/2.0">
+
+ <xsl:template match="//fe:fragment">
+ <img src="welcome-svg-images/{@fragment-id}.png" border="0"/>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/svg-samples2html.xsl b/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/svg-samples2html.xsl
new file mode 100644
index 0000000..fad36c3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/samples/stylesheets/svg-samples2html.xsl
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title>Apache Cocoon @version@</title>
+ </head>
+ <body bgcolor="#ffffff" link="#0086b2" vlink="#00698c" alink="#743e75">
+ <table border="0" cellspacing="2" cellpadding="2" align="center" width="100%">
+ <tr>
+ <td colspan="3" align="center"><font face="arial,helvetica,sanserif" color="#000000">The Apache Software Foundation is proud to present...</font></td>
+ </tr>
+ <tr>
+ <td width="30%"></td>
+ <td width="40%" align="center"><img border="0" src="images/cocoon.gif"/></td>
+ <td width="30%" align="center"><font face="arial,helvetica,sanserif" color="#000000"><b>version @version@</b></font></td>
+ </tr>
+ </table>
+
+ <xsl:apply-templates/>
+
+ <p align="center">
+ <font size="-1">
+ Copyright © @year@ <a href="http://www.apache.org">The Apache Software Foundation</a>.<br/>
+ All rights reserved.
+ </font>
+ </p>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template name="generate-group-heading">
+ <xsl:param name="position"/>
+ <svg:svg width="200" height="15" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:choose>
+ <xsl:when test="$position = 'left'">
+ <svg:g style="stroke: black; stroke-width: 2px;">
+ <svg:line x1="5" y1="5" x2="8" y2="5"/>
+ <svg:line x1="5" y1="5" x2="5" y2="15"/>
+ </svg:g>
+ <svg:text x="10px" y="11px" style="font-family:sans; font-size:15px; fill: #0086b2; text-anchor:start;">
+ <xsl:value-of select="@name"/>
+ </svg:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <svg:g style="stroke: black; stroke-width: 2px;">
+ <svg:line x1="195" y1="5" x2="192" y2="5"/>
+ <svg:line x1="195" y1="5" x2="195" y2="15"/>
+ </svg:g>
+ <svg:text x="190px" y="11px" style="font-family:sans; font-size:15px; fill: #0086b2; text-anchor:end;">
+ <xsl:value-of select="@name"/>
+ </svg:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </svg:svg>
+ </xsl:template>
+
+ <xsl:template name="generate-item">
+ <xsl:param name="position"/>
+ <svg:svg width="200" height="15" xmlns:svg="http://www.w3.org/2000/svg">
+ <xsl:choose>
+ <xsl:when test="$position = 'left'">
+ <svg:g style="stroke: black; stroke-width: 2px;">
+ <xsl:choose>
+ <xsl:when test="position() = last()">
+ <svg:line x1="5" y1="-1" x2="5" y2="5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <svg:line x1="5" y1="-1" x2="5" y2="15"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <svg:line x1="5" y1="5" x2="18" y2="5"/>
+ </svg:g>
+ <svg:text x="20px" y="11px" style="font-family:sans; font-size:15px; fill: black; text-anchor:start;">
+ <xsl:value-of select="@name"/>
+ </svg:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <svg:g style="stroke: black; stroke-width: 2px;">
+ <xsl:choose>
+ <xsl:when test="position() = last()">
+ <svg:line x1="195" y1="-1" x2="195" y2="5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <svg:line x1="195" y1="-1" x2="195" y2="15"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <svg:line x1="195" y1="5" x2="182" y2="5"/>
+ </svg:g>
+ <svg:text x="180px" y="11px" style="font-family:sans; font-size:15px; fill: black; text-anchor:end;">
+ <xsl:value-of select="@name"/>
+ </svg:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </svg:svg>
+ </xsl:template>
+
+ <xsl:template name="generate-group">
+ <xsl:param name="position"/>
+ <tr>
+ <td>
+ <xsl:call-template name="generate-group-heading">
+ <xsl:with-param name="position" select="$position"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ <xsl:for-each select="sample">
+ <tr>
+ <td>
+ <a href="{@href}">
+ <xsl:call-template name="generate-item">
+ <xsl:with-param name="position" select="$position"/>
+ </xsl:call-template>
+ </a>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="samples">
+ <xsl:variable name="half" select="round(count(group) div 2)"/>
+ <table cellspacing="0" cellpadding="0" border="0" align="center">
+ <tr>
+ <td valign="top">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <xsl:for-each select="group[position() <= $half]">
+ <xsl:call-template name="generate-group">
+ <xsl:with-param name="position">left</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </table>
+ </td>
+ <td valign="top">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <xsl:for-each select="group[position() > $half]">
+ <xsl:call-template name="generate-group">
+ <xsl:with-param name="position">right</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/batik/test/anteater/samples-mime-types.xml b/ASF_20_SRC_AUTO/src/blocks/batik/test/anteater/samples-mime-types.xml
new file mode 100644
index 0000000..69443f7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/batik/test/anteater/samples-mime-types.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Tests the basic functionality of the Batik samples by checking
+ their content-type: if a sample gives an error instead of
+ generating an image, its content-type will be text/html.
+
+ @author bdelacretaz@apache.org
+
+ $Id: samples-mime-types.xml,v 1.4 2004/02/10 07:47:49 bdelacretaz Exp $
+ -->
+
+<project name="batik-samples-mime-types" default="batik-samples-mime-types">
+
+ <group id="default">
+ <property name="usetidy" value="false"/>
+ </group>
+
+ <target name="batik-samples-mime-types">
+ <property name="helloWorldBaseUrl" value="${anteater.env.cocoon}/samples/hello-world"/>
+ <property name="batikBaseUrl" value="${anteater.env.cocoon}/samples/batik"/>
+
+ <httpRequest href="${helloWorldBaseUrl}/hello.svg">
+ <match>
+ <header name="Content-type" value="image/svg+xml"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/hello.jpeg">
+ <match>
+ <header name="Content-type" value="image/jpeg"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/hello.png">
+ <match>
+ <header name="Content-type" value="image/png"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/batikLogo.svg">
+ <match>
+ <header name="Content-type" value="image/svg+xml"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/batikLogo.jpeg">
+ <match>
+ <header name="Content-type" value="image/jpeg"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/batikLogo.png">
+ <match>
+ <header name="Content-type" value="image/png"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/henryV.svg">
+ <match>
+ <header name="Content-type" value="image/svg+xml"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/henryV.jpeg">
+ <match>
+ <header name="Content-type" value="image/jpeg"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/henryV.png">
+ <match>
+ <header name="Content-type" value="image/png"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/anne.svg">
+ <match>
+ <header name="Content-type" value="image/svg+xml"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/anne.jpeg">
+ <match>
+ <header name="Content-type" value="image/jpeg"/>
+ </match>
+ </httpRequest>
+
+ <httpRequest href="${batikBaseUrl}/anne.png">
+ <match>
+ <header name="Content-type" value="image/png"/>
+ </match>
+ </httpRequest>
+
+ </target>
+
+</project>
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/conf/bsf.xmap b/ASF_20_SRC_AUTO/src/blocks/bsf/conf/bsf.xmap
new file mode 100644
index 0000000..2adccbb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/conf/bsf.xmap
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/generators"
+ unless="generator[@name='script']">
+
+ <map:generator name="script"
+ src="org.apache.cocoon.generation.ScriptGenerator"
+ label="content"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/acting/ScriptAction.java b/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/acting/ScriptAction.java
new file mode 100644
index 0000000..df06a36
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/acting/ScriptAction.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import com.ibm.bsf.BSFManager;
+import com.ibm.bsf.util.IOUtils;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.Source;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A simple action that executes any script that can be run by the BSF
+ *
+ * @author <a href="mailto:jafoster@uwaterloo.ca">Jason Foster</a>
+ * @version CVS $Id: ScriptAction.java,v 1.3 2004/03/05 13:01:47 bdelacretaz Exp $
+ */
+
+public class ScriptAction
+extends ServiceableAction
+implements ThreadSafe {
+
+
+ public Map act( Redirector redirector,
+ SourceResolver resolver,
+ Map objectModel,
+ String source,
+ Parameters par )
+ throws Exception {
+ Source src = null;
+ try {
+ // Figure out what script to open. A missing script name is caught
+ // by the resolver/SystemId grouping later on and causes an exception
+ String scriptName = source;
+
+ // Locate the appropriate file on the filesytem
+ src = resolver.resolveURI(scriptName);
+ String systemID = src.getURI();
+
+ if (this.getLogger().isDebugEnabled()) {
+ getLogger().debug("script source [" + scriptName + "]");
+ getLogger().debug("script resolved to [" + systemID + "]");
+ }
+
+ Reader in = new InputStreamReader(src.getInputStream());
+
+ // Set up the BSF manager and register relevant helper "beans"
+
+ BSFManager mgr = new BSFManager();
+ HashMap actionMap = new HashMap();
+
+ // parameters to act(...)
+ mgr.registerBean("resolver", resolver);
+ mgr.registerBean("objectModel", objectModel);
+ mgr.registerBean("parameters", par);
+
+ // ScriptAction housekeeping
+ mgr.registerBean("actionMap", actionMap);
+
+ // helpers
+
+ mgr.registerBean("logger", getLogger());
+ mgr.registerBean("request", ( ObjectModelHelper.getRequest(objectModel) ) );
+ mgr.registerBean("scriptaction", this );
+ mgr.registerBean("manager", this.manager );
+
+ if (this.getLogger().isDebugEnabled()) {
+ getLogger().debug("BSFManager execution begining");
+ }
+
+ // Execute the script
+
+ mgr.exec(BSFManager.getLangFromFilename(systemID), systemID, 0, 0,
+ IOUtils.getStringFromReader(in));
+
+ if (this.getLogger().isDebugEnabled()) {
+ getLogger().debug("BSFManager execution complete");
+ }
+
+ // Figure out what to return
+ // TODO: decide on a more robust communication method
+
+ if ( actionMap.containsKey( "scriptaction-continue" ) )
+ {
+ return ( Collections.unmodifiableMap(actionMap) );
+ }
+ else
+ {
+ return ( null );
+ }
+ } catch (Exception e) {
+ throw new ProcessingException(
+ "Exception in ScriptAction.act()", e);
+ } finally {
+ resolver.release( src );
+ } // try/catch
+ } // public Map act(...)
+} // public class ScriptAction
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/generation/ScriptGenerator.java b/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/generation/ScriptGenerator.java
new file mode 100644
index 0000000..ab5dafc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/java/org/apache/cocoon/generation/ScriptGenerator.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation;
+
+import com.ibm.bsf.BSFException;
+import com.ibm.bsf.BSFManager;
+import com.ibm.bsf.util.IOUtils;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.ResourceNotFoundException;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.xml.sax.SAXParser;
+import org.xml.sax.InputSource;
+
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+
+/**
+ * The Scriptgenerator executes arbitraty scripts using the BSF framework
+ * and additional interpreter (Rhino, Jython, etc.) as a Cocoon Generator.
+ *
+ * Additional language support can be added during configuration, eg
+ * using:
+ *
+ * <pre>
+ * <add-languages>
+ * <language name="potatoscript" src="edu.purdue.cs.bsf.engines.Potatoscript">
+ * <extension>pos</extension>
+ * <extension>psc</extension>
+ * <language>
+ * <language name="kawa-scheme" src="org.gnu.kawa.bsf.engines.KawaEngine">
+ * <extension>scm</extension>
+ * <language>
+ * </add-languages>
+ * </pre>
+ *
+ * @author <a href="mailto:jafoster@engmail.uwaterloo.ca">Jason Foster</a>
+ * @version CVS $Id: ScriptGenerator.java,v 1.4 2004/03/05 13:01:47 bdelacretaz Exp $
+ */
+public class ScriptGenerator extends ServiceableGenerator implements Configurable {
+
+ protected class BSFLanguage
+ {
+ public String name;
+ public String engineSrc;
+ public String[] extensions;
+ }
+
+ protected BSFLanguage[] additionalLanguages;
+
+ /** The source */
+ private Source inputSource;
+
+ public void configure(Configuration conf) throws ConfigurationException
+ {
+ if (conf != null)
+ {
+ //add optional support for additional languages
+ Configuration languagesToAdd = conf.getChild("add-languages");
+
+ Configuration[] languages = languagesToAdd.getChildren("language");
+ this.additionalLanguages = new BSFLanguage[languages.length];
+
+
+ for (int i = 0; i < languages.length; ++i)
+ {
+ Configuration language = languages[i];
+ BSFLanguage bsfLanguage = new BSFLanguage();
+
+ bsfLanguage.name = language.getAttribute("name");
+ bsfLanguage.engineSrc = language.getAttribute("src");
+
+ getLogger().debug("Configuring ScriptGenerator with additional BSF language " + bsfLanguage.name);
+ getLogger().debug("Configuring ScriptGenerator with BSF engine " + bsfLanguage.engineSrc);
+
+
+ Configuration[] extensions = language.getChildren("extension");
+ bsfLanguage.extensions = new String[extensions.length];
+
+ for (int j = 0; j < extensions.length; ++j)
+ {
+ bsfLanguage.extensions[i] = extensions[i].getValue();
+ getLogger().debug("Configuring ScriptGenerator with lang extension " + bsfLanguage.extensions[i]);
+ }
+
+ this.additionalLanguages[i] = bsfLanguage;
+ }
+ }
+ }
+
+ public void recycle() {
+ if (this.inputSource != null) {
+ this.resolver.release(this.inputSource);
+ this.inputSource = null;
+ }
+ super.recycle();
+ }
+
+ public void generate() throws ProcessingException {
+ SAXParser parser = null;
+ try {
+ // Figure out what file to open and do so
+ getLogger().debug("processing file [" + super.source + "]");
+ this.inputSource = this.resolver.resolveURI(super.source);
+
+ getLogger().debug("file resolved to [" + this.inputSource.getURI() + "]");
+
+ Reader in = new InputStreamReader(this.inputSource.getInputStream());
+
+ // Set up the BSF manager and register relevant helper "beans"
+ BSFManager mgr = new BSFManager();
+
+ // add support for additional languages
+
+ if (this.additionalLanguages != null)
+ {
+ for (int i = 0; i < this.additionalLanguages.length; ++i)
+ {
+ getLogger().debug("adding BSF language " + this.additionalLanguages[i].name + " with engine " + this.additionalLanguages[i].engineSrc);
+
+ BSFManager.registerScriptingEngine(this.additionalLanguages[i].name,
+ this.additionalLanguages[i].engineSrc,
+ this.additionalLanguages[i].extensions);
+ }
+ }
+
+ StringBuffer output = new StringBuffer();
+
+ mgr.registerBean("resolver", this.resolver);
+ mgr.registerBean("source", super.source);
+ mgr.registerBean("objectModel", this.objectModel);
+ mgr.registerBean("parameters", this.parameters);
+ mgr.registerBean("output", output);
+ mgr.registerBean("logger", getLogger());
+
+ getLogger().debug("BSFManager execution begining");
+
+ // Execute the script
+
+ mgr.exec(BSFManager.getLangFromFilename(this.inputSource.getURI()),
+ this.inputSource.getURI(), 0, 0, IOUtils.getStringFromReader(in));
+
+ getLogger().debug("BSFManager execution complete");
+ getLogger().debug("output = [" + output.toString() + "]");
+
+ // Extract the XML string from the BSFManager and parse it
+
+ InputSource xmlInput =
+ new InputSource(new StringReader(output.toString()));
+ parser = (SAXParser)(this.manager.lookup(SAXParser.ROLE));
+ parser.parse(xmlInput, this.xmlConsumer);
+ } catch (SourceException se) {
+ throw SourceUtil.handle(se);
+ } catch (FileNotFoundException e) {
+ throw new ResourceNotFoundException(
+ "Could not load script " + this.inputSource.getURI(), e);
+ } catch (BSFException e) {
+ throw new ProcessingException(
+ "Exception in ScriptGenerator.generate()", e);
+ } catch (Exception e) {
+ throw new ProcessingException(
+ "Exception in ScriptGenerator.generate()", e);
+ } finally {
+ this.manager.release(parser);
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/lib/bsf-2.2.jar b/ASF_20_SRC_AUTO/src/blocks/bsf/lib/bsf-2.2.jar
new file mode 100644
index 0000000..19036c1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/lib/bsf-2.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addknowncourse.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addknowncourse.js
new file mode 100644
index 0000000..b67ffc6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addknowncourse.js
@@ -0,0 +1,91 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START addknowncourse.js" )
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+term = request.getParameter( "term" )
+course = request.getParameter( "course" )
+distanceEd = request.getParameter( "distanceEd" )
+extra = request.getParameter( "extra" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " course [" + course + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+
+// Cook things a little to make them palatable to the database
+
+if ( term == "0" ) { term = "" }
+if ( course == "0" ) { course = "" }
+if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
+if ( extra == "on" ) { extra = 2 } else { extra = 1 }
+
+logger.debug( "Cooked" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " course [" + course + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+
+// Actually do the database work
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+addStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ addStatement = conn.prepareStatement(
+ "INSERT INTO studentKnownCourseList ( STUDENT, KNOWN_COURSE, TERM_TAKEN, DISTANCE_ED, COURSE_EXTRA)" +
+ "VALUES ( ( SELECT id FROM students WHERE uw_userid = ? ), ?, ?, ?, ? )"
+ )
+
+ addStatement.setString( 1, uwid );
+ addStatement.setString( 2, course );
+ addStatement.setString( 3, term );
+ addStatement.setString( 4, distanceEd );
+ addStatement.setString( 5, extra );
+
+ result = addStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+ session.setAttribute( "results", "<SUCCESS>Course added at " + Date() + "</SUCCESS>" )
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != addStatement ) { addStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END addknown.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknowncse.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknowncse.js
new file mode 100644
index 0000000..7bf2602
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknowncse.js
@@ -0,0 +1,166 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START addunknown.js" )
+
+lectureHrs = 3
+labHrs = 0
+tutorialHrs = 0
+numWeeks = 12
+courseWeight = 1
+cseweight = 0
+math = 0
+sci = 0
+engsci = 0
+engdes = 0
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+term = request.getParameter( "term" )
+dept = request.getParameter( "dept" )
+number = request.getParameter( "number" )
+letter = request.getParameter( "letter" )
+name = request.getParameter( "name" )
+lectures = request.getParameter( "lectures" )
+labs = request.getParameter( "labs" )
+tutorials = request.getParameter( "tutorials" )
+weeks = request.getParameter( "weeks" )
+csetype = request.getParameter( "csetype" )
+weight = request.getParameter( "weight" )
+distanceEd = request.getParameter( "distanceEd" )
+extra = request.getParameter( "extra" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " dept [" + dept + "]" )
+logger.debug( " number [" + number + "]" )
+logger.debug( " letter [" + letter + "]" )
+logger.debug( " name [" + name + "]" )
+logger.debug( " lectures [" + lectures + "]" )
+logger.debug( " labs [" + labs + "]" )
+logger.debug( " tutorials [" + tutorials + "]" )
+logger.debug( " weeks [" + weeks + "]" )
+logger.debug( " math [" + math + "]" )
+logger.debug( " sci [" + sci + "]" )
+logger.debug( " engsci [" + engsci + "]" )
+logger.debug( " engdes [" + engdes + "]" )
+logger.debug( " csetype [" + csetype + "]" )
+logger.debug( " weight [" + weight + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+logger.debug( " lectureHrs [" + lectureHrs + "]" )
+logger.debug( " labHrs [" + labHrs + "]" )
+logger.debug( " tutorialHrs [" + tutorialHrs + "]" )
+logger.debug( " numWeeks [" + numWeeks + "]" )
+logger.debug( " courseWeight [" + courseWeight + "]" )
+logger.debug( " cseweight [" + cseweight + "]" )
+
+// Cook things a little to make them palatable to the database
+
+if (lectures != null) { lectureHrs = ( lectures + "" ) }
+if (labs != null) { labHrs = ( labs + "" ) }
+if (tutorials != null) { tutorialHrs = ( tutorials + "" ) }
+if (weeks != null) { numWeeks = ( weeks + "" ) }
+if (weight != null) { courseWeight = ( weight + "" ) }
+
+// The "/1" is vital to ensure a numeric context
+
+cseweight=(((lectureHrs/1)+(labHrs/2)+(tutorialHrs/2))*numWeeks*courseWeight)
+
+if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
+if ( extra == "on" ) { extra = 2 } else { extra = 1 }
+
+logger.debug( "Cooked" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " dept [" + dept + "]" )
+logger.debug( " number [" + number + "]" )
+logger.debug( " letter [" + letter + "]" )
+logger.debug( " name [" + name + "]" )
+logger.debug( " lectures [" + lectures + "]" )
+logger.debug( " labs [" + labs + "]" )
+logger.debug( " tutorials [" + tutorials + "]" )
+logger.debug( " weeks [" + weeks + "]" )
+logger.debug( " math [" + math + "]" )
+logger.debug( " sci [" + sci + "]" )
+logger.debug( " engsci [" + engsci + "]" )
+logger.debug( " engdes [" + engdes + "]" )
+logger.debug( " csetype [" + csetype + "]" )
+logger.debug( " weight [" + weight + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+logger.debug( " lectureHrs [" + lectureHrs + "]" )
+logger.debug( " labHrs [" + labHrs + "]" )
+logger.debug( " tutorialHrs [" + tutorialHrs + "]" )
+logger.debug( " numWeeks [" + numWeeks + "]" )
+logger.debug( " courseWeight [" + courseWeight + "]" )
+logger.debug( " cseweight [" + cseweight + "]" )
+
+// Actually do the database work
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+addStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ addStatement = conn.prepareStatement(
+ "INSERT INTO otherCourses( ID, STUDENT, DEPARTMENT, COURSENUMBER, COURSELETTER, COURSENAME, MATH, SCI, ENGSCI, ENGDES, CSETYPE, CSEWEIGHT, TERM_TAKEN, DISTANCE_ED, COURSE_EXTRA) VALUES ( otherCourses_seq.nextval, ( SELECT id FROM students WHERE uw_userid = ? ), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"
+ )
+
+ addStatement.setString( 1, uwid );
+ addStatement.setString( 2, dept );
+ addStatement.setString( 3, number );
+ addStatement.setString( 4, letter );
+ addStatement.setString( 5, name );
+ addStatement.setString( 6, math );
+ addStatement.setString( 7, sci );
+ addStatement.setString( 8, engsci );
+ addStatement.setString( 9, engdes );
+ addStatement.setString( 10, csetype );
+ addStatement.setString( 11, cseweight );
+ addStatement.setString( 12, term );
+ addStatement.setString( 13, distanceEd );
+ addStatement.setString( 14, extra );
+
+ result = addStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+ session.setAttribute( "results", "<SUCCESS>Unknown Complementary Studies course added at " + Date() + "</SUCCESS>" )
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != addStatement ) { addStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+
+logger.debug( "END addunknown.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknownte.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknownte.js
new file mode 100644
index 0000000..97fcd07
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/addunknownte.js
@@ -0,0 +1,179 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START addunknownte.js" )
+
+csetype = ""
+weight = 0
+
+lectureHrs = 3
+labHrs = 0
+tutorialHrs = 0
+numWeeks = 12
+
+courseWeight = 0
+mathWeight = 0
+sciWeight = 0
+engsciWeight = 0
+engdesWeight = 0
+
+mathWt = 0
+sciWt = 0
+engsciWt = 0
+engdesWt = 0
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+term = request.getParameter( "term" )
+dept = request.getParameter( "dept" )
+number = request.getParameter( "number" )
+letter = request.getParameter( "letter" )
+name = request.getParameter( "name" )
+lectures = request.getParameter( "lectures" )
+labs = request.getParameter( "labs" )
+tutorials = request.getParameter( "tutorials" )
+weeks = request.getParameter( "weeks" )
+math = request.getParameter( "math" )
+sci = request.getParameter( "sci" )
+engsci = request.getParameter( "engsci" )
+engdes = request.getParameter( "engdes" )
+distanceEd = request.getParameter( "distanceEd" )
+extra = request.getParameter( "extra" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " dept [" + dept + "]" )
+logger.debug( " number [" + number + "]" )
+logger.debug( " letter [" + letter + "]" )
+logger.debug( " name [" + name + "]" )
+logger.debug( " lectures [" + lectures + "]" )
+logger.debug( " labs [" + labs + "]" )
+logger.debug( " tutorials [" + tutorials + "]" )
+logger.debug( " weeks [" + weeks + "]" )
+logger.debug( " math [" + math + "]" )
+logger.debug( " sci [" + sci + "]" )
+logger.debug( " engsci [" + engsci + "]" )
+logger.debug( " engdes [" + engdes + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+logger.debug( " courseWeight [" + courseWeight + "]" )
+logger.debug( " mathWt [" + mathWt + "]" )
+logger.debug( " sciWt [" + sciWt + "]" )
+logger.debug( " engsciWt [" + engsciWt + "]" )
+logger.debug( " engdesWt [" + engdesWt + "]" )
+
+// Cook things a little to make them palatable to the database
+
+if (lectures != null) { lectureHrs = ( lectures + "" ) }
+if (labs != null) { labHrs = ( labs + "" ) }
+if (tutorials != null) { tutorialHrs = ( tutorials + "" ) }
+if (weeks != null) { numWeeks = ( weeks + "" ) }
+
+if (math != null) { mathWeight = ( math + "" ) }
+if (sci != null) { sciWeight = ( sci + "" ) }
+if (engsci != null) { engsciWeight = ( engsci + "" ) }
+if (engdes != null) { engdesWeight = ( engdes + "" ) }
+
+// The "/1" is vital to ensure a numeric context
+
+courseWeight=(((lectureHrs/1)+(labHrs/2)+(tutorialHrs/2))*numWeeks)
+mathWt = courseWeight*mathWeight
+sciWt = courseWeight*sciWeight
+engsciWt = courseWeight*engsciWeight
+engdesWt = courseWeight*engdesWeight
+
+if ( distanceEd == "on" ) { distanceEd = 2 } else { distanceEd = 1 }
+if ( extra == "on" ) { extra = 2 } else { extra = 1 }
+
+logger.debug( "Cooked" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " term [" + term + "]" )
+logger.debug( " dept [" + dept + "]" )
+logger.debug( " number [" + number + "]" )
+logger.debug( " letter [" + letter + "]" )
+logger.debug( " name [" + name + "]" )
+logger.debug( " lectures [" + lectures + "]" )
+logger.debug( " labs [" + labs + "]" )
+logger.debug( " tutorials [" + tutorials + "]" )
+logger.debug( " weeks [" + weeks + "]" )
+logger.debug( " math [" + math + "]" )
+logger.debug( " sci [" + sci + "]" )
+logger.debug( " engsci [" + engsci + "]" )
+logger.debug( " engdes [" + engdes + "]" )
+logger.debug( " distanceEd [" + distanceEd + "]" )
+logger.debug( " extra [" + extra + "]" )
+logger.debug( " courseWeight [" + courseWeight + "]" )
+logger.debug( " mathWt [" + mathWt + "]" )
+logger.debug( " sciWt [" + sciWt + "]" )
+logger.debug( " engsciWt [" + engsciWt + "]" )
+logger.debug( " engdesWt [" + engdesWt + "]" )
+
+// Actually do the database work
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+addStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ addStatement = conn.prepareStatement(
+ "INSERT INTO otherCourses( " +
+ "ID, STUDENT, DEPARTMENT, COURSENUMBER, COURSELETTER, COURSENAME, MATH, SCI, ENGSCI, ENGDES, TERM_TAKEN, DISTANCE_ED, COURSE_EXTRA, CSEWEIGHT)" +
+ "VALUES ( " +
+ "otherCourses_seq.nextval, ( SELECT id FROM students WHERE uw_userid = ? ), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)"
+ )
+
+ addStatement.setString( 1, uwid );
+ addStatement.setString( 2, dept );
+ addStatement.setString( 3, number );
+ addStatement.setString( 4, letter );
+ addStatement.setString( 5, name );
+ addStatement.setString( 6, mathWt );
+ addStatement.setString( 7, sciWt );
+ addStatement.setString( 8, engsciWt );
+ addStatement.setString( 9, engdesWt );
+ addStatement.setString( 10, term );
+ addStatement.setString( 11, distanceEd );
+ addStatement.setString( 12, extra );
+
+ result = addStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+ session.setAttribute( "results", "<SUCCESS>Unknown Technical Elective added at " + Date() + "</SUCCESS>" )
+
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != addStatement ) { addStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END addunknownte.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/createuser.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/createuser.js
new file mode 100644
index 0000000..4585182
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/createuser.js
@@ -0,0 +1,106 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START createuser.js" )
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+queryStatement = null
+insertStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+
+ // Check that the student exists
+
+ queryStatement = conn.prepareStatement(
+ "select count(*) here from students where uw_userid=? "
+ )
+
+ queryStatement.setString( 1, uwid )
+
+ resultSet = queryStatement.executeQuery()
+ resultSet.next()
+
+ userExists = resultSet.getInt("here")
+
+ logger.debug( "Result #1 [" + userExists + "]" )
+
+ if (!userExists)
+ {
+
+ logger.debug( "User does not exist...creating and initializing" )
+
+ insertStatement = conn.prepareStatement(
+ "INSERT INTO students (id, uw_userid, name, uw_id, current_term) values (students_seq.nextval, ?, '','', (SELECT id FROM terms WHERE description = '1A'))"
+ )
+
+ insertStatement.setString( 1, uwid );
+
+ result = insertStatement.executeUpdate()
+ logger.debug( "Result #2 [" + result + "]" )
+
+ insertStatement = conn.prepareStatement(
+ "insert into studentNotes (student,note) values ( ( SELECT id FROM students WHERE uw_userid = ? ),'')"
+ )
+
+ insertStatement.setString( 1, uwid );
+
+ result = insertStatement.executeUpdate()
+ logger.debug( "Result #3 [" + result + "]" )
+
+ insertStatement = conn.prepareStatement(
+ "INSERT INTO studentKnownCourseList (student, known_course, term_taken, distance_ed, course_extra) ( SELECT ( SELECT id FROM students WHERE uw_userid = ? ), course, term, '1', '1' FROM corecourses )"
+ )
+
+ insertStatement.setString( 1, uwid );
+
+ result = insertStatement.executeUpdate()
+ logger.debug( "Result #4 [" + result + "]" )
+
+ conn.commit()
+ }
+ else
+ {
+ logger.debug( "User exists" )
+ }
+ actionMap.put( "scriptaction-continue", "" )
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != queryStatement ) { queryStatement.close() }
+ if ( null != insertStatement ) { insertStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END createuser.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteknown.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteknown.js
new file mode 100644
index 0000000..4622dc3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteknown.js
@@ -0,0 +1,67 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START deleteknown.js" )
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+id = request.getParameter( "id" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " id [" + id + "]" )
+
+// Actually do the database work
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+addStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ deleteStatement = conn.prepareStatement(
+ "DELETE FROM studentknowncourselist WHERE student = ( SELECT id FROM students WHERE uw_userid = ? ) AND known_course = ?"
+ )
+
+ deleteStatement.setString( 1, uwid );
+ deleteStatement.setString( 2, id );
+
+ result = deleteStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+ session.setAttribute( "results", "<SUCCESS>Course deleted at " + Date() + "</SUCCESS>" )
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != addStatement ) { addStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END deleteknown.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteunknown.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteunknown.js
new file mode 100644
index 0000000..7e825d7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/deleteunknown.js
@@ -0,0 +1,62 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START deleteunknown.js" )
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+id = request.getParameter( "id" )
+
+logger.debug( "Raw" )
+logger.debug( " id [" + id + "]" )
+
+// Actually do the database work
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+addStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ deleteStatement = conn.prepareStatement(
+ "DELETE FROM otherCourses WHERE id = ?"
+ )
+
+ deleteStatement.setString( 1, id );
+
+ result = deleteStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != addStatement ) { addStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END deleteunknown.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/login.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/login.js
new file mode 100644
index 0000000..6e7829f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/login.js
@@ -0,0 +1,60 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START login.js" )
+
+// Retrieve things from the request
+// NOTE: they are all of type java.lang.String
+
+uwid = request.getParameter( "uwid" )
+password = request.getParameter( "password" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+//logger.debug( " password [" + password + "]" )
+
+// Hack since either the guy we stole the code from or
+// Bruce has made an implementation error
+
+password = password + "\0\0\0\0\0\0\0\0\0"
+
+//logger.debug( "Cooked" )
+//logger.debug( " password [" + password + "]" )
+
+try
+{
+
+ session = request.getSession(true)
+
+ radius = new Packages.RadiusClient( "engine.uwaterloo.ca","1812","7sjU2xbHa31s2" )
+ result = radius.Authenticate( uwid, password )
+
+ if ( radius.ACCESS_ACCEPT == result )
+ {
+ logger.debug( "Authentication succeeded" )
+
+ // Get (and optionally create) and populate the session
+
+ session.setAttribute( "uwid", uwid )
+
+ actionMap.put( "scriptaction-continue", "" )
+ }
+ else
+ {
+ logger.debug( "Authentication failed" )
+ session.setAttribute( "results", "<FAILURE>Incorrect User ID or Password</FAILURE>" )
+ }
+
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+
+logger.debug( "END login.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/updateinfo.js b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/updateinfo.js
new file mode 100644
index 0000000..de8fbb5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/bsf/samples/script-action/updateinfo.js
@@ -0,0 +1,101 @@
+// Step 1 -- Retrieve helper "beans" from the BSF framework
+
+scriptaction = bsf.lookupBean( "scriptaction" )
+manager = bsf.lookupBean( "manager" )
+request = bsf.lookupBean( "request" )
+logger = bsf.lookupBean( "logger" )
+actionMap = bsf.lookupBean( "actionMap" )
+
+// Step 2 -- Perform the action
+
+logger.debug( "START updateinfo.js" )
+
+// Retrieve things from the session and request
+// NOTE: they are all of type java.lang.String
+
+session = request.getSession( false )
+uwid = session.getAttribute( "uwid" )
+studentname = request.getParameter( "studentname" )
+studentnumber = request.getParameter( "studentnumber" )
+current_term = request.getParameter( "current_term" )
+note = request.getParameter( "note" )
+
+logger.debug( "Raw" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " studentname [" + studentname + "]" )
+logger.debug( " studentnumber [" + studentnumber + "]" )
+logger.debug( " current_term [" + current_term + "]" )
+logger.debug( " note [" + note + "]" )
+
+// Cook things to make them more palatable to the database
+
+note = ( note + "" ) // convert to a JS string
+if (note == " ") { note="" }
+
+if ( note.length > 255 )
+{
+ note = note.substring( 0, 255 ); // take the leading 255 characters
+}
+
+logger.debug( "Cooked" )
+logger.debug( " uwid [" + uwid + "]" )
+logger.debug( " studentname [" + studentname + "]" )
+logger.debug( " studentnumber [" + studentnumber + "]" )
+logger.debug( " current_term [" + current_term + "]" )
+logger.debug( " note [" + note + "]" )
+
+// We have the choice of declaring things out here and making them explicitly
+// null, or we have to use a different comparison in the "finally" block (defined?)
+
+dbselector = null
+datasource = null
+conn = null
+updateStatement = null
+
+try
+{
+ dbselector = manager.lookup( scriptaction.DB_CONNECTION )
+ datasource = dbselector.select( "ceabplanner" )
+ conn = datasource.getConnection()
+ updateStatement = conn.prepareStatement(
+ "UPDATE students SET name = ?, current_term = ?, uw_id = ? WHERE uw_userid = ? "
+ )
+
+ updateStatement.setString( 1, studentname );
+ updateStatement.setString( 2, current_term );
+ updateStatement.setString( 3, studentnumber );
+ updateStatement.setString( 4, uwid );
+
+ result = updateStatement.executeUpdate()
+ logger.debug( "Result #1 [" + result + "]" )
+
+ updateStatement = conn.prepareStatement(
+ "UPDATE studentnotes SET note = ? WHERE student = ( SELECT id FROM students WHERE uw_userid = ? )"
+ )
+
+ updateStatement.setString( 1, note );
+ updateStatement.setString( 2, uwid );
+
+ result = updateStatement.executeUpdate()
+ logger.debug( "Result #2 [" + result + "]" )
+
+ conn.commit()
+
+ actionMap.put( "scriptaction-continue", "" )
+ session.setAttribute( "results", "<SUCCESS>Information Saved at " + Date() + "</SUCCESS>" )
+
+}
+catch( ex )
+{
+ logger.debug( "Caught Exception" )
+ logger.debug( " " + ex )
+}
+finally
+{
+ if ( null != updateStatement ) { updateStatement.close() }
+ if ( null != conn ) { conn.close() }
+ if ( null != datasource ) { dbselector.release( datasource ) }
+ if ( null != dbselector ) { manager.release( dbselector ) }
+}
+
+logger.debug( "END updateinfo.js" )
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-generator.xmap b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-generator.xmap
new file mode 100644
index 0000000..63095b9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-generator.xmap
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<xmap xpath="/sitemap/components/generators" unless="generator[@name='text']">
+ <map:generator logger="sitemap.generator.text" name="text"
+ src="org.apache.cocoon.generation.TextGenerator"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-transformator.xmap b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-transformator.xmap
new file mode 100644
index 0000000..9f3216a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon-transformator.xmap
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xmap xpath="/sitemap/components/transformers" unless="transformer[@name='lexer']">
+ <map:transformer logger="sitemap.transformer.lexer" name="lexer"
+ src="org.apache.cocoon.transformation.LexicalTransformer"/>
+ <map:transformer logger="sitemap.transformer.parser" name="parser"
+ src="org.apache.cocoon.transformation.ParserTransformer"/>
+ <map:transformer logger="sitemap.transformer.pattern" name="pattern"
+ src="org.apache.cocoon.transformation.PatternTransformer"/>
+</xmap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon.xsamples b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon.xsamples
new file mode 100644
index 0000000..f15ca99
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/conf/chaperon.xsamples
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Chaperon']">
+
+ <group name="Chaperon">
+ <sample name="Chaperon Text Parser" href="chaperon/">
+ Examples showing how to use the Chaperon Parser to parse common text files
+ like Wiki or Java files.
+ </sample>
+ </group>
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/ParseExceptionGenerator.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/ParseExceptionGenerator.java
new file mode 100644
index 0000000..353391c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/ParseExceptionGenerator.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.generation;
+
+import net.sourceforge.chaperon.process.ParseException;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+
+import org.exolab.castor.xml.MarshalException;
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.ValidationException;
+
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+
+/**
+ * Exception generator.
+ *
+ * @version CVS $Id: ParseExceptionGenerator.java,v 1.2 2004/03/05 13:01:47 bdelacretaz Exp $
+ */
+public class ParseExceptionGenerator extends AbstractGenerator
+{
+ public void generate() throws IOException, SAXException, ProcessingException
+ {
+ Throwable throwable = ObjectModelHelper.getThrowable(objectModel);
+
+ while ((!(throwable instanceof ParseException)) &&
+ (ExceptionUtils.getCause(throwable)!=null))
+ throwable = ExceptionUtils.getCause(throwable);
+
+ if (!(throwable instanceof ParseException))
+ {
+ ((ParseException)throwable).toXML(super.contentHandler);
+ return;
+ }
+
+ Marshaller marshaller = new Marshaller(super.contentHandler);
+
+ try
+ {
+ marshaller.marshal(throwable);
+ }
+ catch (MarshalException me)
+ {
+ throw new ProcessingException(me);
+ }
+ catch (ValidationException ve)
+ {
+ throw new ProcessingException(ve);
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/TextGenerator.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/TextGenerator.java
new file mode 100644
index 0000000..618f97e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/generation/TextGenerator.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.generation;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.environment.SourceResolver;
+
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.LocatorImpl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.Serializable;
+
+import java.util.Map;
+
+/**
+ * Read a plain text file and produce a valid XML file.
+ * <pre>
+ * <text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">
+ * Text 123 bla
+ * </text>
+ * </pre>
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @author <a href="mailto:rolf.schumacher@hamburg.de">Rolf Schumacher</a>
+ * @version CVS $Id: TextGenerator.java,v 1.7 2004/03/05 13:01:47 bdelacretaz Exp $
+ */
+public class TextGenerator extends ServiceableGenerator implements Parameterizable,
+ CacheableProcessingComponent
+{
+ /** The URI of the text element */
+ public static final String URI = "http://chaperon.sourceforge.net/schema/text/1.0";
+ private static final String NL = System.getProperty("line.separator");
+ private static final char[] initNonXmlChars =
+ {
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ // 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
+ };
+
+ /** The input source */
+ private Source inputSource;
+ private String encoding;
+ private char[] nonXmlChars;
+ private boolean localizable = false;
+
+ /**
+ * Recycle this component. All instance variables are set to <code>null</code>.
+ */
+ public void recycle()
+ {
+ if (inputSource!=null)
+ super.resolver.release(inputSource);
+
+ inputSource = null;
+ encoding = null;
+ nonXmlChars = null;
+
+ super.recycle();
+ }
+
+ /**
+ * Provide component with parameters.
+ *
+ * @param parameters the parameters
+ *
+ * @throws ParameterException if parameters are invalid
+ */
+ public void parameterize(Parameters parameters) throws ParameterException
+ {
+ this.localizable = parameters.getParameterAsBoolean("localizable", false);
+ }
+
+ /**
+ * Set the SourceResolver, objectModel Map, the source and sitemap Parameters used to process the
+ * request.
+ *
+ * @param resolver Source resolver
+ * @param objectmodel Object model
+ * @param src Source
+ * @param parameters Parameters
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void setup(SourceResolver resolver, Map objectmodel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException
+ {
+ super.setup(resolver, objectmodel, src, parameters);
+ try
+ {
+ this.encoding = parameters.getParameter("encoding", null);
+ this.inputSource = resolver.resolveURI(src);
+
+ String nXmlCh = parameters.getParameter("nonXmlChars", String.valueOf(initNonXmlChars));
+ if (nXmlCh.length()!=initNonXmlChars.length)
+ throw new ProcessingException("Error during resolving of '"+src+"'.",
+ new SourceException("length of attribute string 'nonXmlChars' is "+
+ nXmlCh.length()+" where it should be "+
+ initNonXmlChars.length+"!"));
+
+ this.nonXmlChars = nXmlCh.toCharArray();
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+src+"'.", se);
+ }
+ }
+
+ /**
+ * Generate the unique key. This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public Serializable getKey()
+ {
+ return inputSource.getURI();
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the component is currently not
+ * cacheable.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.inputSource.getValidity();
+ }
+
+ /**
+ * Generate XML data.
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void generate() throws IOException, SAXException, ProcessingException
+ {
+ InputStreamReader in = null;
+
+ try
+ {
+ final InputStream sis = this.inputSource.getInputStream();
+ if (sis==null)
+ throw new ProcessingException("Source '"+this.inputSource.getURI()+"' not found");
+
+ if (encoding!=null)
+ in = new InputStreamReader(sis, encoding);
+ else
+ in = new InputStreamReader(sis);
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+this.source+"'.", se);
+ }
+
+ LocatorImpl locator = new LocatorImpl();
+
+ locator.setSystemId(this.inputSource.getURI());
+ locator.setLineNumber(1);
+ locator.setColumnNumber(1);
+
+ contentHandler.setDocumentLocator(locator);
+ contentHandler.startDocument();
+ contentHandler.startPrefixMapping("", URI);
+
+ AttributesImpl atts = new AttributesImpl();
+
+ if (localizable)
+ {
+ atts.addAttribute("", "source", "source", "CDATA", locator.getSystemId());
+ atts.addAttribute("", "line", "line", "CDATA", String.valueOf(locator.getLineNumber()));
+ atts.addAttribute("", "column", "column", "CDATA", String.valueOf(locator.getColumnNumber()));
+ }
+
+ contentHandler.startElement(URI, "text", "text", atts);
+
+ LineNumberReader reader = new LineNumberReader(in);
+ String line;
+ String newline = null;
+
+ while (true)
+ {
+ if (newline==null)
+ line = convertNonXmlChars(reader.readLine());
+ else
+ line = newline;
+
+ if (line==null)
+ break;
+
+ newline = convertNonXmlChars(reader.readLine());
+
+ line = (newline!=null) ? (line+NL) : line;
+
+ locator.setLineNumber(reader.getLineNumber());
+ locator.setColumnNumber(1);
+ contentHandler.characters(line.toCharArray(), 0, line.length());
+
+ if (newline==null)
+ break;
+ }
+
+ contentHandler.endElement(URI, "text", "text");
+
+ contentHandler.endPrefixMapping("");
+ contentHandler.endDocument();
+ }
+
+ private String convertNonXmlChars(String s)
+ {
+ if (s==null)
+ return null;
+
+ int nv;
+ char[] sc = s.toCharArray();
+
+ for (int i = 0; i<sc.length; i++)
+ {
+ nv = sc[i];
+
+ if ((nv>=0) && (nv<nonXmlChars.length))
+ {
+ //do not convert white space characters
+ if ((nv!=9) && (nv!=10) && (nv!=13))
+ sc[i] = nonXmlChars[nv];
+ }
+ }
+
+ return String.valueOf(sc);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ExtendedParserTransformer.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ExtendedParserTransformer.java
new file mode 100644
index 0000000..bef6527
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ExtendedParserTransformer.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import net.sourceforge.chaperon.model.extended.ExtendedGrammar;
+import net.sourceforge.chaperon.process.extended.ExtendedDirectParserProcessor;
+
+import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.xml.XMLConsumer;
+
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.store.Store;
+
+import org.exolab.castor.mapping.Mapping;
+import org.exolab.castor.mapping.MappingException;
+import org.exolab.castor.xml.UnmarshalHandler;
+import org.exolab.castor.xml.Unmarshaller;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: ExtendedParserTransformer.java,v 1.6 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class ExtendedParserTransformer extends ExtendedDirectParserProcessor
+ implements Transformer, LogEnabled, Serviceable, Parameterizable,
+ Recyclable, Disposable, CacheableProcessingComponent
+{
+ private String grammar = null;
+ private Source grammarSource = null;
+ private Logger logger = null;
+ private ServiceManager manager = null;
+ private SourceResolver resolver = null;
+
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger the logger
+ */
+ public void enableLogging(Logger logger)
+ {
+ this.logger = logger;
+
+ // TODO: check if the loglevel is correct LogKitLogger -> Logger
+ //setLog(new AvalonLogger(logger));
+ }
+
+ /**
+ * Pass the ServiceManager to the object. The Serviceable implementation
+ * should use the specified ServiceManager to acquire the services it needs
+ * for execution.
+ *
+ * @param manager The ServiceManager which this Serviceable uses.
+ */
+ public void service(ServiceManager manager)
+ {
+ this.manager = manager;
+ }
+
+ /**
+ * Provide component with parameters.
+ *
+ * @param parameters the parameters
+ *
+ * @throws ParameterException if parameters are invalid
+ */
+ public void parameterize(Parameters parameters) throws ParameterException
+ {
+ //setRecovery(parameters.getParameterAsBoolean("recovery", false));
+ }
+
+ /**
+ * Set the <code>XMLConsumer</code> that will receive XML data.
+ *
+ * @param consumer
+ */
+ public void setConsumer(XMLConsumer consumer)
+ {
+ setContentHandler(consumer);
+ setLexicalHandler(consumer);
+ }
+
+ /**
+ * Set the SourceResolver, objectModel Map, the source and sitemap Parameters used to process the
+ * request.
+ *
+ * @param resolver Source resolver
+ * @param objectmodel Object model
+ * @param src Source
+ * @param parameters Parameters
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void setup(SourceResolver resolver, Map objectmodel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException
+ {
+ this.resolver = resolver;
+
+ Store store = null;
+
+ try
+ {
+ this.grammar = src;
+
+ this.grammarSource = resolver.resolveURI(this.grammar);
+
+ // Retrieve the parser automaton from the transient store
+ store = (Store)this.manager.lookup(Store.TRANSIENT_STORE);
+
+ GrammarEntry entry = (GrammarEntry)store.get(this.grammarSource.getURI());
+
+ // If the parser automaton has changed, rebuild the parser automaton
+ if ((entry==null) || (entry.getValidity()==null) ||
+ ((entry.getValidity().isValid(this.grammarSource.getValidity()))<=0))
+ {
+ this.logger.info("(Re)building the grammar from '"+this.grammarSource.getURI()+"'");
+
+ if (this.grammarSource.getInputStream()==null)
+ throw new ProcessingException("Source '"+this.grammarSource.getURI()+"' not found");
+
+ Mapping mapping = new Mapping();
+
+ mapping.loadMapping(new InputSource(ExtendedGrammar.class.getResource("mapping.xml")
+ .openStream()));
+
+ Unmarshaller unmarshaller = new Unmarshaller(ExtendedGrammar.class);
+ unmarshaller.setMapping(mapping);
+
+ UnmarshalHandler unmarshalHandler = unmarshaller.createHandler();
+ SourceUtil.toSAX(this.manager, this.grammarSource, null,
+ Unmarshaller.getContentHandler(unmarshalHandler));
+
+ ExtendedGrammar grammar = (ExtendedGrammar)unmarshalHandler.getObject();
+
+ if (grammar==null)
+ throw new ProcessingException("Error while reading the grammar from "+src);
+
+ setExtendedGrammar(grammar);
+
+ this.logger.info("Store grammar into store for '"+this.grammarSource.getURI()+"'");
+ store.store(this.grammarSource.getURI(),
+ new GrammarEntry(grammar, this.grammarSource.getValidity()));
+ }
+ else
+ {
+ this.logger.info("Getting grammar from store for '"+this.grammarSource.getURI()+"'");
+ setExtendedGrammar(entry.getExtendedGrammar());
+ }
+ }
+ catch (MappingException me)
+ {
+ throw new ProcessingException("Error while reading the grammar", me);
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+src+"'.", se);
+ }
+ catch (ServiceException se)
+ {
+ throw new ProcessingException("Could not lookup for service", se);
+ }
+ finally
+ {
+ if (store!=null)
+ this.manager.release(store);
+ }
+ }
+
+ /**
+ * Generate the unique key. This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public Serializable getKey()
+ {
+ return this.grammarSource.getURI();
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the component is currently not
+ * cacheable.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.grammarSource.getValidity();
+ }
+
+ /**
+ * Recycle this component. All instance variables are set to <code>null</code>.
+ */
+ public void recycle()
+ {
+ if ((this.resolver!=null) && (this.grammarSource!=null))
+ {
+ this.resolver.release(this.grammarSource);
+ this.grammarSource = null;
+ }
+ }
+
+ /**
+ * The dispose operation is called at the end of a components lifecycle.
+ */
+ public void dispose()
+ {
+ if ((this.resolver!=null) && (this.grammarSource!=null))
+ {
+ this.resolver.release(this.grammarSource);
+ this.grammarSource = null;
+ }
+
+ this.manager = null;
+ }
+
+ /**
+ * This class represent a entry in a store to cache the parser automaton.
+ */
+ public class GrammarEntry implements Serializable
+ {
+ private SourceValidity validity = null;
+ private ExtendedGrammar grammar = null;
+
+ /**
+ * Create a new entry.
+ *
+ * @param grammar Extended grammar
+ * @param validity Validity for the grammar file.
+ */
+ public GrammarEntry(ExtendedGrammar grammar, SourceValidity validity)
+ {
+ this.grammar = grammar;
+ this.validity = validity;
+ }
+
+ /**
+ * Return the validity of the grammar file.
+ *
+ * @return Validity of the grammar file.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.validity;
+ }
+
+ /**
+ * Return the parser automaton.
+ *
+ * @return Parser automaton.
+ */
+ public ExtendedGrammar getExtendedGrammar()
+ {
+ return this.grammar;
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out)
+ throws IOException
+ {
+ out.writeObject(validity);
+ out.writeObject(grammar);
+ }
+
+ private void readObject(java.io.ObjectInputStream in)
+ throws IOException, ClassNotFoundException
+ {
+ validity = (SourceValidity)in.readObject();
+ grammar = (ExtendedGrammar)in.readObject();
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/LexicalTransformer.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/LexicalTransformer.java
new file mode 100644
index 0000000..d96d7b0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/LexicalTransformer.java
@@ -0,0 +1,320 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import net.sourceforge.chaperon.build.LexicalAutomatonBuilder;
+import net.sourceforge.chaperon.model.lexicon.Lexicon;
+import net.sourceforge.chaperon.model.lexicon.LexiconFactory;
+import net.sourceforge.chaperon.process.LexicalAutomaton;
+import net.sourceforge.chaperon.process.LexicalProcessor;
+
+import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.xml.XMLConsumer;
+
+//import org.apache.commons.logging.impl.AvalonLogger;
+
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.store.Store;
+
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import java.util.Map;
+
+/**
+ * This transfomer transforms special mark text part of a XML file into lexemes by using a lexicon
+ * file.
+ *
+ * <p>
+ * Input:
+ * </p>
+ * <pre>
+ * <text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">
+ * Text 123 bla
+ * </text>
+ * </pre>
+ *
+ * <p>
+ * were transform into the following output:
+ * </p>
+ * <pre>
+ * <lexemes xmlns="http://chaperon.sourceforge.net/schema/lexemes/1.0">
+ * <lexeme symbol="word" text="Text"/>
+ * <lexeme symbol="number" text="123"/>
+ * <lexeme symbol="word" text="bla"/>
+ * </lexemes>
+ * </pre>
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: LexicalTransformer.java,v 1.12 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class LexicalTransformer extends LexicalProcessor
+ implements Transformer, LogEnabled, Serviceable, Recyclable, Disposable,
+ Parameterizable, CacheableProcessingComponent
+{
+ private String lexicon = null;
+ private Source lexiconSource = null;
+ private Logger logger = null;
+ private ServiceManager manager = null;
+ private SourceResolver resolver = null;
+
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger the logger
+ */
+ public void enableLogging(Logger logger)
+ {
+ this.logger = logger;
+
+ // TODO: check if the loglevel is correct LogKitLogger -> Logger
+ // setLog(new AvalonLogger(logger));
+ }
+
+ /**
+ * Pass the ServiceManager to the object. The Serviceable implementation
+ * should use the specified ServiceManager to acquire the services it needs
+ * for execution.
+ *
+ * @param manager The ServiceManager which this Serviceable uses.
+ */
+ public void service(ServiceManager manager)
+ {
+ this.manager = manager;
+ }
+
+ /**
+ * Provide component with parameters.
+ *
+ * @param parameters the parameters
+ *
+ * @throws ParameterException if parameters are invalid
+ */
+ public void parameterize(Parameters parameters) throws ParameterException
+ {
+ //setRecovery(parameters.getParameterAsBoolean("recovery", false));
+ setLocalizable(parameters.getParameterAsBoolean("localizable", false));
+ }
+
+ /**
+ * Set the <code>XMLConsumer</code> that will receive XML data.
+ *
+ * @param consumer
+ */
+ public void setConsumer(XMLConsumer consumer)
+ {
+ setContentHandler(consumer);
+ setLexicalHandler(consumer);
+ }
+
+ /**
+ * Set the SourceResolver, objectModel Map, the source and sitemap Parameters used to process the
+ * request.
+ *
+ * @param resolver Source resolver
+ * @param objectmodel Object model
+ * @param src Source
+ * @param parameters Parameters
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void setup(SourceResolver resolver, Map objectmodel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException
+ {
+ this.resolver = resolver;
+
+ Store store = null;
+
+ try
+ {
+ this.lexicon = src;
+
+ this.lexiconSource = resolver.resolveURI(this.lexicon);
+
+ // Retrieve the parser table from the transient store
+ store = (Store)this.manager.lookup(Store.TRANSIENT_STORE);
+
+ LexicalAutomatonEntry entry = (LexicalAutomatonEntry)store.get(this.lexiconSource.getURI());
+
+ // If the parser table has changed, rebuild the parser table
+ if ((entry==null) || (entry.getValidity()==null) ||
+ (entry.getValidity().isValid(this.lexiconSource.getValidity())<=0))
+ {
+ this.logger.info("(Re)building the automaton from '"+this.lexiconSource.getURI()+"'");
+
+ if (this.lexiconSource.getInputStream()==null)
+ throw new ProcessingException("Source '"+this.lexiconSource.getURI()+"' not found");
+
+ LexiconFactory factory = new LexiconFactory();
+ SourceUtil.toSAX(this.manager, this.lexiconSource, null, factory);
+
+ Lexicon lexicon = factory.getLexicon();
+
+ LexicalAutomatonBuilder builder =
+ new LexicalAutomatonBuilder(lexicon/*, new AvalonLogger(this.logger)*/);
+
+ LexicalAutomaton automaton = builder.getLexicalAutomaton();
+ setLexicalAutomaton(automaton);
+
+ this.logger.info("Store automaton into store for '"+this.lexiconSource.getURI()+"'");
+
+ store.store(this.lexiconSource.getURI(),
+ new LexicalAutomatonEntry(automaton, this.lexiconSource.getValidity()));
+ }
+ else
+ {
+ this.logger.info("Getting automaton from store for '"+this.lexiconSource.getURI()+"'");
+ setLexicalAutomaton(entry.getLexicalAutomaton());
+ }
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+src+"'.", se);
+ }
+ catch (ServiceException se)
+ {
+ throw new ProcessingException("Could not lookup for service", se);
+ }
+ finally
+ {
+ if (store!=null)
+ this.manager.release(store);
+ }
+ }
+
+ /**
+ * Generate the unique key. This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public Serializable getKey()
+ {
+ return this.lexiconSource.getURI();
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the component is currently not
+ * cacheable.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.lexiconSource.getValidity();
+ }
+
+ /**
+ * Recycle this component. All instance variables are set to <code>null</code>.
+ */
+ public void recycle()
+ {
+ if ((this.resolver!=null) && (this.lexiconSource!=null))
+ {
+ this.resolver.release(this.lexiconSource);
+ this.lexiconSource = null;
+ }
+ }
+
+ /**
+ * The dispose operation is called at the end of a components lifecycle.
+ */
+ public void dispose()
+ {
+ if ((this.resolver!=null) && (this.lexiconSource!=null))
+ {
+ this.resolver.release(this.lexiconSource);
+ this.lexiconSource = null;
+ }
+
+ this.manager = null;
+ }
+
+ /**
+ * This class represent a entry in a store to cache the lexical automaton.
+ */
+ public class LexicalAutomatonEntry implements Serializable
+ {
+ private SourceValidity validity = null;
+ private LexicalAutomaton automaton = null;
+
+ /**
+ * Create a new entry.
+ *
+ * @param automaton Lexical automaton.
+ * @param validity Validity of the lexicon file.
+ */
+ public LexicalAutomatonEntry(LexicalAutomaton automaton, SourceValidity validity)
+ {
+ this.automaton = automaton;
+ this.validity = validity;
+ }
+
+ /**
+ * Return the validity of the lexicon file.
+ *
+ * @return Validity of the lexicon file.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.validity;
+ }
+
+ /**
+ * Return the lexical automaton.
+ *
+ * @return Lexical automaton.
+ */
+ public LexicalAutomaton getLexicalAutomaton()
+ {
+ return this.automaton;
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out)
+ throws IOException
+ {
+ out.writeObject(validity);
+ out.writeObject(automaton);
+ }
+
+ private void readObject(java.io.ObjectInputStream in)
+ throws IOException, ClassNotFoundException
+ {
+ validity = (SourceValidity)in.readObject();
+ automaton = (LexicalAutomaton)in.readObject();
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ParserTransformer.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ParserTransformer.java
new file mode 100644
index 0000000..6b6a0e0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/ParserTransformer.java
@@ -0,0 +1,328 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import net.sourceforge.chaperon.build.ParserAutomatonBuilder;
+import net.sourceforge.chaperon.model.grammar.Grammar;
+import net.sourceforge.chaperon.model.grammar.GrammarFactory;
+import net.sourceforge.chaperon.process.ParserAutomaton;
+import net.sourceforge.chaperon.process.ParserProcessor;
+
+import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.xml.XMLConsumer;
+
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.store.Store;
+
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import java.util.Map;
+
+/**
+ * This transfomer transforms lexical tokens in a XML file into a XML hirachy by using a grammar
+ * file.
+ *
+ * <p>
+ * Input:
+ * </p>
+ * <pre>
+ * <lexemes xmlns="http://chaperon.sourceforge.net/schema/lexemes/1.0">
+ * <lexeme symbol="word" text="Text"/>
+ * <lexeme symbol="number" text="123"/>
+ * <lexeme symbol="word" text="bla"/>
+ * </lexemes>
+ * </pre>
+ *
+ * <p>
+ * were transform into the following output:
+ * </p>
+ * <pre>
+ * <sentence xmlns="http://chaperon.sourceforge.net/schema/syntaxtree/1.0">
+ * <word>Text</word>
+ * <number>123</number>
+ * <word>bla</word>
+ * </sentence>
+ * </pre>
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: ParserTransformer.java,v 1.12 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class ParserTransformer extends ParserProcessor
+ implements Transformer, LogEnabled, Serviceable, Parameterizable,
+ Recyclable, Disposable, CacheableProcessingComponent
+{
+ private String grammar = null;
+ private Source grammarSource = null;
+ private Logger logger = null;
+ private ServiceManager manager = null;
+ private SourceResolver resolver = null;
+
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger the logger
+ */
+ public void enableLogging(Logger logger)
+ {
+ this.logger = logger;
+
+ // TODO: check if the loglevel is correct LogKitLogger -> Logger
+ // setLog(new AvalonLogger(logger));
+ //setLog(new ConsoleLog());
+ }
+
+ /**
+ * Pass the ServiceManager to the object. The Serviceable implementation should use the
+ * specified ServiceManager to acquire the services it needs for execution.
+ *
+ * @param manager The ServiceManager which this Serviceable uses.
+ */
+ public void service(ServiceManager manager)
+ {
+ this.manager = manager;
+ }
+
+ /**
+ * Provide component with parameters.
+ *
+ * @param parameters the parameters
+ *
+ * @throws ParameterException if parameters are invalid
+ */
+ public void parameterize(Parameters parameters) throws ParameterException
+ {
+ setFlatten(parameters.getParameterAsBoolean("flatten", false));
+
+ //setRecovery(parameters.getParameterAsBoolean("recovery", false));
+ setLocalizable(parameters.getParameterAsBoolean("localizable", false));
+ }
+
+ /**
+ * Set the <code>XMLConsumer</code> that will receive XML data.
+ *
+ * @param consumer
+ */
+ public void setConsumer(XMLConsumer consumer)
+ {
+ setContentHandler(consumer);
+ setLexicalHandler(consumer);
+ }
+
+ /**
+ * Set the SourceResolver, objectModel Map, the source and sitemap Parameters used to process the
+ * request.
+ *
+ * @param resolver Source resolver
+ * @param objectmodel Object model
+ * @param src Source
+ * @param parameters Parameters
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void setup(SourceResolver resolver, Map objectmodel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException
+ {
+ this.resolver = resolver;
+
+ setFailSafe(parameters.getParameterAsBoolean("failsafe", false));
+
+ Store store = null;
+ try
+ {
+ this.grammar = src;
+
+ this.grammarSource = resolver.resolveURI(this.grammar);
+
+ // Retrieve the parser automaton from the transient store
+ store = (Store)this.manager.lookup(Store.TRANSIENT_STORE);
+
+ ParserAutomatonEntry entry = (ParserAutomatonEntry)store.get(this.grammarSource.getURI());
+
+ // If the parser automaton has changed, rebuild the parser automaton
+ if ((entry==null) || (entry.getValidity()==null) ||
+ ((entry.getValidity().isValid(this.grammarSource.getValidity()))<=0))
+ {
+ this.logger.info("(Re)building the automaton from '"+this.grammarSource.getURI()+"'");
+
+ //SAXConfigurationHandler confighandler = new SAXConfigurationHandler();
+ if (this.grammarSource.getInputStream()==null)
+ throw new ProcessingException("Source '"+this.grammarSource.getURI()+"' not found");
+
+ GrammarFactory factory = new GrammarFactory();
+ SourceUtil.toSAX(this.manager, this.grammarSource, null, factory);
+
+ //Configuration config = confighandler.getConfiguration();
+ //Grammar grammar = GrammarFactory.createGrammar(config);
+ Grammar grammar = factory.getGrammar();
+
+ if (grammar==null)
+ throw new ProcessingException("Error while reading the grammar from "+src);
+
+ ParserAutomatonBuilder builder =
+ new ParserAutomatonBuilder(grammar /*, new AvalonLogger(logger)*/);
+
+ ParserAutomaton automaton = builder.getParserAutomaton();
+ setParserAutomaton(builder.getParserAutomaton());
+
+ this.logger.info("Store automaton into store for '"+this.grammarSource.getURI()+"'");
+ store.store(this.grammarSource.getURI(),
+ new ParserAutomatonEntry(automaton, this.grammarSource.getValidity()));
+ }
+ else
+ {
+ this.logger.info("Getting automaton from store for '"+this.grammarSource.getURI()+"'");
+ setParserAutomaton(entry.getParserAutomaton());
+ }
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+src+"'.", se);
+ }
+ catch (ServiceException se)
+ {
+ throw new ProcessingException("Could not lookup for service", se);
+ }
+ finally
+ {
+ if (store!=null)
+ this.manager.release(store);
+ }
+ }
+
+ /**
+ * Generate the unique key. This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public Serializable getKey()
+ {
+ return this.grammarSource.getURI();
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the component is currently not
+ * cacheable.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.grammarSource.getValidity();
+ }
+
+ /**
+ * Recycle this component. All instance variables are set to <code>null</code>.
+ */
+ public void recycle()
+ {
+ if ((this.resolver!=null) && (this.grammarSource!=null))
+ {
+ this.resolver.release(this.grammarSource);
+ this.grammarSource = null;
+ }
+ }
+
+ /**
+ * The dispose operation is called at the end of a components lifecycle.
+ */
+ public void dispose()
+ {
+ if ((this.resolver!=null) && (this.grammarSource!=null))
+ {
+ this.resolver.release(this.grammarSource);
+ this.grammarSource = null;
+ }
+
+ this.manager = null;
+ }
+
+ /**
+ * This class represent a entry in a store to cache the parser automaton.
+ */
+ public class ParserAutomatonEntry implements Serializable
+ {
+ private SourceValidity validity = null;
+ private ParserAutomaton automaton = null;
+
+ /**
+ * Create a new entry.
+ *
+ * @param automaton Parser automaton.
+ * @param validity Validity for the grammar file.
+ */
+ public ParserAutomatonEntry(ParserAutomaton automaton, SourceValidity validity)
+ {
+ this.automaton = automaton;
+ this.validity = validity;
+ }
+
+ /**
+ * Return the validity of the grammar file.
+ *
+ * @return Validity of the grammar file.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.validity;
+ }
+
+ /**
+ * Return the parser automaton.
+ *
+ * @return Parser automaton.
+ */
+ public ParserAutomaton getParserAutomaton()
+ {
+ return this.automaton;
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out)
+ throws IOException
+ {
+ out.writeObject(validity);
+ out.writeObject(automaton);
+ }
+
+ private void readObject(java.io.ObjectInputStream in)
+ throws IOException, ClassNotFoundException
+ {
+ validity = (SourceValidity)in.readObject();
+ automaton = (ParserAutomaton)in.readObject();
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/PatternTransformer.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/PatternTransformer.java
new file mode 100644
index 0000000..d879f87
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/java/org/apache/cocoon/transformation/PatternTransformer.java
@@ -0,0 +1,514 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import net.sourceforge.chaperon.build.LexicalAutomatonBuilder;
+import net.sourceforge.chaperon.common.Decoder;
+import net.sourceforge.chaperon.model.lexicon.Lexicon;
+import net.sourceforge.chaperon.model.lexicon.LexiconFactory;
+import net.sourceforge.chaperon.process.LexicalAutomaton;
+import net.sourceforge.chaperon.process.PatternProcessor;
+
+import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+
+//import org.apache.commons.logging.impl.AvalonLogger;
+
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.store.Store;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import java.util.Map;
+
+/**
+ * This transfomer transforms text pattern of a XML file into lexemes by using a lexicon file.
+ *
+ * <p>
+ * Input:
+ * </p>
+ * <pre>
+ * <section>
+ * Text 123 bla
+ * </section>
+ * </pre>
+ *
+ * <p>
+ * can be transformed into the following output:
+ * </p>
+ * <pre>
+ * <section>
+ * Text
+ * <lexeme symbol="number" text="123"/>
+ * bla
+ * </section>
+ * </pre>
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels</a>
+ * @version CVS $Id: PatternTransformer.java,v 1.9 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class PatternTransformer extends AbstractTransformer implements LogEnabled, Serviceable,
+ Recyclable, Disposable,
+ Parameterizable,
+ CacheableProcessingComponent
+{
+ /** Namespace for the SAX events. */
+ public static final String NS = "http://chaperon.sourceforge.net/schema/lexemes/2.0";
+ private String lexicon = null;
+ private Source lexiconSource = null;
+ private Logger logger = null;
+ private ServiceManager manager = null;
+ private SourceResolver resolver = null;
+ private LexicalAutomaton automaton = null;
+ private PatternProcessor processor = new PatternProcessor();
+ private boolean groups = false;
+ private StringBuffer buffer = new StringBuffer();
+ private StringBuffer output = new StringBuffer();
+
+ /**
+ * Provide component with a logger.
+ *
+ * @param logger the logger
+ */
+ public void enableLogging(Logger logger)
+ {
+ this.logger = logger;
+ }
+
+ /**
+ * Pass the ServiceManager to the Serviceable. The Serviceable implementation should use the
+ * specified ServiceManager to acquire the services it needs for execution.
+ *
+ * @param manager The ServiceManager which this Serviceable uses.
+ */
+ public void service(ServiceManager manager)
+ {
+ this.manager = manager;
+ }
+
+ /**
+ * Provide component with parameters.
+ *
+ * @param parameters the parameters
+ *
+ * @throws ParameterException if parameters are invalid
+ */
+ public void parameterize(Parameters parameters) throws ParameterException
+ {
+ groups = parameters.getParameterAsBoolean("groups", false);
+ }
+
+ /**
+ * Set the SourceResolver, objectModel Map, the source and sitemap Parameters used to process the
+ * request.
+ *
+ * @param resolver Source resolver
+ * @param objectmodel Object model
+ * @param src Source
+ * @param parameters Parameters
+ *
+ * @throws IOException
+ * @throws ProcessingException
+ * @throws SAXException
+ */
+ public void setup(SourceResolver resolver, Map objectmodel, String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException
+ {
+ this.resolver = resolver;
+
+ Store store = null;
+
+ try
+ {
+ this.lexicon = src;
+
+ this.lexiconSource = resolver.resolveURI(this.lexicon);
+
+ // Retrieve the lexical automaton from the transient store
+ store = (Store)this.manager.lookup(Store.TRANSIENT_STORE);
+
+ LexicalAutomatonEntry entry = (LexicalAutomatonEntry)store.get(this.lexiconSource.getURI());
+
+ // If the lexicon has changed, rebuild the lexical automaton
+ if ((entry==null) || (entry.getValidity()==null) ||
+ (entry.getValidity().isValid(this.lexiconSource.getValidity())<=0))
+ {
+ this.logger.info("(Re)building the automaton from '"+this.lexiconSource.getURI()+"'");
+
+ if (this.lexiconSource.getInputStream()==null)
+ throw new ProcessingException("Source '"+this.lexiconSource.getURI()+"' not found");
+
+ LexiconFactory factory = new LexiconFactory();
+ SourceUtil.toSAX(this.manager, this.lexiconSource, null, factory);
+
+ Lexicon lexicon = factory.getLexicon();
+
+ LexicalAutomatonBuilder builder =
+ new LexicalAutomatonBuilder(lexicon/*, new AvalonLogger(this.logger)*/);
+
+ this.automaton = builder.getLexicalAutomaton();
+
+ this.logger.info("Store automaton into store for '"+this.lexiconSource.getURI()+"'");
+ store.store(this.lexiconSource.getURI(),
+ new LexicalAutomatonEntry(this.automaton, this.lexiconSource.getValidity()));
+ }
+ else
+ {
+ this.logger.info("Getting automaton from store for '"+this.lexiconSource.getURI()+"'");
+ this.automaton = entry.getLexicalAutomaton();
+ }
+ }
+ catch (SourceException se)
+ {
+ throw new ProcessingException("Error during resolving of '"+src+"'.", se);
+ }
+ catch (ServiceException se)
+ {
+ throw new ProcessingException("Could not lookup for component", se);
+ }
+ finally
+ {
+ if (store!=null)
+ this.manager.release(store);
+ }
+ }
+
+ /**
+ * Generate the unique key. This key must be unique inside the space of this component.
+ *
+ * @return The generated key hashes the src
+ */
+ public Serializable getKey()
+ {
+ return this.lexiconSource.getURI();
+ }
+
+ /**
+ * Generate the validity object.
+ *
+ * @return The generated validity object or <code>null</code> if the component is currently not
+ * cacheable.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.lexiconSource.getValidity();
+ }
+
+ /**
+ * Recycle this component. All instance variables are set to <code>null</code>.
+ */
+ public void recycle()
+ {
+ if ((this.resolver!=null) && (this.lexiconSource!=null))
+ {
+ this.resolver.release(this.lexiconSource);
+ this.lexiconSource = null;
+ }
+
+ this.automaton = null;
+ super.recycle();
+ }
+
+ /**
+ * The dispose operation is called at the end of a components lifecycle.
+ */
+ public void dispose()
+ {
+ if ((this.resolver!=null) && (this.lexiconSource!=null))
+ {
+ this.resolver.release(this.lexiconSource);
+ this.lexiconSource = null;
+ }
+
+ this.manager = null;
+ }
+
+ /**
+ * Receive notification of the beginning of an element.
+ *
+ * @param uri The Namespace URI, or the empty string if the element has no Namespace URI or if
+ * Namespace processing is not being performed.
+ * @param loc The local name (without prefix), or the empty string if Namespace processing is not
+ * being performed.
+ * @param raw The raw XML 1.0 name (with prefix), or the empty string if raw names are not
+ * available.
+ * @param a The attributes attached to the element. If there are no attributes, it shall be an
+ * empty Attributes object.
+ *
+ * @throws SAXException
+ */
+ public void startElement(String uri, String loc, String raw, Attributes a)
+ throws SAXException
+ {
+ search();
+
+ if (contentHandler!=null)
+ contentHandler.startElement(uri, loc, raw, a);
+ }
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * @param uri The Namespace URI, or the empty string if the element has no Namespace URI or if
+ * Namespace processing is not being performed.
+ * @param loc The local name (without prefix), or the empty string if Namespace processing is not
+ * being performed.
+ * @param raw The raw XML 1.0 name (with prefix), or the empty string if raw names are not
+ * available.
+ *
+ * @throws SAXException
+ */
+ public void endElement(String uri, String loc, String raw)
+ throws SAXException
+ {
+ search();
+
+ if (contentHandler!=null)
+ contentHandler.endElement(uri, loc, raw);
+ }
+
+ /**
+ * Receive notification of character data.
+ *
+ * @param c The characters from the XML document.
+ * @param start The start position in the array.
+ * @param len The number of characters to read from the array.
+ *
+ * @throws SAXException
+ */
+ public void characters(char[] c, int start, int len)
+ throws SAXException
+ {
+ buffer.append(c, start, len);
+ }
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * @param c The characters from the XML document.
+ * @param start The start position in the array.
+ * @param len The number of characters to read from the array.
+ *
+ * @throws SAXException
+ */
+ public void ignorableWhitespace(char[] c, int start, int len)
+ throws SAXException
+ {
+ buffer.append(c, start, len);
+ }
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if none was supplied.
+ *
+ * @throws SAXException
+ */
+ public void processingInstruction(String target, String data)
+ throws SAXException
+ {
+ search();
+
+ if (contentHandler!=null)
+ contentHandler.processingInstruction(target, data);
+ }
+
+ /**
+ * Report an XML comment anywhere in the document.
+ *
+ * @param ch An array holding the characters in the comment.
+ * @param start The starting position in the array.
+ * @param len The number of characters to use from the array.
+ *
+ * @throws SAXException
+ */
+ public void comment(char[] ch, int start, int len) throws SAXException
+ {
+ search();
+
+ if (lexicalHandler!=null)
+ lexicalHandler.comment(ch, start, len);
+ }
+
+ /**
+ * @throws SAXException
+ */
+ private void search() throws SAXException
+ {
+ if (buffer.length()<=0)
+ return;
+
+ char[] text = buffer.toString().toCharArray();
+
+ String lexemesymbol;
+ String lexemetext;
+ String[] groups = null;
+ int lexemeindex = 0;
+ int position = 0;
+
+ output.setLength(0);
+ do
+ {
+ lexemesymbol = null;
+ lexemetext = null;
+
+ for (lexemeindex = automaton.getLexemeCount()-1; lexemeindex>=0; lexemeindex--)
+ {
+ processor.setPatternAutomaton(automaton.getLexemeDefinition(lexemeindex));
+
+ if ((processor.match(text, position)) &&
+ ((lexemetext==null) || (processor.getGroup().length()>=lexemetext.length())))
+ {
+ lexemesymbol = automaton.getLexemeSymbol(lexemeindex);
+ lexemetext = processor.getGroup();
+ if (this.groups)
+ {
+ groups = new String[processor.getGroupCount()];
+ for (int group = 0; group<processor.getGroupCount(); group++)
+ groups[group] = processor.getGroup(group);
+ }
+ }
+ }
+
+ if ((lexemetext!=null) && (lexemetext.length()>0))
+ {
+ if (lexemesymbol!=null)
+ {
+ if (logger!=null)
+ logger.debug("Recognize token "+lexemesymbol+" with "+Decoder.toString(lexemetext));
+
+ if (output.length()>0)
+ contentHandler.characters(output.toString().toCharArray(), 0, output.length());
+
+ output.setLength(0);
+
+ contentHandler.startPrefixMapping("", NS);
+
+ AttributesImpl atts = new AttributesImpl();
+
+ atts.addAttribute("", "symbol", "symbol", "CDATA", lexemesymbol);
+ atts.addAttribute("", "text", "text", "CDATA", lexemetext);
+ contentHandler.startElement(NS, "lexeme", "lexeme", atts);
+
+ if (this.groups)
+ {
+ for (int group = 0; group<groups.length; group++)
+ {
+ contentHandler.startElement(NS, "group", "group", new AttributesImpl());
+ contentHandler.characters(groups[group].toCharArray(), 0, groups[group].length());
+ contentHandler.endElement(NS, "group", "group");
+ }
+ }
+
+ contentHandler.endElement(NS, "lexeme", "lexeme");
+ contentHandler.endPrefixMapping("");
+ }
+ else if (logger!=null)
+ logger.debug("Ignore lexeme with "+Decoder.toString(lexemetext));
+
+ position += lexemetext.length();
+ }
+ else
+ {
+ output.append(text[position]);
+ position++;
+ }
+ }
+ while (position<text.length);
+
+ if (output.length()>0)
+ contentHandler.characters(output.toString().toCharArray(), 0, output.length());
+
+ buffer.setLength(0);
+ }
+
+ /**
+ * This class represent a entry in a store to cache the lexical automaton.
+ */
+ public class LexicalAutomatonEntry implements Serializable
+ {
+ private SourceValidity validity = null;
+ private LexicalAutomaton automaton = null;
+
+ /**
+ * Create a new entry.
+ *
+ * @param automaton Lexical automaton.
+ * @param validity Validity of the lexicon file.
+ */
+ public LexicalAutomatonEntry(LexicalAutomaton automaton, SourceValidity validity)
+ {
+ this.automaton = automaton;
+ this.validity = validity;
+ }
+
+ /**
+ * Return the validity of the lexicon file.
+ *
+ * @return Validity of the lexicon file.
+ */
+ public SourceValidity getValidity()
+ {
+ return this.validity;
+ }
+
+ /**
+ * Return the lexical automaton.
+ *
+ * @return Lexical automaton.
+ */
+ public LexicalAutomaton getLexicalAutomaton()
+ {
+ return this.automaton;
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out)
+ throws IOException
+ {
+ out.writeObject(validity);
+ out.writeObject(automaton);
+ }
+
+ private void readObject(java.io.ObjectInputStream in)
+ throws IOException, ClassNotFoundException
+ {
+ validity = (SourceValidity)in.readObject();
+ automaton = (LexicalAutomaton)in.readObject();
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/lib/chaperon-20040205.jar b/ASF_20_SRC_AUTO/src/blocks/chaperon/lib/chaperon-20040205.jar
new file mode 100644
index 0000000..16ebe3b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/lib/chaperon-20040205.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/egrm.xegrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/egrm.xegrm
new file mode 100644
index 0000000..29add68
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/egrm.xegrm
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/2.0"
+ start="grammar">
+
+ <definition name="grammar">
+ <sequence>
+ <optional>
+ <element name="ws"/>
+ </optional>
+ <choice>
+ <element name="definition"/>
+ <element name="abbreviation"/>
+ <element name="start"/>
+ </choice>
+ <zero-or-more>
+ <element name="ws"/>
+ <choice>
+ <element name="definition"/>
+ <element name="abbreviation"/>
+ <element name="start"/>
+ </choice>
+ </zero-or-more>
+ <optional>
+ <element name="ws"/>
+ </optional>
+ </sequence>
+ </definition>
+
+ <definition name="definition">
+ <sequence>
+ <element name="name"/>
+ <element name="ws"/>
+ <char value=":"/>
+ <element name="ws"/>
+ <optional>
+ <element name="regex"/>
+ </optional>
+ <element name="ws"/>
+ <char value=";"/>
+ </sequence>
+ </definition>
+
+ <definition name="name">
+ <sequence>
+ <class>
+ <interval><char value="A"/><char value="Z"/></interval>
+ <interval><char value="a"/><char value="z"/></interval>
+ </class>
+ <zero-or-more>
+ <class>
+ <interval><char value="A"/><char value="Z"/></interval>
+ <interval><char value="a"/><char value="z"/></interval>
+ <interval><char value="0"/><char value="9"/></interval>
+ <char value="_"/>
+ <char value="-"/>
+ </class>
+ </zero-or-more>
+ </sequence>
+ </definition>
+
+ <definition name="abbreviation">
+ <char value="%"/>
+ <char value="a"/>
+ <char value="b"/>
+ <element name="ws"/>
+ <element name="name"/>
+ <element name="ws"/>
+ <char value=":"/>
+ <element name="ws"/>
+ <element name="regex"/>
+ <element name="ws"/>
+ <char value=";"/>
+ </definition>
+
+ <definition name="start">
+ <char value="%"/>
+ <char value="s"/>
+ <char value="t"/>
+ <char value="a"/>
+ <char value="r"/>
+ <char value="t"/>
+ <element name="ws"/>
+ <element name="name"/>
+ <element name="ws"/>
+ <char value=";"/>
+ </definition>
+
+ <definition name="precedence">
+ <element name="ws"/>
+ <char value="%"/>
+ <char value="p"/>
+ <char value="r"/>
+ <char value="e"/>
+ <char value="c"/>
+ <element name="ws"/>
+ <element name="name"/>
+ </definition>
+
+ <definition name="regex">
+ <choice>
+ <element name="choice"/>
+ <element name="sequence"/>
+ <element name="quantifier"/>
+ </choice>
+ </definition>
+
+ <definition name="choice">
+ <sequence>
+ <choice>
+ <element name="sequence"/>
+ <element name="quantifier"/>
+ </choice>
+ <one-or-more>
+ <optional>
+ <element name="precedence"/>
+ </optional>
+ <element name="ws"/>
+ <char value="|"/>
+ <element name="ws"/>
+ <choice>
+ <element name="sequence"/>
+ <element name="quantifier"/>
+ </choice>
+ <optional>
+ <element name="precedence"/>
+ </optional>
+ </one-or-more>
+ </sequence>
+ </definition>
+
+ <definition name="sequence">
+ <sequence>
+ <element name="quantifier"/>
+ <one-or-more>
+ <element name="ws"/>
+ <element name="quantifier"/>
+ </one-or-more>
+ </sequence>
+ </definition>
+
+ <definition name="quantifier">
+ <choice>
+ <element name="optional"/>
+ <element name="one-or-more"/>
+ <element name="zero-or-more"/>
+ <element name="term"/>
+ </choice>
+ </definition>
+
+ <definition name="optional">
+ <sequence>
+ <element name="term"/>
+ <element name="ws"/>
+ <char value="?"/>
+ </sequence>
+ </definition>
+
+ <definition name="one-or-more">
+ <sequence>
+ <element name="term"/>
+ <element name="ws"/>
+ <char value="+"/>
+ </sequence>
+ </definition>
+
+ <definition name="zero-or-more">
+ <sequence>
+ <element name="term"/>
+ <element name="ws"/>
+ <char value="*"/>
+ </sequence>
+ </definition>
+
+ <definition name="term">
+ <choice>
+ <element name="class"/>
+ <element name="string"/>
+ <element name="nested"/>
+ <element name="element"/>
+ <element name="dot"/>
+ </choice>
+ </definition>
+
+ <definition name="class">
+ <sequence>
+ <char value="["/>
+ <optional>
+ <element name="exclusive"/>
+ </optional>
+ <one-or-more>
+ <choice>
+ <element name="interval"/>
+ <element name="class-char"/>
+ <element name="masked-char"/>
+ </choice>
+ </one-or-more>
+ <char value="]"/>
+ </sequence>
+ </definition>
+
+ <definition name="exclusive">
+ <char value="^"/>
+ </definition>
+
+ <definition name="string">
+ <sequence>
+ <char value="""/>
+ <one-or-more>
+ <choice>
+ <element name="char"/>
+ <element name="masked-char"/>
+ </choice>
+ </one-or-more>
+ <char value="""/>
+ </sequence>
+ </definition>
+
+ <definition name="char">
+ <class exclusive="true">
+ <char value="\"/>
+ <char value=" "/>
+ <char value=" "/>
+ <char value="""/>
+ </class>
+ </definition>
+
+ <definition name="class-char">
+ <class exclusive="true">
+ <char value="\"/>
+ <char value="["/>
+ <char value="]"/>
+ <char value="-"/>
+ <char value=" "/>
+ <char value=" "/>
+ <char value=" "/>
+ <char value="^"/>
+ </class>
+ </definition>
+
+ <definition name="masked-char">
+ <choice>
+ <sequence>
+ <char value="\"/>
+ <class exclusive="true">
+ <char value="u"/>
+ </class>
+ </sequence>
+ <sequence>
+ <char value="\"/>
+ <char value="u"/>
+ <class>
+ <interval><char value="0"/><char value="9"/></interval>
+ <interval><char value="a"/><char value="f"/></interval>
+ <interval><char value="A"/><char value="F"/></interval>
+ </class>
+ <class>
+ <interval><char value="0"/><char value="9"/></interval>
+ <interval><char value="a"/><char value="f"/></interval>
+ <interval><char value="A"/><char value="F"/></interval>
+ </class>
+ <class>
+ <interval><char value="0"/><char value="9"/></interval>
+ <interval><char value="a"/><char value="f"/></interval>
+ <interval><char value="A"/><char value="F"/></interval>
+ </class>
+ <class>
+ <interval><char value="0"/><char value="9"/></interval>
+ <interval><char value="a"/><char value="f"/></interval>
+ <interval><char value="A"/><char value="F"/></interval>
+ </class>
+ </sequence>
+ </choice>
+ </definition>
+
+ <definition name="dot">
+ <char value="."/>
+ </definition>
+
+ <definition name="interval">
+ <sequence>
+ <choice>
+ <element name="class-char"/>
+ <element name="masked-char"/>
+ </choice>
+ <char value="-"/>
+ <choice>
+ <element name="class-char"/>
+ <element name="masked-char"/>
+ </choice>
+ </sequence>
+ </definition>
+
+ <definition name="nested">
+ <sequence>
+ <char value="("/>
+ <element name="ws"/>
+ <choice>
+ <element name="choice"/>
+ <element name="sequence"/>
+ <element name="quantifier"/>
+ </choice>
+ <element name="ws"/>
+ <char value=")"/>
+ </sequence>
+ </definition>
+
+ <definition name="element">
+ <sequence>
+ <class>
+ <interval><char value="A"/><char value="Z"/></interval>
+ <interval><char value="a"/><char value="z"/></interval>
+ </class>
+ <zero-or-more>
+ <class>
+ <interval><char value="A"/><char value="Z"/></interval>
+ <interval><char value="a"/><char value="z"/></interval>
+ <interval><char value="0"/><char value="9"/></interval>
+ <char value="_"/>
+ <char value="-"/>
+ </class>
+ </zero-or-more>
+ </sequence>
+ </definition>
+
+ <definition name="ws">
+ <zero-or-more>
+ <choice>
+ <sequence>
+ <char value="/"/>
+ <char value="/"/>
+ <zero-or-more>
+ <class exclusive="true">
+ <char value=" "/>
+ <char value=" "/>
+ </class>
+ </zero-or-more>
+ <one-or-more>
+ <class>
+ <char value=" "/>
+ <char value=" "/>
+ </class>
+ </one-or-more>
+ </sequence>
+ <sequence>
+ <char value="/"/>
+ <char value="*"/>
+ <zero-or-more>
+ <choice>
+ <class exclusive="true"><char value="*"/></class>
+ <sequence><char value="*"/><class exclusive="true"><char value="/"/></class></sequence>
+ </choice>
+ </zero-or-more>
+ <char value="*"/>
+ <char value="/"/>
+ </sequence>
+ <class>
+ <char value=" "/>
+ <char value=" "/>
+ <char value="	"/>
+ <char value=" "/>
+ </class>
+ </choice>
+ </zero-or-more>
+ </definition>
+</grammar>
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/error.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/error.xlex
new file mode 100644
index 0000000..25ced37
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/error.xlex
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <lexeme symbol="line">
+ <alt>
+ <concat>
+ <bol/>
+ <cclass maxOccurs="*" minOccurs="0" exclusive="true">
+ <cset content=" "/>
+ </cclass>
+ <alt>
+ <concat>
+ <cstring code="13"/>
+ <cstring code="10" minOccurs="0"/>
+ </concat>
+ <cstring code="10"/>
+ </alt>
+ </concat>
+ <concat>
+ <bol/>
+ <cclass maxOccurs="*" minOccurs="1" exclusive="true">
+ <cset content=" "/>
+ </cclass>
+ <eol/>
+ </concat>
+ </alt>
+ </lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xgrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xgrm
new file mode 100644
index 0000000..f36f132
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xgrm
@@ -0,0 +1,105 @@
+<?xml version="1.0" standalone="no"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+
+ <production symbol="grammar">
+ <nonterminal symbol="token_decls"/><terminal symbol="delimiter"/>
+ <nonterminal symbol="production_decls"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="token_decls"/> <nonterminal symbol="token_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="token_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="token_decls"/><nonterminal symbol="start_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="start_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="token_decls"/><nonterminal symbol="ignorabletoken_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="ignorabletoken_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="token_decls"/><nonterminal symbol="ab_decl"/>
+ </production>
+
+ <production symbol="token_decls">
+ <nonterminal symbol="ab_decl"/>
+ </production>
+
+ <production symbol="token_decl">
+ <terminal symbol="token_decl"/><terminal symbol="id"/>
+ <terminal symbol="string"/><terminal symbol="semicolon"/>
+ </production>
+
+ <production symbol="start_decl">
+ <terminal symbol="start_decl"/><terminal symbol="id"/><terminal symbol="semicolon"/>
+ </production>
+
+ <production symbol="ignorabletoken_decl">
+ <terminal symbol="ignorabletoken_decl"/><terminal symbol="string"/><terminal symbol="semicolon"/>
+ </production>
+
+ <production symbol="ab_decl">
+ <terminal symbol="ab_decl"/><terminal symbol="id"/>
+ <terminal symbol="string"/><terminal symbol="semicolon"/>
+ </production>
+
+ <production symbol="production_decls">
+ <nonterminal symbol="production_decls"/><nonterminal symbol="production_decl"/>
+ </production>
+
+ <production symbol="production_decls">
+ <nonterminal symbol="production_decl"/>
+ </production>
+
+ <production symbol="production_decl">
+ <terminal symbol="id"/><terminal symbol="colon"/><nonterminal symbol="production_defs"/>
+ <terminal symbol="semicolon"/>
+ </production>
+
+ <production symbol="production_defs">
+ <nonterminal symbol="production_defs"/><terminal symbol="alt"/><nonterminal symbol="production_def"/>
+ </production>
+
+ <production symbol="production_defs">
+ <nonterminal symbol="production_def"/>
+ </production>
+
+ <production symbol="prec_decl">
+ <terminal symbol="prec_decl"/><terminal symbol="id"/>
+ </production>
+
+ <production symbol="production_def">
+ <nonterminal symbol="ids"/>
+ </production>
+
+ <production symbol="production_def">
+ <!-- empty definition -->
+ </production>
+
+ <production symbol="production_def">
+ <nonterminal symbol="ids"/><nonterminal symbol="prec_decl"/>
+ </production>
+
+ <production symbol="ids">
+ <nonterminal symbol="ids"/><terminal symbol="id"/>
+ </production>
+
+ <production symbol="ids">
+ <terminal symbol="id"/>
+ </production>
+
+ <start symbol="grammar"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xlex
new file mode 100644
index 0000000..1295c4e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/grm.xlex
@@ -0,0 +1,93 @@
+<?xml version="1.0" standalone="no"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+
+ <lexeme symbol="token_decl">
+ <alt>
+ <cstring content="%token"/>
+ <cstring content="%left"/>
+ <cstring content="%right"/>
+ </alt>
+ </lexeme>
+
+ <lexeme symbol="ab_decl">
+ <cstring content="%ab"/>
+ </lexeme>
+
+ <lexeme symbol="start_decl">
+ <cstring content="%start"/>
+ </lexeme>
+
+ <lexeme symbol="ignorabletoken_decl">
+ <cstring content="%ignore"/>
+ </lexeme>
+
+ <lexeme symbol="prec_decl">
+ <cstring content="%prec"/>
+ </lexeme>
+
+ <lexeme symbol="delimiter">
+ <cstring content="%%"/>
+ </lexeme>
+
+ <lexeme symbol="colon">
+ <cstring content=":"/>
+ </lexeme>
+
+ <lexeme symbol="alt">
+ <cstring content="|"/>
+ </lexeme>
+
+ <lexeme symbol="semicolon">
+ <cstring content=";"/>
+ </lexeme>
+
+ <lexeme symbol="string">
+ <concat>
+ <cstring content="""/>
+ <alt minOccurs="1" maxOccurs="*">
+ <cclass exclusive="true"><cset content="\""/></cclass>
+ <concat><cstring content="\"/><cclass exclusive="true"><cset content="u"/></cclass></concat>
+ <concat>
+ <cstring content="\u"/>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ </concat>
+ </alt>
+ <cstring content="""/>
+ </concat>
+ </lexeme>
+
+ <lexeme symbol="id">
+ <concat>
+ <cclass><cinterval min="A" max="Z"/><cinterval min="a" max="z"/></cclass>
+ <cclass minOccurs="0" maxOccurs="*">
+ <cinterval min="A" max="Z"/><cinterval min="a" max="z"/><cinterval min="0" max="9"/><cset content="_"/>
+ </cclass>
+ </concat>
+ </lexeme>
+
+ <lexeme>
+ <alt>
+ <concat>
+ <cstring content="//"/>
+ <cclass exclusive="true" minOccurs="0" maxOccurs="*">
+ <cset content=" "/>
+ </cclass>
+ </concat>
+ <concat>
+ <cstring content="/*"/>
+ <alt minOccurs="0" maxOccurs="*">
+ <cclass exclusive="true"><cset content="*"/></cclass>
+ <concat><cstring content="*"/><cclass exclusive="true"><cset content="/"/></cclass></concat>
+ </alt>
+ <cstring content="*/"/>
+ </concat>
+ </alt>
+ </lexeme>
+
+ <lexeme>
+ <cclass maxOccurs="*"><cset content=" 	 "/></cclass>
+ </lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.egrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.egrm
new file mode 100644
index 0000000..6e993bc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.egrm
@@ -0,0 +1,543 @@
+/* Java Grammar */
+
+%ab HexDigit : [0-9a-fA-F];
+%ab Digit : [0-9];
+%ab OctalDigit : [0-7];
+%ab TetraDigit : [0-3];
+%ab NonZeroDigit : [1-9];
+%ab Letter : [a-zA-Z_];
+%ab AnyButSlash : [^/];
+%ab AnyButAstr : [^*];
+%ab UniEsc : [\u0001];
+
+%ab OctEscape1 : "\\" OctalDigit;
+%ab OctEscape2 : "\\" OctalDigit OctalDigit;
+%ab OctEscape3 : "\\" TetraDigit OctalDigit OctalDigit;
+%ab OctEscape : OctEscape1 | OctEscape2 | OctEscape3;
+
+%ab Escape : [\\] [rnbft\\'"];
+%ab ULetter : Letter | UniEsc;
+Identifier : ULetter ( ULetter Digit )*;
+
+%ab IntSuffix : "l" | "L";
+%ab DecimalNum : NonZeroDigit Digit* IntSuffix? ;
+%ab OctalNum : "0" OctalDigit* IntSuffix? ;
+%ab HexNum : "0" ("x"|"X") HexDigit HexDigit* IntSuffix? ;
+%ab IntegerLiteral : DecimalNum | OctalNum | HexNum;
+
+%ab Sign : "+" | "-";
+%ab FlSuffix : "f" | "F" | "d" | "D";
+%ab SignedInt : Sign? Digit+ ;
+%ab Expo : "e" | "E" ;
+%ab ExponentPart : Expo SignedInt? ;
+%ab Float1 : Digit+ "." (Digit+)? ExponentPart? FlSuffix?;
+%ab Float2 : "." Digit+ ExponentPart? FlSuffix? ;
+%ab Float3 : Digit+ ExponentPart FlSuffix? ;
+%ab Float4 : Digit+ FlSuffix ;
+%ab FloatingPoint : Float1 | Float2 | Float3 | Float4 ;
+
+%ab AnyChrChr : [^\\'] ;
+%ab AnyStrChr : [^\\"] ;
+%ab Character : "'" (Escape | OctEscape | AnyChrChr) "'" ;
+%ab String : "\"" (Escape | OctEscape | AnyStrChr)* "\"";
+%ab Numeric : IntegerLiteral | FloatingPoint ;
+
+LITERAL : Numeric | Character | String ;
+
+IDENTIFIER : ([a-zA-Z_] | [\u0001]) (([a-zA-Z_] | [\u0001]) | [0-9])*;
+
+OP_DIM : "[" ([\r\n\t\ ] | ( "/" "\*" ([^\*] | "\*" [^/])* "\*" "/" |
+ "//" (.*)))* "]";
+
+%ab SPACES : " "+;
+%ab TAB : "\t";
+%ab EOL : "\r" "\n"? | "\n" ;
+// JAVADOC : "/**" ([^*] | [*] [^/])* "*/";
+
+JAVADOC : "/**" Description Property+ "*/";
+
+Description : ([\*\n\r\ \t]+ | DescriptionText)* ;
+DescriptionText : [A-Za-z<>%]+ ([\ \t]+ [A-Za-z<>%]+)* ;
+Property : "@" PropertyIdentifier [\ \t]+ Description ;
+PropertyIdentifier : [A-Za-z]+ ;
+
+%ab MULTILINECOMMENT : "/*" [^*] ([^*] | "*" [^/])* "*/";
+%ab SINGLELINECOMMENT : "//" (.*);
+
+WS : (SPACES|TAB|EOL|JAVADOC|MULTILINECOMMENT|SINGLELINECOMMENT)*
+ ;
+
+%start CompilationUnit;
+
+TypeSpecifier
+ : TypeName Dims?
+ ;
+
+TypeName
+ : PrimitiveType
+ | QualifiedName
+ ;
+
+ClassNameList
+ : QualifiedName (WS "," WS QualifiedName)*
+ ;
+
+PrimitiveType
+ : "boolean"
+ | "char"
+ | "byte"
+ | "short"
+ | "int"
+ | "long"
+ | "float"
+ | "double"
+ | "void"
+ ;
+
+SemiColons
+ : ";"
+ | SemiColons ";"
+ ;
+
+CompilationUnit
+ : ProgramFile
+ ;
+
+ProgramFile
+ : WS PackageStatement (WS ImportStatements)? (WS TypeDeclarations)? WS
+ | (WS PackageStatement)? WS ImportStatements (WS TypeDeclarations)? WS
+ | (WS PackageStatement)? (WS ImportStatements)? WS TypeDeclarations WS
+ ;
+
+PackageStatement
+ : "package" WS QualifiedName WS SemiColons
+ ;
+
+TypeDeclarations
+ : TypeDeclarationOptSemi+
+ ;
+
+TypeDeclarationOptSemi
+ : TypeDeclaration SemiColons?
+ ;
+
+ImportStatements
+ : ImportStatement (WS ImportStatement)*
+ ;
+
+ImportStatement
+ : "import" WS QualifiedName ("." "*")? WS SemiColons
+ ;
+
+QualifiedName
+ : IDENTIFIER ("." IDENTIFIER)*
+ ;
+
+TypeDeclaration
+ : ClassHeader WS "{" (WS FieldDeclarations)? WS "}"
+ ;
+
+ClassHeader
+ : (Modifiers WS)? ClassWord WS IDENTIFIER (WS Extends)? (WS Interfaces)?
+ ;
+
+Modifiers
+ : Modifier ( WS Modifier )*
+ ;
+
+Modifier
+ : "abstract"
+ | "final"
+ | "public"
+ | "protected"
+ | "private"
+ | "static"
+ | "transient"
+ | "volatile"
+ | "native"
+ | "synchronized"
+ ;
+
+ClassWord
+ : "class"
+ | "interface"
+ ;
+
+Interfaces
+ : "implements" WS ClassNameList
+ ;
+
+FieldDeclarations
+ : FieldDeclaration ((WS SemiColons)? WS FieldDeclaration)*
+ ;
+
+FieldDeclaration
+ : FieldVariableDeclaration WS ";"
+ | MethodDeclaration
+ | ConstructorDeclaration
+ | StaticInitializer
+ | NonStaticInitializer
+ | TypeDeclaration
+ ;
+
+FieldVariableDeclaration
+ : (Modifiers WS)? TypeSpecifier WS VariableDeclarators
+ ;
+
+VariableDeclarators
+ : VariableDeclarator (WS "," WS VariableDeclarator)*
+ ;
+
+VariableDeclarator
+ : DeclaratorName (WS "=" WS VariableInitializer)?
+ ;
+
+VariableInitializer
+ : Expression
+ | "{" (WS ArrayInitializers)? WS "}"
+ ;
+
+ArrayInitializers
+ : VariableInitializer (WS "," WS VariableInitializer)*
+ ;
+
+MethodDeclaration
+ : (Modifiers WS)? TypeSpecifier WS MethodDeclarator (WS Throws)? WS MethodBody
+ ;
+
+MethodDeclarator
+ : DeclaratorName WS "(" (WS ParameterList)? WS ")"
+ | MethodDeclarator OP_DIM
+ ;
+
+ParameterList
+ : Parameter (WS "," WS Parameter)*
+ ;
+
+Parameter
+ : "final"? TypeSpecifier WS DeclaratorName
+ ;
+
+DeclaratorName
+ : IDENTIFIER
+ | DeclaratorName OP_DIM
+ ;
+
+Throws
+ : "throws" WS ClassNameList
+ ;
+
+MethodBody
+ : Block
+ | ";"
+ ;
+
+ConstructorDeclaration
+ : Modifiers? ConstructorDeclarator Throws? Block
+ ;
+
+ConstructorDeclarator
+ : IDENTIFIER "(" ParameterList? ")"
+ ;
+
+StaticInitializer
+ : "static" Block
+ ;
+
+NonStaticInitializer
+ : Block
+ ;
+
+Extends
+ : "extends" TypeName ("," TypeName)*
+ ;
+
+Block
+ : "{" (WS LocalVariableDeclarationsAndStatements)? WS "}"
+ ;
+
+LocalVariableDeclarationsAndStatements
+ : LocalVariableDeclarationOrStatement (WS LocalVariableDeclarationOrStatement)*
+ ;
+
+LocalVariableDeclarationOrStatement
+ : LocalVariableDeclarationStatement
+ | Statement
+ ;
+
+LocalVariableDeclarationStatement
+ : ("final" WS)? TypeSpecifier WS VariableDeclarators ";"
+ ;
+
+Statement
+ : EmptyStatement
+ | LabelStatement
+ | ExpressionStatement ";"
+ | SelectionStatement
+ | IterationStatement
+ | JumpStatement
+ | GuardingStatement
+ | Block
+ ;
+
+EmptyStatement
+ : ";"
+ ;
+
+LabelStatement
+ : IDENTIFIER ":"
+ | "case" ConstantExpression ":"
+ | "default" ":"
+ ;
+
+ExpressionStatement
+ : Expression
+ ;
+
+SelectionStatement
+ : "if" WS "(" WS Expression WS ")" WS Statement
+ | "if" WS "(" WS Expression WS ")" WS Statement WS "else" WS Statement
+ | "switch" WS "(" WS Expression WS ")" WS Block
+ ;
+
+IterationStatement
+ : "while" WS "(" WS Expression WS ")" WS Statement
+ | "do" WS Statement WS "while" WS "(" WS Expression WS ")" WS ";"
+ | "for" WS "(" WS ForInit WS ForExpr WS ForIncr WS ")" WS Statement
+ | "for" WS "(" WS ForInit WS ForExpr WS ")" WS Statement
+ ;
+
+ForInit
+ : ExpressionStatements WS ";"
+ | LocalVariableDeclarationStatement
+ | ";"
+ ;
+
+ForExpr
+ : Expression WS ";"
+ | ";"
+ ;
+
+ForIncr
+ : ExpressionStatements
+ ;
+
+ExpressionStatements
+ : ExpressionStatement (WS "," WS ExpressionStatement)*
+ ;
+
+JumpStatement
+ : "break" (WS IDENTIFIER)? WS ";"
+ | "continue" (WS IDENTIFIER)? WS ";"
+ | "return" (WS Expression)? WS ";"
+ | "throw" WS Expression WS ";"
+ ;
+
+GuardingStatement
+ : "synchronized" WS "(" WS Expression WS ")" WS Statement
+ | "try" WS Block WS Finally
+ | "try" WS Block WS Catches (WS Finally)?
+ ;
+
+Catches
+ : Catch (WS Catch)*
+ ;
+
+Catch
+ : CatchHeader WS Block
+ ;
+
+CatchHeader
+ : "catch" WS "(" WS TypeSpecifier (WS IDENTIFIER)? WS ")"
+ ;
+
+Finally
+ : "finally" WS Block
+ ;
+
+PrimaryExpression
+ : QualifiedName
+ | NotJustName
+ ;
+
+NotJustName
+ : SpecialName
+ | NewAllocationExpression
+ | ComplexPrimary
+ ;
+
+ComplexPrimary
+ : "(" WS Expression WS ")"
+ | ComplexPrimaryNoParenthesis
+ ;
+
+ComplexPrimaryNoParenthesis
+ : LITERAL
+ | "true" | "false"
+ | ArrayAccess
+ | FieldAccess
+ | MethodCall
+ ;
+
+ArrayAccess
+ : QualifiedName WS "[" WS Expression WS "]"
+ | ComplexPrimary WS "[" WS Expression WS "]"
+ ;
+
+FieldAccess
+ : NotJustName "." IDENTIFIER
+ | RealPostfixExpression "." IDENTIFIER
+ | QualifiedName "." "this"
+ | QualifiedName "." "class"
+ | PrimitiveType "." "class"
+ ;
+
+MethodCall
+ : MethodAccess WS "(" (WS ArgumentList)? WS ")"
+ ;
+
+MethodAccess
+ : ComplexPrimaryNoParenthesis
+ | SpecialName
+ | QualifiedName
+ ;
+
+SpecialName
+ : "this"
+ | "super"
+ | "null"
+ ;
+
+ArgumentList
+ : Expression (WS "," WS Expression)*
+ ;
+
+NewAllocationExpression
+ : (QualifiedName ".")? PlainNewAllocationExpression
+ ;
+
+PlainNewAllocationExpression
+ : ArrayAllocationExpression (WS "{" (WS ArrayInitializers)? WS "}")?
+ | ClassAllocationExpression (WS "{" (WS FieldDeclarations)? WS "}")?
+ ;
+
+ClassAllocationExpression
+ : "new" WS TypeName WS "(" (WS ArgumentList)? WS ")"
+ ;
+
+ArrayAllocationExpression
+ : "new" WS TypeName WS DimExprs (WS Dims)?
+ | "new" WS TypeName WS Dims
+ ;
+
+DimExprs
+ : DimExpr+
+ ;
+
+DimExpr
+ : "[" WS Expression WS "]"
+ ;
+
+Dims
+ : OP_DIM+
+ ;
+
+PostfixExpression
+ : PrimaryExpression
+ | RealPostfixExpression
+ ;
+
+RealPostfixExpression
+ : PostfixExpression WS ("++"|"--")
+ ;
+
+UnaryExpression
+ : ("++"|"--") UnaryExpression
+ | ("+"|"-") CastExpression
+ | LogicalUnaryExpression
+ ;
+
+LogicalUnaryExpression
+ : PostfixExpression
+ | ("~"|"!") UnaryExpression
+ ;
+
+CastExpression
+ : UnaryExpression
+ | "(" WS PrimitiveTypeExpression WS ")" WS CastExpression
+ | "(" WS ClassTypeExpression WS ")" WS CastExpression
+ | "(" WS Expression WS ")" WS LogicalUnaryExpression
+ ;
+
+PrimitiveTypeExpression
+ : PrimitiveType Dims?
+ ;
+
+ClassTypeExpression
+ : QualifiedName Dims
+ ;
+
+MultiplicativeExpression
+ : CastExpression (WS ("*"|"/"|"%") WS CastExpression)*
+ ;
+
+AdditiveExpression
+ : MultiplicativeExpression (WS ("+"|"-") WS MultiplicativeExpression)*
+ ;
+
+ShiftExpression
+ : AdditiveExpression (WS ("<<"|">>"|">>>") WS AdditiveExpression)*
+ ;
+
+RelationalExpression
+ : ShiftExpression (WS ("<"|">"|"<="|">=") WS ShiftExpression)*
+ | RelationalExpression WS "instanceof" WS TypeSpecifier
+ ;
+
+EqualityExpression
+ : RelationalExpression (WS ("==" | "!=") WS RelationalExpression)*
+ ;
+
+AndExpression
+ : EqualityExpression (WS "&" WS EqualityExpression)*
+ ;
+
+ExclusiveOrExpression
+ : AndExpression (WS "^" WS AndExpression)*
+ ;
+
+InclusiveOrExpression
+ : ExclusiveOrExpression (WS "|" WS ExclusiveOrExpression)*
+ ;
+
+ConditionalAndExpression
+ : InclusiveOrExpression (WS "&&" WS InclusiveOrExpression)*
+ ;
+
+ConditionalOrExpression
+ : ConditionalAndExpression (WS "||" WS ConditionalAndExpression)*
+ ;
+
+ConditionalExpression
+ : ConditionalOrExpression
+ | ConditionalOrExpression "?" Expression ":" ConditionalExpression
+ ;
+
+AssignmentExpression
+ : ConditionalExpression
+ | UnaryExpression WS AssignmentOperator WS AssignmentExpression
+ ;
+
+AssignmentOperator
+ : "="
+ | "+=" | "-=" | "*=" | "/=" | "&=" | "|=" | "^=" | "%=" | "<<=" | ">>=" | ">>>="
+ ;
+
+Expression
+ : AssignmentExpression
+ ;
+
+ConstantExpression
+ : ConditionalExpression
+ ;
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.grm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.grm
new file mode 100644
index 0000000..0d96330
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.grm
@@ -0,0 +1,815 @@
+/*------------------------------------------------------------------
+ * Copyright (C)
+ * 1996, 1997, 1998 Dmitri Bronnikov, All rights reserved.
+ *
+ * THIS GRAMMAR IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGMENT.
+ *
+ * Bronikov@inreach.com
+ *
+ *------------------------------------------------------------------
+ *
+ * VERSION 1.06 DATE 20 AUG 1998
+ *
+ *------------------------------------------------------------------
+ *
+ * UPDATES
+ *
+ * 1.06 Correction of Java 1.1 syntax
+ * 1.05 Yet more Java 1.1
+ * <qualified name>.<allocation expression>
+ * 1.04 More Java 1.1 features:
+ * <class name>.this
+ * <type name>.class
+ * 1.03 Added Java 1.1 features:
+ * inner classes,
+ * anonymous classes,
+ * non-static initializer blocks,
+ * array initialization by new operator
+ * 1.02 Corrected cast expression syntax
+ * 1.01 All shift/reduce conflicts, except dangling else, resolved
+ *
+ *------------------------------------------------------------------
+ *
+ * PARSING CONFLICTS RESOLVED
+ *
+ * Some Shift/Reduce conflicts have been resolved at the expense of
+ * the grammar defines a superset of the language. The following
+ * actions have to be performed to complete program syntax checking:
+ *
+ * 1) Check that modifiers applied to a class, interface, field,
+ * or constructor are allowed in respectively a class, inteface,
+ * field or constructor declaration. For example, a class
+ * declaration should not allow other modifiers than abstract,
+ * final and public.
+ *
+ * 2) For an expression statement, check it is either increment, or
+ * decrement, or assignment expression.
+ *
+ * 3) Check that type expression in a cast operator indicates a type.
+ * Some of the compilers that I have tested will allow simultaneous
+ * use of identically named type and variable in the same scope
+ * depending on context.
+ *
+ * 4) Change lexical definition to change '[' optionally followed by
+ * any number of white-space characters immediately followed by ']'
+ * to OP_DIM token. I defined this token as [\[]{white_space}*[\]]
+ * in the lexer.
+ *
+ *------------------------------------------------------------------
+ *
+ * UNRESOLVED SHIFT/REDUCE CONFLICTS
+ *
+ * Dangling else in if-then-else
+ *
+ *------------------------------------------------------------------
+ */
+
+%token DOPEN "\(";
+%token DCLOSE "\)";
+%token COPEN "\{";
+%token CCLOSE "\}";
+%token BOPEN "\[";
+%token BCLOSE "\]";
+%token SEMICOLON "\;";
+%token COMMA "\,";
+%right DOT "\.";
+
+%token OP_EQ "==";
+%token OP_LE "\<=";
+%token OP_GE "\>=";
+%token OP_NE "!=";
+%token OP_LOR "\|\|";
+%token OP_LAND "&&";
+%token OP_INC "\+\+";
+%token OP_DEC "\-\-";
+%token OP_SHR "\>\>";
+%token OP_SHL "\<\<";
+%token OP_SHRR "\>\>\>";
+%token ASS_OP "\+= | \-= | \*= | /= | &= | \|= | \^= | \%= | \<\<= | \>\>= | \>\>\>=";
+
+%right EQ "\=";
+%token GT "\>";
+%token LT "\<";
+%token NOT "\!";
+%token TILDE "\~";
+%token QM "\?";
+%token COLON "\:";
+%token PLUS "\+";
+%token MINUS "\-";
+%token MULT "\*";
+%token DIV "\/";
+%token AND "\&";
+%token OR "\|";
+%token XOR "\^";
+%token MOD "\%";
+
+%token BOOLLIT "true|false";
+
+%token ABSTRACT "abstract";
+%token DO "do";
+%token IMPLEMENTS "implements";
+%token PACKAGE "package";
+%token THROW "throw";
+%token BOOLEAN "boolean";
+%token DOUBLE "double";
+%token IMPORT "import";
+%token PRIVATE "private";
+%token THROWS "throws";
+%token BREAK "break";
+
+%right ELSE "else";
+
+%token INNER "inner";
+%token PROTECTED "protected";
+%token TRANSIENT "transient";
+%token BYTE "byte";
+%token EXTENDS "extends";
+%token INSTANCEOF "instanceof";
+%token PUBLIC "public";
+%token TRY "try";
+%token CASE "case";
+%token FINAL "final";
+%token INT "int";
+%token REST "rest";
+%token VAR "var";
+%token CAST "cast";
+%token FINALLY "finally";
+%token INTERFACE "interface";
+%token RETURN "return";
+%token VOID "void";
+%token CATCH "catch";
+%token FLOAT "float";
+%token LONG "long";
+%token SHORT "short";
+%token VOLATILE "volatile";
+%token CHAR "char";
+%token FOR "for";
+%token NATIVE "native";
+%token STATIC "static";
+%token WHILE "while";
+%token CLASS "class";
+%token FUTURE "future";
+%token NEW "new";
+%token SUPER "super";
+%token CONST "const";
+%token GENERIC "generic";
+%token NULL "null";
+%token SWITCH "switch";
+%token CONTINUE "continue";
+%token GOTO "goto";
+%token OPERATOR "operator";
+%token SYNCHRONIZED "synchronized";
+%token DEFAULT "default";
+%token IF "if";
+%token OUTER "outer";
+%token THIS "this";
+
+%ab HexDigit "[0-9a-fA-F]";
+%ab Digit "[0-9]";
+%ab OctalDigit "[0-7]";
+%ab TetraDigit "[0-3]";
+%ab NonZeroDigit "[1-9]";
+%ab Letter "[a-zA-Z_]";
+%ab AnyButSlash "[^\/]";
+%ab AnyButAstr "[^\*]";
+%ab UniEsc "[\1b]";
+
+%ab OctEscape1 "\\ <OctalDigit>";
+%ab OctEscape2 "\\ <OctalDigit><OctalDigit>";
+%ab OctEscape3 "\\ <TetraDigit><OctalDigit><OctalDigit>";
+%ab OctEscape "(<OctEscape1>|<OctEscape2>|<OctEscape3>)";
+
+%ab Escape "[\\]([rnbft\\\'\"])";
+%ab ULetter "(<Letter>|<UniEsc>)";
+%ab Identifier "<ULetter>(<ULetter>|<Digit>)*";
+
+%ab IntSuffix "(l|L)";
+%ab DecimalNum "<NonZeroDigit><Digit>*<IntSuffix>?";
+%ab OctalNum "0 <OctalDigit>*<IntSuffix>?";
+%ab HexNum "0 (x|X) <HexDigit><HexDigit>*<IntSuffix>?";
+%ab IntegerLiteral "(<DecimalNum>|<OctalNum>|<HexNum>)";
+
+%ab Sign "(\+ | \-)";
+%ab FlSuffix "(f|F|d|D)";
+%ab SignedInt "<Sign>?<Digit>+";
+%ab Expo "(e|E)";
+%ab ExponentPart "<Expo><SignedInt>?";
+%ab Float1 "<Digit>+ \. (<Digit>+)?<ExponentPart>?<FlSuffix>?";
+%ab Float2 "\. <Digit>+<ExponentPart>?<FlSuffix>?";
+%ab Float3 "<Digit>+<ExponentPart><FlSuffix>?";
+%ab Float4 "<Digit>+<FlSuffix>";
+%ab FloatingPoint "(<Float1>|<Float2>|<Float3>|<Float4>)";
+
+%ab AnyChrChr "[^\\']";
+%ab AnyStrChr "[^\\\"]";
+%ab Character "\' (<Escape>|<OctEscape>|<AnyChrChr>) \'";
+%ab String "\" (<Escape>|<OctEscape>|<AnyStrChr>)* \"";
+%ab Numeric "(<IntegerLiteral>|<FloatingPoint>)";
+
+%token LITERAL "(<Numeric>|<Character>|<String>)";
+
+%token IDENTIFIER "([a-zA-Z_]|[\1b])(([a-zA-Z_]|[\1b])|[0-9])*";
+
+
+%token OP_DIM "\[ ([\r\n\t\ ]|( \/ \* ([^\*]| \* [^\/])* \* \/ |
+ \/ \/ (.*)))* \]";
+
+%token SPACES "(\ )+";
+%token TAB "\t";
+
+%token EOL "\r(\n)?|\n"; // eol
+
+%token JAVADOC "/ \* \* ([^\*]|[\*][^/])* \* /";
+%token MULTILINECOMMENT "/ \* ([^\*]|\*[^/])* \* /";
+
+%token SINGLELINECOMMENT "\/ \/ (.*)";
+
+%start CompilationUnit;
+
+%%
+
+TypeSpecifier
+ : TypeName
+ | TypeName Dims
+ ;
+
+TypeName
+ : PrimitiveType
+ | QualifiedName %prec DOT
+ ;
+
+ClassNameList
+ : QualifiedName
+ | ClassNameList COMMA QualifiedName
+ ;
+
+PrimitiveType
+ : BOOLEAN
+ | CHAR
+ | BYTE
+ | SHORT
+ | INT
+ | LONG
+ | FLOAT
+ | DOUBLE
+ | VOID
+ ;
+
+SemiColons
+ : SEMICOLON
+ | SemiColons SEMICOLON
+ ;
+
+CompilationUnit
+ : ProgramFile
+ ;
+
+ProgramFile
+ : PackageStatement ImportStatements TypeDeclarations
+ | PackageStatement ImportStatements
+ | PackageStatement TypeDeclarations
+ | ImportStatements TypeDeclarations
+ | PackageStatement
+ | ImportStatements
+ | TypeDeclarations
+ ;
+
+PackageStatement
+ : PACKAGE QualifiedName SemiColons
+ ;
+
+TypeDeclarations
+ : TypeDeclarationOptSemi
+ | TypeDeclarations TypeDeclarationOptSemi
+ ;
+
+TypeDeclarationOptSemi
+ : TypeDeclaration
+ | TypeDeclaration SemiColons
+ ;
+
+ImportStatements
+ : ImportStatement
+ | ImportStatements ImportStatement
+ ;
+
+ImportStatement
+ : IMPORT QualifiedName SemiColons
+ | IMPORT QualifiedName DOT MULT SemiColons
+ ;
+
+QualifiedName
+ : IDENTIFIER
+ | QualifiedName DOT IDENTIFIER
+ ;
+
+TypeDeclaration
+ : ClassHeader COPEN FieldDeclarations CCLOSE
+ | ClassHeader COPEN CCLOSE
+ | JAVADOC ClassHeader COPEN FieldDeclarations CCLOSE
+ | JAVADOC ClassHeader COPEN CCLOSE
+ ;
+
+ClassHeader
+ : Modifiers ClassWord IDENTIFIER Extends Interfaces
+ | Modifiers ClassWord IDENTIFIER Extends
+ | Modifiers ClassWord IDENTIFIER Interfaces
+ | ClassWord IDENTIFIER Extends Interfaces
+ | Modifiers ClassWord IDENTIFIER
+ | ClassWord IDENTIFIER Extends
+ | ClassWord IDENTIFIER Interfaces
+ | ClassWord IDENTIFIER
+ ;
+
+Modifiers
+ : Modifier
+ | Modifiers Modifier
+ ;
+
+Modifier
+ : ABSTRACT
+ | FINAL
+ | PUBLIC
+ | PROTECTED
+ | PRIVATE
+ | STATIC
+ | TRANSIENT
+ | VOLATILE
+ | NATIVE
+ | SYNCHRONIZED
+ ;
+
+ClassWord
+ : CLASS
+ | INTERFACE
+ ;
+
+Interfaces
+ : IMPLEMENTS ClassNameList
+ ;
+
+FieldDeclarations
+ : FieldDeclarationOptSemi
+ | FieldDeclarations FieldDeclarationOptSemi
+ ;
+
+FieldDeclarationOptSemi
+ : FieldDeclaration
+ | FieldDeclaration SemiColons
+ ;
+
+FieldDeclaration
+ : FieldVariableDeclaration SEMICOLON
+ | MethodDeclaration
+ | ConstructorDeclaration
+ | StaticInitializer
+ | NonStaticInitializer
+ | TypeDeclaration
+ ;
+
+FieldVariableDeclaration
+ : Modifiers TypeSpecifier VariableDeclarators
+ | TypeSpecifier VariableDeclarators
+ | JAVADOC Modifiers TypeSpecifier VariableDeclarators
+ | JAVADOC TypeSpecifier VariableDeclarators
+ ;
+
+VariableDeclarators
+ : VariableDeclarator
+ | VariableDeclarators COMMA VariableDeclarator
+ ;
+
+VariableDeclarator
+ : DeclaratorName
+ | DeclaratorName EQ VariableInitializer
+ ;
+
+VariableInitializer
+ : Expression
+ | COPEN CCLOSE
+ | COPEN ArrayInitializers CCLOSE
+ ;
+
+ArrayInitializers
+ : VariableInitializer
+ | ArrayInitializers COMMA VariableInitializer
+ | ArrayInitializers COMMA
+ ;
+
+MethodDeclaration
+ : Modifiers TypeSpecifier MethodDeclarator Throws MethodBody
+ | Modifiers TypeSpecifier MethodDeclarator MethodBody
+ | TypeSpecifier MethodDeclarator Throws MethodBody
+ | TypeSpecifier MethodDeclarator MethodBody
+ | JAVADOC Modifiers TypeSpecifier MethodDeclarator Throws MethodBody
+ | JAVADOC Modifiers TypeSpecifier MethodDeclarator MethodBody
+ | JAVADOC TypeSpecifier MethodDeclarator Throws MethodBody
+ | JAVADOC TypeSpecifier MethodDeclarator MethodBody
+ ;
+
+MethodDeclarator
+ : DeclaratorName DOPEN ParameterList DCLOSE
+ | DeclaratorName DOPEN DCLOSE
+ | MethodDeclarator OP_DIM
+ ;
+
+ParameterList
+ : Parameter
+ | ParameterList COMMA Parameter
+ ;
+
+Parameter
+ : TypeSpecifier DeclaratorName
+ | FINAL TypeSpecifier DeclaratorName
+ ;
+
+DeclaratorName
+ : IDENTIFIER
+ | DeclaratorName OP_DIM
+ ;
+
+Throws
+ : THROWS ClassNameList
+ ;
+
+MethodBody
+ : Block
+ | SEMICOLON
+ ;
+
+ConstructorDeclaration
+ : Modifiers ConstructorDeclarator Throws Block
+ | Modifiers ConstructorDeclarator Block
+ | ConstructorDeclarator Throws Block
+ | ConstructorDeclarator Block
+ | JAVADOC Modifiers ConstructorDeclarator Throws Block
+ | JAVADOC Modifiers ConstructorDeclarator Block
+ | JAVADOC ConstructorDeclarator Throws Block
+ | JAVADOC ConstructorDeclarator Block
+ ;
+
+ConstructorDeclarator
+ : IDENTIFIER DOPEN ParameterList DCLOSE
+ | IDENTIFIER DOPEN DCLOSE
+ ;
+
+StaticInitializer
+ : STATIC Block
+ | JAVADOC STATIC Block
+ ;
+
+NonStaticInitializer
+ : Block
+ ;
+
+Extends
+ : EXTENDS TypeName
+ | Extends COMMA TypeName
+ ;
+
+Block
+ : COPEN LocalVariableDeclarationsAndStatements CCLOSE
+ | COPEN CCLOSE
+ ;
+
+LocalVariableDeclarationsAndStatements
+ : LocalVariableDeclarationOrStatement
+ | LocalVariableDeclarationsAndStatements LocalVariableDeclarationOrStatement
+ ;
+
+LocalVariableDeclarationOrStatement
+ : LocalVariableDeclarationStatement
+ | Statement
+ ;
+
+LocalVariableDeclarationStatement
+ : TypeSpecifier VariableDeclarators SEMICOLON
+ | FINAL TypeSpecifier VariableDeclarators SEMICOLON
+ ;
+
+Statement
+ : EmptyStatement
+ | LabelStatement
+ | ExpressionStatement SEMICOLON
+ | SelectionStatement
+ | IterationStatement
+ | JumpStatement
+ | GuardingStatement
+ | Block
+ ;
+
+EmptyStatement
+ : SEMICOLON
+ ;
+
+LabelStatement
+ : IDENTIFIER COLON
+ | CASE ConstantExpression COLON
+ | DEFAULT COLON
+ ;
+
+ExpressionStatement
+ : Expression
+ ;
+
+SelectionStatement
+ : IF DOPEN Expression DCLOSE Statement %prec ELSE
+ | IF DOPEN Expression DCLOSE Statement ELSE Statement %prec ELSE
+ | SWITCH DOPEN Expression DCLOSE Block
+ ;
+
+IterationStatement
+ : WHILE DOPEN Expression DCLOSE Statement
+ | DO Statement WHILE DOPEN Expression DCLOSE SEMICOLON
+ | FOR DOPEN ForInit ForExpr ForIncr DCLOSE Statement
+ | FOR DOPEN ForInit ForExpr DCLOSE Statement
+ ;
+
+ForInit
+ : ExpressionStatements SEMICOLON
+ | LocalVariableDeclarationStatement
+ | SEMICOLON
+ ;
+
+ForExpr
+ : Expression SEMICOLON
+ | SEMICOLON
+ ;
+
+ForIncr
+ : ExpressionStatements
+ ;
+
+ExpressionStatements
+ : ExpressionStatement
+ | ExpressionStatements COMMA ExpressionStatement
+ ;
+
+JumpStatement
+ : BREAK IDENTIFIER SEMICOLON
+ | BREAK SEMICOLON
+ | CONTINUE IDENTIFIER SEMICOLON
+ | CONTINUE SEMICOLON
+ | RETURN Expression SEMICOLON
+ | RETURN SEMICOLON
+ | THROW Expression SEMICOLON
+ ;
+
+GuardingStatement
+ : SYNCHRONIZED DOPEN Expression DCLOSE Statement
+ | TRY Block Finally
+ | TRY Block Catches
+ | TRY Block Catches Finally
+ ;
+
+Catches
+ : Catch
+ | Catches Catch
+ ;
+
+Catch
+ : CatchHeader Block
+ ;
+
+CatchHeader
+ : CATCH DOPEN TypeSpecifier IDENTIFIER DCLOSE
+ | CATCH DOPEN TypeSpecifier DCLOSE
+ ;
+
+Finally
+ : FINALLY Block
+ ;
+
+PrimaryExpression
+ : QualifiedName %prec DOPEN
+ | NotJustName
+ ;
+
+NotJustName
+ : SpecialName
+ | NewAllocationExpression
+ | ComplexPrimary
+ ;
+
+ComplexPrimary
+ : DOPEN Expression DCLOSE
+ | ComplexPrimaryNoParenthesis
+ ;
+
+ComplexPrimaryNoParenthesis
+ : LITERAL
+ | BOOLLIT
+ | ArrayAccess
+ | FieldAccess
+ | MethodCall
+ ;
+
+ArrayAccess
+ : QualifiedName BOPEN Expression BCLOSE
+ | ComplexPrimary BOPEN Expression BCLOSE
+ ;
+
+FieldAccess
+ : NotJustName DOT IDENTIFIER
+ | RealPostfixExpression DOT IDENTIFIER
+ | QualifiedName DOT THIS
+ | QualifiedName DOT CLASS
+ | PrimitiveType DOT CLASS
+ ;
+
+MethodCall
+ : MethodAccess DOPEN ArgumentList DCLOSE
+ | MethodAccess DOPEN DCLOSE
+ ;
+
+MethodAccess
+ : ComplexPrimaryNoParenthesis
+ | SpecialName
+ | QualifiedName
+ ;
+
+SpecialName
+ : THIS
+ | SUPER
+ | NULL
+ ;
+
+ArgumentList
+ : Expression
+ | ArgumentList COMMA Expression
+ ;
+
+NewAllocationExpression
+ : PlainNewAllocationExpression
+ | QualifiedName DOT PlainNewAllocationExpression
+ ;
+
+PlainNewAllocationExpression
+ : ArrayAllocationExpression
+ | ClassAllocationExpression
+ | ArrayAllocationExpression COPEN CCLOSE
+ | ClassAllocationExpression COPEN CCLOSE
+ | ArrayAllocationExpression COPEN ArrayInitializers CCLOSE
+ | ClassAllocationExpression COPEN FieldDeclarations CCLOSE
+ ;
+
+ClassAllocationExpression
+ : NEW TypeName DOPEN ArgumentList DCLOSE
+ | NEW TypeName DOPEN DCLOSE
+ ;
+
+ArrayAllocationExpression
+ : NEW TypeName DimExprs Dims
+ | NEW TypeName DimExprs
+ | NEW TypeName Dims
+ ;
+
+DimExprs
+ : DimExpr
+ | DimExprs DimExpr
+ ;
+
+DimExpr
+ : BOPEN Expression BCLOSE
+ ;
+
+Dims
+ : OP_DIM
+ | Dims OP_DIM
+ ;
+
+PostfixExpression
+ : PrimaryExpression
+ | RealPostfixExpression
+ ;
+
+RealPostfixExpression
+ : PostfixExpression OP_INC
+ | PostfixExpression OP_DEC
+ ;
+
+UnaryExpression
+ : OP_INC UnaryExpression
+ | OP_DEC UnaryExpression
+ | ArithmeticUnaryOperator CastExpression
+ | LogicalUnaryExpression
+ ;
+
+LogicalUnaryExpression
+ : PostfixExpression
+ | LogicalUnaryOperator UnaryExpression
+ ;
+
+LogicalUnaryOperator
+ : TILDE
+ | NOT
+ ;
+
+ArithmeticUnaryOperator
+ : PLUS
+ | MINUS
+ ;
+
+CastExpression
+ : UnaryExpression
+ | DOPEN PrimitiveTypeExpression DCLOSE CastExpression
+ | DOPEN ClassTypeExpression DCLOSE CastExpression
+ | DOPEN Expression DCLOSE LogicalUnaryExpression
+ ;
+
+PrimitiveTypeExpression
+ : PrimitiveType
+ | PrimitiveType Dims
+ ;
+
+ClassTypeExpression
+ : QualifiedName Dims
+ ;
+
+MultiplicativeExpression
+ : CastExpression
+ | MultiplicativeExpression MULT CastExpression
+ | MultiplicativeExpression DIV CastExpression
+ | MultiplicativeExpression MOD CastExpression
+ ;
+
+AdditiveExpression
+ : MultiplicativeExpression
+ | AdditiveExpression PLUS MultiplicativeExpression
+ | AdditiveExpression MINUS MultiplicativeExpression
+ ;
+
+ShiftExpression
+ : AdditiveExpression
+ | ShiftExpression OP_SHL AdditiveExpression
+ | ShiftExpression OP_SHR AdditiveExpression
+ | ShiftExpression OP_SHRR AdditiveExpression
+ ;
+
+RelationalExpression
+ : ShiftExpression
+ | RelationalExpression LT ShiftExpression
+ | RelationalExpression GT ShiftExpression
+ | RelationalExpression OP_LE ShiftExpression
+ | RelationalExpression OP_GE ShiftExpression
+ | RelationalExpression INSTANCEOF TypeSpecifier
+ ;
+
+EqualityExpression
+ : RelationalExpression
+ | EqualityExpression OP_EQ RelationalExpression
+ | EqualityExpression OP_NE RelationalExpression
+ ;
+
+AndExpression
+ : EqualityExpression
+ | AndExpression AND EqualityExpression
+ ;
+
+ExclusiveOrExpression
+ : AndExpression
+ | ExclusiveOrExpression XOR AndExpression
+ ;
+
+InclusiveOrExpression
+ : ExclusiveOrExpression
+ | InclusiveOrExpression OR ExclusiveOrExpression
+ ;
+
+ConditionalAndExpression
+ : InclusiveOrExpression
+ | ConditionalAndExpression OP_LAND InclusiveOrExpression
+ ;
+
+ConditionalOrExpression
+ : ConditionalAndExpression
+ | ConditionalOrExpression OP_LOR ConditionalAndExpression
+ ;
+
+ConditionalExpression
+ : ConditionalOrExpression
+ | ConditionalOrExpression QM Expression COLON ConditionalExpression
+ ;
+
+AssignmentExpression
+ : ConditionalExpression
+ | UnaryExpression AssignmentOperator AssignmentExpression
+ ;
+
+AssignmentOperator
+ : EQ
+ | ASS_OP
+ ;
+
+Expression
+ : AssignmentExpression
+ ;
+
+ConstantExpression
+ : ConditionalExpression
+ ;
+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xgrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xgrm
new file mode 100644
index 0000000..17a6c8a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xgrm
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+<!--This file was generated! Don't edit!-->
+<priority>
+<terminal symbol="DOPEN"/>
+<terminal symbol="DCLOSE"/>
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+<terminal symbol="BOPEN"/>
+<terminal symbol="BCLOSE"/>
+<terminal symbol="SEMICOLON"/>
+<terminal symbol="COMMA"/>
+<terminal symbol="DOT"/>
+<terminal symbol="OP_EQ"/>
+<terminal symbol="OP_LE"/>
+<terminal symbol="OP_GE"/>
+<terminal symbol="OP_NE"/>
+<terminal symbol="OP_LOR"/>
+<terminal symbol="OP_LAND"/>
+<terminal symbol="OP_INC"/>
+<terminal symbol="OP_DEC"/>
+<terminal symbol="OP_SHR"/>
+<terminal symbol="OP_SHL"/>
+<terminal symbol="OP_SHRR"/>
+<terminal symbol="ASS_OP"/>
+<terminal symbol="EQ"/>
+<terminal symbol="GT"/>
+<terminal symbol="LT"/>
+<terminal symbol="NOT"/>
+<terminal symbol="TILDE"/>
+<terminal symbol="QM"/>
+<terminal symbol="COLON"/>
+<terminal symbol="PLUS"/>
+<terminal symbol="MINUS"/>
+<terminal symbol="MULT"/>
+<terminal symbol="DIV"/>
+<terminal symbol="AND"/>
+<terminal symbol="OR"/>
+<terminal symbol="XOR"/>
+<terminal symbol="MOD"/>
+<terminal symbol="BOOLLIT"/>
+<terminal symbol="ABSTRACT"/>
+<terminal symbol="DO"/>
+<terminal symbol="IMPLEMENTS"/>
+<terminal symbol="PACKAGE"/>
+<terminal symbol="THROW"/>
+<terminal symbol="BOOLEAN"/>
+<terminal symbol="DOUBLE"/>
+<terminal symbol="IMPORT"/>
+<terminal symbol="PRIVATE"/>
+<terminal symbol="THROWS"/>
+<terminal symbol="BREAK"/>
+<terminal symbol="ELSE"/>
+<terminal symbol="INNER"/>
+<terminal symbol="PROTECTED"/>
+<terminal symbol="TRANSIENT"/>
+<terminal symbol="BYTE"/>
+<terminal symbol="EXTENDS"/>
+<terminal symbol="INSTANCEOF"/>
+<terminal symbol="PUBLIC"/>
+<terminal symbol="TRY"/>
+<terminal symbol="CASE"/>
+<terminal symbol="FINAL"/>
+<terminal symbol="INT"/>
+<terminal symbol="REST"/>
+<terminal symbol="VAR"/>
+<terminal symbol="CAST"/>
+<terminal symbol="FINALLY"/>
+<terminal symbol="INTERFACE"/>
+<terminal symbol="RETURN"/>
+<terminal symbol="VOID"/>
+<terminal symbol="CATCH"/>
+<terminal symbol="FLOAT"/>
+<terminal symbol="LONG"/>
+<terminal symbol="SHORT"/>
+<terminal symbol="VOLATILE"/>
+<terminal symbol="CHAR"/>
+<terminal symbol="FOR"/>
+<terminal symbol="NATIVE"/>
+<terminal symbol="STATIC"/>
+<terminal symbol="WHILE"/>
+<terminal symbol="CLASS"/>
+<terminal symbol="FUTURE"/>
+<terminal symbol="NEW"/>
+<terminal symbol="SUPER"/>
+<terminal symbol="CONST"/>
+<terminal symbol="GENERIC"/>
+<terminal symbol="NULL"/>
+<terminal symbol="SWITCH"/>
+<terminal symbol="CONTINUE"/>
+<terminal symbol="GOTO"/>
+<terminal symbol="OPERATOR"/>
+<terminal symbol="SYNCHRONIZED"/>
+<terminal symbol="DEFAULT"/>
+<terminal symbol="IF"/>
+<terminal symbol="OUTER"/>
+<terminal symbol="THIS"/>
+<terminal symbol="LITERAL"/>
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="OP_DIM"/>
+<terminal symbol="SPACES"/>
+<terminal symbol="TAB"/>
+<terminal symbol="EOL"/>
+<terminal symbol="JAVADOC"/>
+<terminal symbol="MULTILINECOMMENT"/>
+<terminal symbol="SINGLELINECOMMENT"/>
+</priority>
+<production symbol="TypeSpecifier">
+<nonterminal symbol="TypeName"/>
+</production>
+<production symbol="TypeSpecifier">
+<nonterminal symbol="TypeName"/>
+<nonterminal symbol="Dims"/>
+</production>
+<production symbol="TypeName">
+<nonterminal symbol="PrimitiveType"/>
+</production>
+<production symbol="TypeName">
+<nonterminal symbol="QualifiedName"/>
+</production>
+<production symbol="ClassNameList">
+<nonterminal symbol="QualifiedName"/>
+</production>
+<production symbol="ClassNameList">
+<nonterminal symbol="ClassNameList"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="QualifiedName"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="BOOLEAN"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="CHAR"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="BYTE"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="SHORT"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="INT"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="LONG"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="FLOAT"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="DOUBLE"/>
+</production>
+<production symbol="PrimitiveType">
+<terminal symbol="VOID"/>
+</production>
+<production symbol="SemiColons">
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="SemiColons">
+<nonterminal symbol="SemiColons"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="CompilationUnit">
+<nonterminal symbol="ProgramFile"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="PackageStatement"/>
+<nonterminal symbol="ImportStatements"/>
+<nonterminal symbol="TypeDeclarations"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="PackageStatement"/>
+<nonterminal symbol="ImportStatements"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="PackageStatement"/>
+<nonterminal symbol="TypeDeclarations"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="ImportStatements"/>
+<nonterminal symbol="TypeDeclarations"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="PackageStatement"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="ImportStatements"/>
+</production>
+<production symbol="ProgramFile">
+<nonterminal symbol="TypeDeclarations"/>
+</production>
+<production symbol="PackageStatement">
+<terminal symbol="PACKAGE"/>
+<nonterminal symbol="QualifiedName"/>
+<nonterminal symbol="SemiColons"/>
+</production>
+<production symbol="TypeDeclarations">
+<nonterminal symbol="TypeDeclarationOptSemi"/>
+</production>
+<production symbol="TypeDeclarations">
+<nonterminal symbol="TypeDeclarations"/>
+<nonterminal symbol="TypeDeclarationOptSemi"/>
+</production>
+<production symbol="TypeDeclarationOptSemi">
+<nonterminal symbol="TypeDeclaration"/>
+</production>
+<production symbol="TypeDeclarationOptSemi">
+<nonterminal symbol="TypeDeclaration"/>
+<nonterminal symbol="SemiColons"/>
+</production>
+<production symbol="ImportStatements">
+<nonterminal symbol="ImportStatement"/>
+</production>
+<production symbol="ImportStatements">
+<nonterminal symbol="ImportStatements"/>
+<nonterminal symbol="ImportStatement"/>
+</production>
+<production symbol="ImportStatement">
+<terminal symbol="IMPORT"/>
+<nonterminal symbol="QualifiedName"/>
+<nonterminal symbol="SemiColons"/>
+</production>
+<production symbol="ImportStatement">
+<terminal symbol="IMPORT"/>
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="DOT"/>
+<terminal symbol="MULT"/>
+<nonterminal symbol="SemiColons"/>
+</production>
+<production symbol="QualifiedName">
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="QualifiedName">
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="DOT"/>
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="TypeDeclaration">
+<nonterminal symbol="ClassHeader"/>
+<terminal symbol="COPEN"/>
+<nonterminal symbol="FieldDeclarations"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="TypeDeclaration">
+<nonterminal symbol="ClassHeader"/>
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="TypeDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="ClassHeader"/>
+<terminal symbol="COPEN"/>
+<nonterminal symbol="FieldDeclarations"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="TypeDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="ClassHeader"/>
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Extends"/>
+<nonterminal symbol="Interfaces"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Extends"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Interfaces"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Extends"/>
+<nonterminal symbol="Interfaces"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Extends"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+<nonterminal symbol="Interfaces"/>
+</production>
+<production symbol="ClassHeader">
+<nonterminal symbol="ClassWord"/>
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="Modifiers">
+<nonterminal symbol="Modifier"/>
+</production>
+<production symbol="Modifiers">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="Modifier"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="ABSTRACT"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="FINAL"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="PUBLIC"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="PROTECTED"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="PRIVATE"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="STATIC"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="TRANSIENT"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="VOLATILE"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="NATIVE"/>
+</production>
+<production symbol="Modifier">
+<terminal symbol="SYNCHRONIZED"/>
+</production>
+<production symbol="ClassWord">
+<terminal symbol="CLASS"/>
+</production>
+<production symbol="ClassWord">
+<terminal symbol="INTERFACE"/>
+</production>
+<production symbol="Interfaces">
+<terminal symbol="IMPLEMENTS"/>
+<nonterminal symbol="ClassNameList"/>
+</production>
+<production symbol="FieldDeclarations">
+<nonterminal symbol="FieldDeclarationOptSemi"/>
+</production>
+<production symbol="FieldDeclarations">
+<nonterminal symbol="FieldDeclarations"/>
+<nonterminal symbol="FieldDeclarationOptSemi"/>
+</production>
+<production symbol="FieldDeclarationOptSemi">
+<nonterminal symbol="FieldDeclaration"/>
+</production>
+<production symbol="FieldDeclarationOptSemi">
+<nonterminal symbol="FieldDeclaration"/>
+<nonterminal symbol="SemiColons"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="FieldVariableDeclaration"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="MethodDeclaration"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="ConstructorDeclaration"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="StaticInitializer"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="NonStaticInitializer"/>
+</production>
+<production symbol="FieldDeclaration">
+<nonterminal symbol="TypeDeclaration"/>
+</production>
+<production symbol="FieldVariableDeclaration">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+</production>
+<production symbol="FieldVariableDeclaration">
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+</production>
+<production symbol="FieldVariableDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+</production>
+<production symbol="FieldVariableDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+</production>
+<production symbol="VariableDeclarators">
+<nonterminal symbol="VariableDeclarator"/>
+</production>
+<production symbol="VariableDeclarators">
+<nonterminal symbol="VariableDeclarators"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="VariableDeclarator"/>
+</production>
+<production symbol="VariableDeclarator">
+<nonterminal symbol="DeclaratorName"/>
+</production>
+<production symbol="VariableDeclarator">
+<nonterminal symbol="DeclaratorName"/>
+<terminal symbol="EQ"/>
+<nonterminal symbol="VariableInitializer"/>
+</production>
+<production symbol="VariableInitializer">
+<nonterminal symbol="Expression"/>
+</production>
+<production symbol="VariableInitializer">
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="VariableInitializer">
+<terminal symbol="COPEN"/>
+<nonterminal symbol="ArrayInitializers"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="ArrayInitializers">
+<nonterminal symbol="VariableInitializer"/>
+</production>
+<production symbol="ArrayInitializers">
+<nonterminal symbol="ArrayInitializers"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="VariableInitializer"/>
+</production>
+<production symbol="ArrayInitializers">
+<nonterminal symbol="ArrayInitializers"/>
+<terminal symbol="COMMA"/>
+</production>
+<production symbol="MethodDeclaration">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="MethodDeclarator"/>
+<nonterminal symbol="MethodBody"/>
+</production>
+<production symbol="MethodDeclarator">
+<nonterminal symbol="DeclaratorName"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ParameterList"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="MethodDeclarator">
+<nonterminal symbol="DeclaratorName"/>
+<terminal symbol="DOPEN"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="MethodDeclarator">
+<nonterminal symbol="MethodDeclarator"/>
+<terminal symbol="OP_DIM"/>
+</production>
+<production symbol="ParameterList">
+<nonterminal symbol="Parameter"/>
+</production>
+<production symbol="ParameterList">
+<nonterminal symbol="ParameterList"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="Parameter"/>
+</production>
+<production symbol="Parameter">
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="DeclaratorName"/>
+</production>
+<production symbol="Parameter">
+<terminal symbol="FINAL"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="DeclaratorName"/>
+</production>
+<production symbol="DeclaratorName">
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="DeclaratorName">
+<nonterminal symbol="DeclaratorName"/>
+<terminal symbol="OP_DIM"/>
+</production>
+<production symbol="Throws">
+<terminal symbol="THROWS"/>
+<nonterminal symbol="ClassNameList"/>
+</production>
+<production symbol="MethodBody">
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="MethodBody">
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="Modifiers"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Throws"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclaration">
+<terminal symbol="JAVADOC"/>
+<nonterminal symbol="ConstructorDeclarator"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="ConstructorDeclarator">
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ParameterList"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="ConstructorDeclarator">
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="DOPEN"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="StaticInitializer">
+<terminal symbol="STATIC"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="NonStaticInitializer">
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="Extends">
+<terminal symbol="EXTENDS"/>
+<nonterminal symbol="TypeName"/>
+</production>
+<production symbol="Extends">
+<nonterminal symbol="Extends"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="TypeName"/>
+</production>
+<production symbol="Block">
+<terminal symbol="COPEN"/>
+<nonterminal symbol="LocalVariableDeclarationsAndStatements"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="Block">
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="LocalVariableDeclarationsAndStatements">
+<nonterminal symbol="LocalVariableDeclarationOrStatement"/>
+</production>
+<production symbol="LocalVariableDeclarationsAndStatements">
+<nonterminal symbol="LocalVariableDeclarationsAndStatements"/>
+<nonterminal symbol="LocalVariableDeclarationOrStatement"/>
+</production>
+<production symbol="LocalVariableDeclarationOrStatement">
+<nonterminal symbol="LocalVariableDeclarationStatement"/>
+</production>
+<production symbol="LocalVariableDeclarationOrStatement">
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="LocalVariableDeclarationStatement">
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="LocalVariableDeclarationStatement">
+<terminal symbol="FINAL"/>
+<nonterminal symbol="TypeSpecifier"/>
+<nonterminal symbol="VariableDeclarators"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="EmptyStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="LabelStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="ExpressionStatement"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="SelectionStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="IterationStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="JumpStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="GuardingStatement"/>
+</production>
+<production symbol="Statement">
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="EmptyStatement">
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="LabelStatement">
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="COLON"/>
+</production>
+<production symbol="LabelStatement">
+<terminal symbol="CASE"/>
+<nonterminal symbol="ConstantExpression"/>
+<terminal symbol="COLON"/>
+</production>
+<production symbol="LabelStatement">
+<terminal symbol="DEFAULT"/>
+<terminal symbol="COLON"/>
+</production>
+<production symbol="ExpressionStatement">
+<nonterminal symbol="Expression"/>
+</production>
+<production symbol="SelectionStatement" precedence="ELSE">
+<terminal symbol="IF"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="SelectionStatement" precedence="ELSE">
+<terminal symbol="IF"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+<terminal symbol="ELSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="SelectionStatement">
+<terminal symbol="SWITCH"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="IterationStatement">
+<terminal symbol="WHILE"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="IterationStatement">
+<terminal symbol="DO"/>
+<nonterminal symbol="Statement"/>
+<terminal symbol="WHILE"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="IterationStatement">
+<terminal symbol="FOR"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ForInit"/>
+<nonterminal symbol="ForExpr"/>
+<nonterminal symbol="ForIncr"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="IterationStatement">
+<terminal symbol="FOR"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ForInit"/>
+<nonterminal symbol="ForExpr"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="ForInit">
+<nonterminal symbol="ExpressionStatements"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="ForInit">
+<nonterminal symbol="LocalVariableDeclarationStatement"/>
+</production>
+<production symbol="ForInit">
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="ForExpr">
+<nonterminal symbol="Expression"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="ForExpr">
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="ForIncr">
+<nonterminal symbol="ExpressionStatements"/>
+</production>
+<production symbol="ExpressionStatements">
+<nonterminal symbol="ExpressionStatement"/>
+</production>
+<production symbol="ExpressionStatements">
+<nonterminal symbol="ExpressionStatements"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="ExpressionStatement"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="BREAK"/>
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="BREAK"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="CONTINUE"/>
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="CONTINUE"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="RETURN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="RETURN"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="JumpStatement">
+<terminal symbol="THROW"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="SEMICOLON"/>
+</production>
+<production symbol="GuardingStatement">
+<terminal symbol="SYNCHRONIZED"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="Statement"/>
+</production>
+<production symbol="GuardingStatement">
+<terminal symbol="TRY"/>
+<nonterminal symbol="Block"/>
+<nonterminal symbol="Finally"/>
+</production>
+<production symbol="GuardingStatement">
+<terminal symbol="TRY"/>
+<nonterminal symbol="Block"/>
+<nonterminal symbol="Catches"/>
+</production>
+<production symbol="GuardingStatement">
+<terminal symbol="TRY"/>
+<nonterminal symbol="Block"/>
+<nonterminal symbol="Catches"/>
+<nonterminal symbol="Finally"/>
+</production>
+<production symbol="Catches">
+<nonterminal symbol="Catch"/>
+</production>
+<production symbol="Catches">
+<nonterminal symbol="Catches"/>
+<nonterminal symbol="Catch"/>
+</production>
+<production symbol="Catch">
+<nonterminal symbol="CatchHeader"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="CatchHeader">
+<terminal symbol="CATCH"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="TypeSpecifier"/>
+<terminal symbol="IDENTIFIER"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="CatchHeader">
+<terminal symbol="CATCH"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="TypeSpecifier"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="Finally">
+<terminal symbol="FINALLY"/>
+<nonterminal symbol="Block"/>
+</production>
+<production symbol="PrimaryExpression">
+<nonterminal symbol="QualifiedName"/>
+</production>
+<production symbol="PrimaryExpression">
+<nonterminal symbol="NotJustName"/>
+</production>
+<production symbol="NotJustName">
+<nonterminal symbol="SpecialName"/>
+</production>
+<production symbol="NotJustName">
+<nonterminal symbol="NewAllocationExpression"/>
+</production>
+<production symbol="NotJustName">
+<nonterminal symbol="ComplexPrimary"/>
+</production>
+<production symbol="ComplexPrimary">
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="ComplexPrimary">
+<nonterminal symbol="ComplexPrimaryNoParenthesis"/>
+</production>
+<production symbol="ComplexPrimaryNoParenthesis">
+<terminal symbol="LITERAL"/>
+</production>
+<production symbol="ComplexPrimaryNoParenthesis">
+<terminal symbol="BOOLLIT"/>
+</production>
+<production symbol="ComplexPrimaryNoParenthesis">
+<nonterminal symbol="ArrayAccess"/>
+</production>
+<production symbol="ComplexPrimaryNoParenthesis">
+<nonterminal symbol="FieldAccess"/>
+</production>
+<production symbol="ComplexPrimaryNoParenthesis">
+<nonterminal symbol="MethodCall"/>
+</production>
+<production symbol="ArrayAccess">
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="BOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="BCLOSE"/>
+</production>
+<production symbol="ArrayAccess">
+<nonterminal symbol="ComplexPrimary"/>
+<terminal symbol="BOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="BCLOSE"/>
+</production>
+<production symbol="FieldAccess">
+<nonterminal symbol="NotJustName"/>
+<terminal symbol="DOT"/>
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="FieldAccess">
+<nonterminal symbol="RealPostfixExpression"/>
+<terminal symbol="DOT"/>
+<terminal symbol="IDENTIFIER"/>
+</production>
+<production symbol="FieldAccess">
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="DOT"/>
+<terminal symbol="THIS"/>
+</production>
+<production symbol="FieldAccess">
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="DOT"/>
+<terminal symbol="CLASS"/>
+</production>
+<production symbol="FieldAccess">
+<nonterminal symbol="PrimitiveType"/>
+<terminal symbol="DOT"/>
+<terminal symbol="CLASS"/>
+</production>
+<production symbol="MethodCall">
+<nonterminal symbol="MethodAccess"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ArgumentList"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="MethodCall">
+<nonterminal symbol="MethodAccess"/>
+<terminal symbol="DOPEN"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="MethodAccess">
+<nonterminal symbol="ComplexPrimaryNoParenthesis"/>
+</production>
+<production symbol="MethodAccess">
+<nonterminal symbol="SpecialName"/>
+</production>
+<production symbol="MethodAccess">
+<nonterminal symbol="QualifiedName"/>
+</production>
+<production symbol="SpecialName">
+<terminal symbol="THIS"/>
+</production>
+<production symbol="SpecialName">
+<terminal symbol="SUPER"/>
+</production>
+<production symbol="SpecialName">
+<terminal symbol="NULL"/>
+</production>
+<production symbol="ArgumentList">
+<nonterminal symbol="Expression"/>
+</production>
+<production symbol="ArgumentList">
+<nonterminal symbol="ArgumentList"/>
+<terminal symbol="COMMA"/>
+<nonterminal symbol="Expression"/>
+</production>
+<production symbol="NewAllocationExpression">
+<nonterminal symbol="PlainNewAllocationExpression"/>
+</production>
+<production symbol="NewAllocationExpression">
+<nonterminal symbol="QualifiedName"/>
+<terminal symbol="DOT"/>
+<nonterminal symbol="PlainNewAllocationExpression"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ArrayAllocationExpression"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ClassAllocationExpression"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ArrayAllocationExpression"/>
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ClassAllocationExpression"/>
+<terminal symbol="COPEN"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ArrayAllocationExpression"/>
+<terminal symbol="COPEN"/>
+<nonterminal symbol="ArrayInitializers"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="PlainNewAllocationExpression">
+<nonterminal symbol="ClassAllocationExpression"/>
+<terminal symbol="COPEN"/>
+<nonterminal symbol="FieldDeclarations"/>
+<terminal symbol="CCLOSE"/>
+</production>
+<production symbol="ClassAllocationExpression">
+<terminal symbol="NEW"/>
+<nonterminal symbol="TypeName"/>
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ArgumentList"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="ClassAllocationExpression">
+<terminal symbol="NEW"/>
+<nonterminal symbol="TypeName"/>
+<terminal symbol="DOPEN"/>
+<terminal symbol="DCLOSE"/>
+</production>
+<production symbol="ArrayAllocationExpression">
+<terminal symbol="NEW"/>
+<nonterminal symbol="TypeName"/>
+<nonterminal symbol="DimExprs"/>
+<nonterminal symbol="Dims"/>
+</production>
+<production symbol="ArrayAllocationExpression">
+<terminal symbol="NEW"/>
+<nonterminal symbol="TypeName"/>
+<nonterminal symbol="DimExprs"/>
+</production>
+<production symbol="ArrayAllocationExpression">
+<terminal symbol="NEW"/>
+<nonterminal symbol="TypeName"/>
+<nonterminal symbol="Dims"/>
+</production>
+<production symbol="DimExprs">
+<nonterminal symbol="DimExpr"/>
+</production>
+<production symbol="DimExprs">
+<nonterminal symbol="DimExprs"/>
+<nonterminal symbol="DimExpr"/>
+</production>
+<production symbol="DimExpr">
+<terminal symbol="BOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="BCLOSE"/>
+</production>
+<production symbol="Dims">
+<terminal symbol="OP_DIM"/>
+</production>
+<production symbol="Dims">
+<nonterminal symbol="Dims"/>
+<terminal symbol="OP_DIM"/>
+</production>
+<production symbol="PostfixExpression">
+<nonterminal symbol="PrimaryExpression"/>
+</production>
+<production symbol="PostfixExpression">
+<nonterminal symbol="RealPostfixExpression"/>
+</production>
+<production symbol="RealPostfixExpression">
+<nonterminal symbol="PostfixExpression"/>
+<terminal symbol="OP_INC"/>
+</production>
+<production symbol="RealPostfixExpression">
+<nonterminal symbol="PostfixExpression"/>
+<terminal symbol="OP_DEC"/>
+</production>
+<production symbol="UnaryExpression">
+<terminal symbol="OP_INC"/>
+<nonterminal symbol="UnaryExpression"/>
+</production>
+<production symbol="UnaryExpression">
+<terminal symbol="OP_DEC"/>
+<nonterminal symbol="UnaryExpression"/>
+</production>
+<production symbol="UnaryExpression">
+<nonterminal symbol="ArithmeticUnaryOperator"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="UnaryExpression">
+<nonterminal symbol="LogicalUnaryExpression"/>
+</production>
+<production symbol="LogicalUnaryExpression">
+<nonterminal symbol="PostfixExpression"/>
+</production>
+<production symbol="LogicalUnaryExpression">
+<nonterminal symbol="LogicalUnaryOperator"/>
+<nonterminal symbol="UnaryExpression"/>
+</production>
+<production symbol="LogicalUnaryOperator">
+<terminal symbol="TILDE"/>
+</production>
+<production symbol="LogicalUnaryOperator">
+<terminal symbol="NOT"/>
+</production>
+<production symbol="ArithmeticUnaryOperator">
+<terminal symbol="PLUS"/>
+</production>
+<production symbol="ArithmeticUnaryOperator">
+<terminal symbol="MINUS"/>
+</production>
+<production symbol="CastExpression">
+<nonterminal symbol="UnaryExpression"/>
+</production>
+<production symbol="CastExpression">
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="PrimitiveTypeExpression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="CastExpression">
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="ClassTypeExpression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="CastExpression">
+<terminal symbol="DOPEN"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="DCLOSE"/>
+<nonterminal symbol="LogicalUnaryExpression"/>
+</production>
+<production symbol="PrimitiveTypeExpression">
+<nonterminal symbol="PrimitiveType"/>
+</production>
+<production symbol="PrimitiveTypeExpression">
+<nonterminal symbol="PrimitiveType"/>
+<nonterminal symbol="Dims"/>
+</production>
+<production symbol="ClassTypeExpression">
+<nonterminal symbol="QualifiedName"/>
+<nonterminal symbol="Dims"/>
+</production>
+<production symbol="MultiplicativeExpression">
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="MultiplicativeExpression">
+<nonterminal symbol="MultiplicativeExpression"/>
+<terminal symbol="MULT"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="MultiplicativeExpression">
+<nonterminal symbol="MultiplicativeExpression"/>
+<terminal symbol="DIV"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="MultiplicativeExpression">
+<nonterminal symbol="MultiplicativeExpression"/>
+<terminal symbol="MOD"/>
+<nonterminal symbol="CastExpression"/>
+</production>
+<production symbol="AdditiveExpression">
+<nonterminal symbol="MultiplicativeExpression"/>
+</production>
+<production symbol="AdditiveExpression">
+<nonterminal symbol="AdditiveExpression"/>
+<terminal symbol="PLUS"/>
+<nonterminal symbol="MultiplicativeExpression"/>
+</production>
+<production symbol="AdditiveExpression">
+<nonterminal symbol="AdditiveExpression"/>
+<terminal symbol="MINUS"/>
+<nonterminal symbol="MultiplicativeExpression"/>
+</production>
+<production symbol="ShiftExpression">
+<nonterminal symbol="AdditiveExpression"/>
+</production>
+<production symbol="ShiftExpression">
+<nonterminal symbol="ShiftExpression"/>
+<terminal symbol="OP_SHL"/>
+<nonterminal symbol="AdditiveExpression"/>
+</production>
+<production symbol="ShiftExpression">
+<nonterminal symbol="ShiftExpression"/>
+<terminal symbol="OP_SHR"/>
+<nonterminal symbol="AdditiveExpression"/>
+</production>
+<production symbol="ShiftExpression">
+<nonterminal symbol="ShiftExpression"/>
+<terminal symbol="OP_SHRR"/>
+<nonterminal symbol="AdditiveExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="ShiftExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="RelationalExpression"/>
+<terminal symbol="LT"/>
+<nonterminal symbol="ShiftExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="RelationalExpression"/>
+<terminal symbol="GT"/>
+<nonterminal symbol="ShiftExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="RelationalExpression"/>
+<terminal symbol="OP_LE"/>
+<nonterminal symbol="ShiftExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="RelationalExpression"/>
+<terminal symbol="OP_GE"/>
+<nonterminal symbol="ShiftExpression"/>
+</production>
+<production symbol="RelationalExpression">
+<nonterminal symbol="RelationalExpression"/>
+<terminal symbol="INSTANCEOF"/>
+<nonterminal symbol="TypeSpecifier"/>
+</production>
+<production symbol="EqualityExpression">
+<nonterminal symbol="RelationalExpression"/>
+</production>
+<production symbol="EqualityExpression">
+<nonterminal symbol="EqualityExpression"/>
+<terminal symbol="OP_EQ"/>
+<nonterminal symbol="RelationalExpression"/>
+</production>
+<production symbol="EqualityExpression">
+<nonterminal symbol="EqualityExpression"/>
+<terminal symbol="OP_NE"/>
+<nonterminal symbol="RelationalExpression"/>
+</production>
+<production symbol="AndExpression">
+<nonterminal symbol="EqualityExpression"/>
+</production>
+<production symbol="AndExpression">
+<nonterminal symbol="AndExpression"/>
+<terminal symbol="AND"/>
+<nonterminal symbol="EqualityExpression"/>
+</production>
+<production symbol="ExclusiveOrExpression">
+<nonterminal symbol="AndExpression"/>
+</production>
+<production symbol="ExclusiveOrExpression">
+<nonterminal symbol="ExclusiveOrExpression"/>
+<terminal symbol="XOR"/>
+<nonterminal symbol="AndExpression"/>
+</production>
+<production symbol="InclusiveOrExpression">
+<nonterminal symbol="ExclusiveOrExpression"/>
+</production>
+<production symbol="InclusiveOrExpression">
+<nonterminal symbol="InclusiveOrExpression"/>
+<terminal symbol="OR"/>
+<nonterminal symbol="ExclusiveOrExpression"/>
+</production>
+<production symbol="ConditionalAndExpression">
+<nonterminal symbol="InclusiveOrExpression"/>
+</production>
+<production symbol="ConditionalAndExpression">
+<nonterminal symbol="ConditionalAndExpression"/>
+<terminal symbol="OP_LAND"/>
+<nonterminal symbol="InclusiveOrExpression"/>
+</production>
+<production symbol="ConditionalOrExpression">
+<nonterminal symbol="ConditionalAndExpression"/>
+</production>
+<production symbol="ConditionalOrExpression">
+<nonterminal symbol="ConditionalOrExpression"/>
+<terminal symbol="OP_LOR"/>
+<nonterminal symbol="ConditionalAndExpression"/>
+</production>
+<production symbol="ConditionalExpression">
+<nonterminal symbol="ConditionalOrExpression"/>
+</production>
+<production symbol="ConditionalExpression">
+<nonterminal symbol="ConditionalOrExpression"/>
+<terminal symbol="QM"/>
+<nonterminal symbol="Expression"/>
+<terminal symbol="COLON"/>
+<nonterminal symbol="ConditionalExpression"/>
+</production>
+<production symbol="AssignmentExpression">
+<nonterminal symbol="ConditionalExpression"/>
+</production>
+<production symbol="AssignmentExpression">
+<nonterminal symbol="UnaryExpression"/>
+<nonterminal symbol="AssignmentOperator"/>
+<nonterminal symbol="AssignmentExpression"/>
+</production>
+<production symbol="AssignmentOperator">
+<terminal symbol="EQ"/>
+</production>
+<production symbol="AssignmentOperator">
+<terminal symbol="ASS_OP"/>
+</production>
+<production symbol="Expression">
+<nonterminal symbol="AssignmentExpression"/>
+</production>
+<production symbol="ConstantExpression">
+<nonterminal symbol="ConditionalExpression"/>
+</production>
+<start symbol="CompilationUnit"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xlex
new file mode 100644
index 0000000..0abc978
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/java.xlex
@@ -0,0 +1,1217 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+<lexeme symbol="DOPEN">
+<cstring content="("/>
+</lexeme>
+<lexeme symbol="DCLOSE">
+<cstring content=")"/>
+</lexeme>
+<lexeme symbol="COPEN">
+<cstring content="{"/>
+</lexeme>
+<lexeme symbol="CCLOSE">
+<cstring content="}"/>
+</lexeme>
+<lexeme symbol="BOPEN">
+<cstring content="["/>
+</lexeme>
+<lexeme symbol="BCLOSE">
+<cstring content="]"/>
+</lexeme>
+<lexeme symbol="SEMICOLON">
+<cstring content=";"/>
+</lexeme>
+<lexeme symbol="COMMA">
+<cstring content=","/>
+</lexeme>
+<lexeme symbol="DOT" assoc="right">
+<cstring content="."/>
+</lexeme>
+<lexeme symbol="OP_EQ">
+<concat>
+<cstring content="="/>
+<cstring content="="/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_LE">
+<concat>
+<cstring content="<"/>
+<cstring content="="/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_GE">
+<concat>
+<cstring content=">"/>
+<cstring content="="/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_NE">
+<concat>
+<cstring content="!"/>
+<cstring content="="/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_LOR">
+<concat>
+<cstring content="|"/>
+<cstring content="|"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_LAND">
+<concat>
+<cstring content="&"/>
+<cstring content="&"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_INC">
+<concat>
+<cstring content="+"/>
+<cstring content="+"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_DEC">
+<concat>
+<cstring content="-"/>
+<cstring content="-"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_SHR">
+<concat>
+<cstring content=">"/>
+<cstring content=">"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_SHL">
+<concat>
+<cstring content="<"/>
+<cstring content="<"/>
+</concat>
+</lexeme>
+<lexeme symbol="OP_SHRR">
+<concat>
+<cstring content=">"/>
+<cstring content=">"/>
+<cstring content=">"/>
+</concat>
+</lexeme>
+<lexeme symbol="ASS_OP">
+<alt>
+<concat>
+<cstring content="+"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="-"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="*"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="/"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="&"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="|"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="^"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="%"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content="<"/>
+<cstring content="<"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content=">"/>
+<cstring content=">"/>
+<cstring content="="/>
+</concat>
+<concat>
+<cstring content=">"/>
+<cstring content=">"/>
+<cstring content=">"/>
+<cstring content="="/>
+</concat>
+</alt>
+</lexeme>
+<lexeme symbol="EQ">
+<cstring content="="/>
+</lexeme>
+<lexeme symbol="GT">
+<cstring content=">"/>
+</lexeme>
+<lexeme symbol="LT">
+<cstring content="<"/>
+</lexeme>
+<lexeme symbol="NOT">
+<cstring content="!"/>
+</lexeme>
+<lexeme symbol="TILDE">
+<cstring content="~"/>
+</lexeme>
+<lexeme symbol="QM">
+<cstring content="?"/>
+</lexeme>
+<lexeme symbol="COLON">
+<cstring content=":"/>
+</lexeme>
+<lexeme symbol="PLUS">
+<cstring content="+"/>
+</lexeme>
+<lexeme symbol="MINUS">
+<cstring content="-"/>
+</lexeme>
+<lexeme symbol="MULT">
+<cstring content="*"/>
+</lexeme>
+<lexeme symbol="DIV">
+<cstring content="/"/>
+</lexeme>
+<lexeme symbol="AND">
+<cstring content="&"/>
+</lexeme>
+<lexeme symbol="OR">
+<cstring content="|"/>
+</lexeme>
+<lexeme symbol="XOR">
+<cstring content="^"/>
+</lexeme>
+<lexeme symbol="MOD">
+<cstring content="%"/>
+</lexeme>
+<lexeme symbol="BOOLLIT">
+<alt>
+<concat>
+<cstring content="t"/>
+<cstring content="r"/>
+<cstring content="u"/>
+<cstring content="e"/>
+</concat>
+<concat>
+<cstring content="f"/>
+<cstring content="a"/>
+<cstring content="l"/>
+<cstring content="s"/>
+<cstring content="e"/>
+</concat>
+</alt>
+</lexeme>
+<lexeme symbol="ABSTRACT">
+<concat>
+<cstring content="a"/>
+<cstring content="b"/>
+<cstring content="s"/>
+<cstring content="t"/>
+<cstring content="r"/>
+<cstring content="a"/>
+<cstring content="c"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="DO">
+<concat>
+<cstring content="d"/>
+<cstring content="o"/>
+</concat>
+</lexeme>
+<lexeme symbol="IMPLEMENTS">
+<concat>
+<cstring content="i"/>
+<cstring content="m"/>
+<cstring content="p"/>
+<cstring content="l"/>
+<cstring content="e"/>
+<cstring content="m"/>
+<cstring content="e"/>
+<cstring content="n"/>
+<cstring content="t"/>
+<cstring content="s"/>
+</concat>
+</lexeme>
+<lexeme symbol="PACKAGE">
+<concat>
+<cstring content="p"/>
+<cstring content="a"/>
+<cstring content="c"/>
+<cstring content="k"/>
+<cstring content="a"/>
+<cstring content="g"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="THROW">
+<concat>
+<cstring content="t"/>
+<cstring content="h"/>
+<cstring content="r"/>
+<cstring content="o"/>
+<cstring content="w"/>
+</concat>
+</lexeme>
+<lexeme symbol="BOOLEAN">
+<concat>
+<cstring content="b"/>
+<cstring content="o"/>
+<cstring content="o"/>
+<cstring content="l"/>
+<cstring content="e"/>
+<cstring content="a"/>
+<cstring content="n"/>
+</concat>
+</lexeme>
+<lexeme symbol="DOUBLE">
+<concat>
+<cstring content="d"/>
+<cstring content="o"/>
+<cstring content="u"/>
+<cstring content="b"/>
+<cstring content="l"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="IMPORT">
+<concat>
+<cstring content="i"/>
+<cstring content="m"/>
+<cstring content="p"/>
+<cstring content="o"/>
+<cstring content="r"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="PRIVATE">
+<concat>
+<cstring content="p"/>
+<cstring content="r"/>
+<cstring content="i"/>
+<cstring content="v"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="THROWS">
+<concat>
+<cstring content="t"/>
+<cstring content="h"/>
+<cstring content="r"/>
+<cstring content="o"/>
+<cstring content="w"/>
+<cstring content="s"/>
+</concat>
+</lexeme>
+<lexeme symbol="BREAK">
+<concat>
+<cstring content="b"/>
+<cstring content="r"/>
+<cstring content="e"/>
+<cstring content="a"/>
+<cstring content="k"/>
+</concat>
+</lexeme>
+<lexeme symbol="ELSE" assoc="right">
+<concat>
+<cstring content="e"/>
+<cstring content="l"/>
+<cstring content="s"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="INNER">
+<concat>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="n"/>
+<cstring content="e"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="PROTECTED">
+<concat>
+<cstring content="p"/>
+<cstring content="r"/>
+<cstring content="o"/>
+<cstring content="t"/>
+<cstring content="e"/>
+<cstring content="c"/>
+<cstring content="t"/>
+<cstring content="e"/>
+<cstring content="d"/>
+</concat>
+</lexeme>
+<lexeme symbol="TRANSIENT">
+<concat>
+<cstring content="t"/>
+<cstring content="r"/>
+<cstring content="a"/>
+<cstring content="n"/>
+<cstring content="s"/>
+<cstring content="i"/>
+<cstring content="e"/>
+<cstring content="n"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="BYTE">
+<concat>
+<cstring content="b"/>
+<cstring content="y"/>
+<cstring content="t"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="EXTENDS">
+<concat>
+<cstring content="e"/>
+<cstring content="x"/>
+<cstring content="t"/>
+<cstring content="e"/>
+<cstring content="n"/>
+<cstring content="d"/>
+<cstring content="s"/>
+</concat>
+</lexeme>
+<lexeme symbol="INSTANCEOF">
+<concat>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="s"/>
+<cstring content="t"/>
+<cstring content="a"/>
+<cstring content="n"/>
+<cstring content="c"/>
+<cstring content="e"/>
+<cstring content="o"/>
+<cstring content="f"/>
+</concat>
+</lexeme>
+<lexeme symbol="PUBLIC">
+<concat>
+<cstring content="p"/>
+<cstring content="u"/>
+<cstring content="b"/>
+<cstring content="l"/>
+<cstring content="i"/>
+<cstring content="c"/>
+</concat>
+</lexeme>
+<lexeme symbol="TRY">
+<concat>
+<cstring content="t"/>
+<cstring content="r"/>
+<cstring content="y"/>
+</concat>
+</lexeme>
+<lexeme symbol="CASE">
+<concat>
+<cstring content="c"/>
+<cstring content="a"/>
+<cstring content="s"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="FINAL">
+<concat>
+<cstring content="f"/>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="a"/>
+<cstring content="l"/>
+</concat>
+</lexeme>
+<lexeme symbol="INT">
+<concat>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="REST">
+<concat>
+<cstring content="r"/>
+<cstring content="e"/>
+<cstring content="s"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="VAR">
+<concat>
+<cstring content="v"/>
+<cstring content="a"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="CAST">
+<concat>
+<cstring content="c"/>
+<cstring content="a"/>
+<cstring content="s"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="FINALLY">
+<concat>
+<cstring content="f"/>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="a"/>
+<cstring content="l"/>
+<cstring content="l"/>
+<cstring content="y"/>
+</concat>
+</lexeme>
+<lexeme symbol="INTERFACE">
+<concat>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="t"/>
+<cstring content="e"/>
+<cstring content="r"/>
+<cstring content="f"/>
+<cstring content="a"/>
+<cstring content="c"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="RETURN">
+<concat>
+<cstring content="r"/>
+<cstring content="e"/>
+<cstring content="t"/>
+<cstring content="u"/>
+<cstring content="r"/>
+<cstring content="n"/>
+</concat>
+</lexeme>
+<lexeme symbol="VOID">
+<concat>
+<cstring content="v"/>
+<cstring content="o"/>
+<cstring content="i"/>
+<cstring content="d"/>
+</concat>
+</lexeme>
+<lexeme symbol="CATCH">
+<concat>
+<cstring content="c"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="c"/>
+<cstring content="h"/>
+</concat>
+</lexeme>
+<lexeme symbol="FLOAT">
+<concat>
+<cstring content="f"/>
+<cstring content="l"/>
+<cstring content="o"/>
+<cstring content="a"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="LONG">
+<concat>
+<cstring content="l"/>
+<cstring content="o"/>
+<cstring content="n"/>
+<cstring content="g"/>
+</concat>
+</lexeme>
+<lexeme symbol="SHORT">
+<concat>
+<cstring content="s"/>
+<cstring content="h"/>
+<cstring content="o"/>
+<cstring content="r"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="VOLATILE">
+<concat>
+<cstring content="v"/>
+<cstring content="o"/>
+<cstring content="l"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="i"/>
+<cstring content="l"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="CHAR">
+<concat>
+<cstring content="c"/>
+<cstring content="h"/>
+<cstring content="a"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="FOR">
+<concat>
+<cstring content="f"/>
+<cstring content="o"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="NATIVE">
+<concat>
+<cstring content="n"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="i"/>
+<cstring content="v"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="STATIC">
+<concat>
+<cstring content="s"/>
+<cstring content="t"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="i"/>
+<cstring content="c"/>
+</concat>
+</lexeme>
+<lexeme symbol="WHILE">
+<concat>
+<cstring content="w"/>
+<cstring content="h"/>
+<cstring content="i"/>
+<cstring content="l"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="CLASS">
+<concat>
+<cstring content="c"/>
+<cstring content="l"/>
+<cstring content="a"/>
+<cstring content="s"/>
+<cstring content="s"/>
+</concat>
+</lexeme>
+<lexeme symbol="FUTURE">
+<concat>
+<cstring content="f"/>
+<cstring content="u"/>
+<cstring content="t"/>
+<cstring content="u"/>
+<cstring content="r"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="NEW">
+<concat>
+<cstring content="n"/>
+<cstring content="e"/>
+<cstring content="w"/>
+</concat>
+</lexeme>
+<lexeme symbol="SUPER">
+<concat>
+<cstring content="s"/>
+<cstring content="u"/>
+<cstring content="p"/>
+<cstring content="e"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="CONST">
+<concat>
+<cstring content="c"/>
+<cstring content="o"/>
+<cstring content="n"/>
+<cstring content="s"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="GENERIC">
+<concat>
+<cstring content="g"/>
+<cstring content="e"/>
+<cstring content="n"/>
+<cstring content="e"/>
+<cstring content="r"/>
+<cstring content="i"/>
+<cstring content="c"/>
+</concat>
+</lexeme>
+<lexeme symbol="NULL">
+<concat>
+<cstring content="n"/>
+<cstring content="u"/>
+<cstring content="l"/>
+<cstring content="l"/>
+</concat>
+</lexeme>
+<lexeme symbol="SWITCH">
+<concat>
+<cstring content="s"/>
+<cstring content="w"/>
+<cstring content="i"/>
+<cstring content="t"/>
+<cstring content="c"/>
+<cstring content="h"/>
+</concat>
+</lexeme>
+<lexeme symbol="CONTINUE">
+<concat>
+<cstring content="c"/>
+<cstring content="o"/>
+<cstring content="n"/>
+<cstring content="t"/>
+<cstring content="i"/>
+<cstring content="n"/>
+<cstring content="u"/>
+<cstring content="e"/>
+</concat>
+</lexeme>
+<lexeme symbol="GOTO">
+<concat>
+<cstring content="g"/>
+<cstring content="o"/>
+<cstring content="t"/>
+<cstring content="o"/>
+</concat>
+</lexeme>
+<lexeme symbol="OPERATOR">
+<concat>
+<cstring content="o"/>
+<cstring content="p"/>
+<cstring content="e"/>
+<cstring content="r"/>
+<cstring content="a"/>
+<cstring content="t"/>
+<cstring content="o"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="SYNCHRONIZED">
+<concat>
+<cstring content="s"/>
+<cstring content="y"/>
+<cstring content="n"/>
+<cstring content="c"/>
+<cstring content="h"/>
+<cstring content="r"/>
+<cstring content="o"/>
+<cstring content="n"/>
+<cstring content="i"/>
+<cstring content="z"/>
+<cstring content="e"/>
+<cstring content="d"/>
+</concat>
+</lexeme>
+<lexeme symbol="DEFAULT">
+<concat>
+<cstring content="d"/>
+<cstring content="e"/>
+<cstring content="f"/>
+<cstring content="a"/>
+<cstring content="u"/>
+<cstring content="l"/>
+<cstring content="t"/>
+</concat>
+</lexeme>
+<lexeme symbol="IF">
+<concat>
+<cstring content="i"/>
+<cstring content="f"/>
+</concat>
+</lexeme>
+<lexeme symbol="OUTER">
+<concat>
+<cstring content="o"/>
+<cstring content="u"/>
+<cstring content="t"/>
+<cstring content="e"/>
+<cstring content="r"/>
+</concat>
+</lexeme>
+<lexeme symbol="THIS">
+<concat>
+<cstring content="t"/>
+<cstring content="h"/>
+<cstring content="i"/>
+<cstring content="s"/>
+</concat>
+</lexeme>
+<lexeme symbol="LITERAL">
+<alt>
+<alt>
+<alt>
+<concat>
+<cclass>
+<cinterval min="1" max="9"/>
+</cclass>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="l"/>
+<cstring content="L"/>
+</alt>
+</concat>
+</concat>
+<concat>
+<cstring content="0"/>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="l"/>
+<cstring content="L"/>
+</alt>
+</concat>
+</concat>
+<concat>
+<cstring content="0"/>
+<alt>
+<cstring content="x"/>
+<cstring content="X"/>
+</alt>
+<cclass>
+<cinterval min="0" max="9"/>
+<cinterval min="a" max="f"/>
+<cinterval min="A" max="F"/>
+</cclass>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="0" max="9"/>
+<cinterval min="a" max="f"/>
+<cinterval min="A" max="F"/>
+</cclass>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="l"/>
+<cstring content="L"/>
+</alt>
+</concat>
+</concat>
+</alt>
+<alt>
+<concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<cstring content="."/>
+<concat maxOccurs="1" minOccurs="0">
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<alt>
+<cstring content="e"/>
+<cstring content="E"/>
+</alt>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="+"/>
+<cstring content="-"/>
+</alt>
+</concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+</concat>
+</concat>
+</concat>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="f"/>
+<cstring content="F"/>
+<cstring content="d"/>
+<cstring content="D"/>
+</alt>
+</concat>
+</concat>
+<concat>
+<cstring content="."/>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<alt>
+<cstring content="e"/>
+<cstring content="E"/>
+</alt>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="+"/>
+<cstring content="-"/>
+</alt>
+</concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+</concat>
+</concat>
+</concat>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="f"/>
+<cstring content="F"/>
+<cstring content="d"/>
+<cstring content="D"/>
+</alt>
+</concat>
+</concat>
+<concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<concat>
+<alt>
+<cstring content="e"/>
+<cstring content="E"/>
+</alt>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="+"/>
+<cstring content="-"/>
+</alt>
+</concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+</concat>
+</concat>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<alt>
+<cstring content="f"/>
+<cstring content="F"/>
+<cstring content="d"/>
+<cstring content="D"/>
+</alt>
+</concat>
+</concat>
+<concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<alt>
+<cstring content="f"/>
+<cstring content="F"/>
+<cstring content="d"/>
+<cstring content="D"/>
+</alt>
+</concat>
+</alt>
+</alt>
+<concat>
+<cstring content="'"/>
+<alt>
+<concat>
+<cclass>
+<cset content="\"/>
+</cclass>
+<cclass>
+<cset content="r"/>
+<cset content="n"/>
+<cset content="b"/>
+<cset content="f"/>
+<cset content="t"/>
+<cset content="\"/>
+<cset content="'"/>
+<cset content="""/>
+</cclass>
+</concat>
+<alt>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="3"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+</alt>
+<cclass exclusive="true">
+<cset content="\"/>
+<cset content="'"/>
+</cclass>
+</alt>
+<cstring content="'"/>
+</concat>
+<concat>
+<cstring content="""/>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<concat>
+<cclass>
+<cset content="\"/>
+</cclass>
+<cclass>
+<cset content="r"/>
+<cset content="n"/>
+<cset content="b"/>
+<cset content="f"/>
+<cset content="t"/>
+<cset content="\"/>
+<cset content="'"/>
+<cset content="""/>
+</cclass>
+</concat>
+<alt>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+<concat>
+<cstring content="\"/>
+<cclass>
+<cinterval min="0" max="3"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+<cclass>
+<cinterval min="0" max="7"/>
+</cclass>
+</concat>
+</alt>
+<cclass exclusive="true">
+<cset content="\"/>
+<cset content="""/>
+</cclass>
+</alt>
+</concat>
+<cstring content="""/>
+</concat>
+</alt>
+</lexeme>
+<lexeme symbol="IDENTIFIER">
+<concat>
+<alt>
+<cclass>
+<cinterval min="a" max="z"/>
+<cinterval min="A" max="Z"/>
+<cset content="_"/>
+</cclass>
+<cclass>
+<cset content="1"/>
+<cset content="b"/>
+</cclass>
+</alt>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<alt>
+<cclass>
+<cinterval min="a" max="z"/>
+<cinterval min="A" max="Z"/>
+<cset content="_"/>
+</cclass>
+<cclass>
+<cset content="1"/>
+<cset content="b"/>
+</cclass>
+</alt>
+<cclass>
+<cinterval min="0" max="9"/>
+</cclass>
+</alt>
+</concat>
+</concat>
+</lexeme>
+<lexeme symbol="OP_DIM">
+<concat>
+<cstring content="["/>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<cclass>
+<cset code="13"/>
+<cset code="10"/>
+<cset code="9"/>
+<cset content=" "/>
+</cclass>
+<alt>
+<concat>
+<cstring content="/"/>
+<cstring content="*"/>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<cclass exclusive="true">
+<cset content="*"/>
+</cclass>
+<concat>
+<cstring content="*"/>
+<cclass exclusive="true">
+<cset content="/"/>
+</cclass>
+</concat>
+</alt>
+</concat>
+<cstring content="*"/>
+<cstring content="/"/>
+</concat>
+<concat>
+<cstring content="/"/>
+<cstring content="/"/>
+<concat maxOccurs="*" minOccurs="0">
+<cclass exclusive="true">
+<cset code="10"/>
+<cset code="13"/>
+</cclass>
+</concat>
+</concat>
+</alt>
+</alt>
+</concat>
+<cstring content="]"/>
+</concat>
+</lexeme>
+<lexeme symbol="SPACES">
+<concat maxOccurs="*" minOccurs="1">
+<cstring content=" "/>
+</concat>
+</lexeme>
+<lexeme symbol="TAB">
+<cstring code="9"/>
+</lexeme>
+<lexeme symbol="EOL">
+<alt>
+<concat>
+<cstring code="13"/>
+<concat maxOccurs="1" minOccurs="0">
+<cstring code="10"/>
+</concat>
+</concat>
+<cstring code="10"/>
+</alt>
+</lexeme>
+<lexeme symbol="JAVADOC">
+<concat>
+<cstring content="/"/>
+<cstring content="*"/>
+<cstring content="*"/>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<cclass exclusive="true">
+<cset content="*"/>
+</cclass>
+<concat>
+<cclass>
+<cset content="*"/>
+</cclass>
+<cclass exclusive="true">
+<cset content="/"/>
+</cclass>
+</concat>
+</alt>
+</concat>
+<cstring content="*"/>
+<cstring content="/"/>
+</concat>
+</lexeme>
+<lexeme symbol="MULTILINECOMMENT">
+<concat>
+<cstring content="/"/>
+<cstring content="*"/>
+<concat maxOccurs="*" minOccurs="0">
+<alt>
+<cclass exclusive="true">
+<cset content="*"/>
+</cclass>
+<concat>
+<cstring content="*"/>
+<cclass exclusive="true">
+<cset content="/"/>
+</cclass>
+</concat>
+</alt>
+</concat>
+<cstring content="*"/>
+<cstring content="/"/>
+</concat>
+</lexeme>
+<lexeme symbol="SINGLELINECOMMENT">
+<concat>
+<cstring content="/"/>
+<cstring content="/"/>
+<concat maxOccurs="*" minOccurs="0">
+<cclass exclusive="true">
+<cset code="10"/>
+<cset code="13"/>
+</cclass>
+</concat>
+</concat>
+</lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.grm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.grm
new file mode 100644
index 0000000..c77e126
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.grm
@@ -0,0 +1,36 @@
+%ignore "\*";
+//%token DOT "\.";
+%token TEXT "[^\ \t\*\r\n@\<\>] ([^\*\r\n@\<\>]* [^\ \*\r\n@\<\>])?";
+%token TAG "\< (/?) [A-Za-z][A-Za-z0-9]*
+ ([\ \t\r\n]+ [A-Za-z][A-Za-z0-9]*=\"[^\"]*\")*
+ [\ \t\r\n]* (/?) \>";
+%token PROPERTYNAME "@[A-Za-z][A-Za-z0-9]*";
+%ignore "(\ )+";
+%ignore "\t";
+%ignore "\r(\n)?|\n";
+
+%start JavaDoc;
+
+%%
+
+JavaDoc
+ : Description Properties
+ | Description
+ ;
+
+Description
+ : Description TEXT
+ | Description TAG
+ | TEXT
+ | TAG
+ ;
+
+Properties
+ : Properties Property
+ | Property
+ ;
+
+Property
+ : PROPERTYNAME Description
+ | PROPERTYNAME
+ ;
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xgrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xgrm
new file mode 100644
index 0000000..6f1e977
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xgrm
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+<priority>
+<terminal symbol="ASTERISK"/>
+<terminal symbol="TEXT"/>
+<terminal symbol="TAG"/>
+<terminal symbol="PROPERTYNAME"/>
+<terminal symbol="SPACES"/>
+<terminal symbol="TAB"/>
+<terminal symbol="EOL"/>
+</priority>
+<production symbol="JavaDoc">
+<nonterminal symbol="Description"/>
+<nonterminal symbol="Properties"/>
+</production>
+<production symbol="JavaDoc">
+<nonterminal symbol="Description"/>
+</production>
+<production symbol="Description">
+<nonterminal symbol="Description"/>
+<terminal symbol="TEXT"/>
+</production>
+<production symbol="Description">
+<nonterminal symbol="Description"/>
+<terminal symbol="TAG"/>
+</production>
+<production symbol="Description">
+<terminal symbol="TEXT"/>
+</production>
+<production symbol="Description">
+<terminal symbol="TAG"/>
+</production>
+<production symbol="Properties">
+<nonterminal symbol="Properties"/>
+<nonterminal symbol="Property"/>
+</production>
+<production symbol="Properties">
+<nonterminal symbol="Property"/>
+</production>
+<production symbol="Property">
+<terminal symbol="PROPERTYNAME"/>
+<nonterminal symbol="Description"/>
+</production>
+<production symbol="Property">
+<terminal symbol="PROPERTYNAME"/>
+</production>
+<start symbol="JavaDoc"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xlex
new file mode 100644
index 0000000..6ae845a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/javadoc.xlex
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+<lexeme symbol="ASTERISK">
+<cstring content="*"/>
+</lexeme>
+<lexeme symbol="TEXT">
+<concat>
+<cclass exclusive="true">
+<cset content=" "/>
+<cset code="9"/>
+<cset content="*"/>
+<cset code="13"/>
+<cset code="10"/>
+<cset content="@"/>
+<cset content="<"/>
+<cset content=">"/>
+</cclass>
+<concat maxOccurs="1" minOccurs="0">
+<concat>
+<concat maxOccurs="*" minOccurs="0">
+<cclass exclusive="true">
+<cset content="*"/>
+<cset code="13"/>
+<cset code="10"/>
+<cset content="@"/>
+<cset content="<"/>
+<cset content=">"/>
+</cclass>
+</concat>
+<cclass exclusive="true">
+<cset content=" "/>
+<cset content="*"/>
+<cset code="13"/>
+<cset code="10"/>
+<cset content="@"/>
+<cset content="<"/>
+<cset content=">"/>
+</cclass>
+</concat>
+</concat>
+</concat>
+</lexeme>
+<lexeme symbol="TAG">
+<concat>
+<cstring content="<"/>
+<concat maxOccurs="1" minOccurs="0">
+<cstring content="/"/>
+</concat>
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+</cclass>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<concat maxOccurs="*" minOccurs="0">
+<concat>
+<concat maxOccurs="*" minOccurs="1">
+<cclass>
+<cset content=" "/>
+<cset code="9"/>
+<cset code="13"/>
+<cset code="10"/>
+</cclass>
+</concat>
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+</cclass>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+<cstring content="="/>
+<cstring content="""/>
+<concat maxOccurs="*" minOccurs="0">
+<cclass exclusive="true">
+<cset content="""/>
+</cclass>
+</concat>
+<cstring content="""/>
+</concat>
+</concat>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cset content=" "/>
+<cset code="9"/>
+<cset code="13"/>
+<cset code="10"/>
+</cclass>
+</concat>
+<concat maxOccurs="1" minOccurs="0">
+<cstring content="/"/>
+</concat>
+<cstring content=">"/>
+</concat>
+</lexeme>
+<lexeme symbol="PROPERTYNAME">
+<concat>
+<cstring content="@"/>
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+</cclass>
+<concat maxOccurs="*" minOccurs="0">
+<cclass>
+<cinterval min="A" max="Z"/>
+<cinterval min="a" max="z"/>
+<cinterval min="0" max="9"/>
+</cclass>
+</concat>
+</concat>
+</lexeme>
+<lexeme symbol="SPACES">
+<concat maxOccurs="*" minOccurs="1">
+<cstring content=" "/>
+</concat>
+</lexeme>
+<lexeme symbol="TAB">
+<cstring code="9"/>
+</lexeme>
+<lexeme symbol="EOL">
+<alt>
+<concat>
+<cstring code="13"/>
+<concat maxOccurs="1" minOccurs="0">
+<cstring code="10"/>
+</concat>
+</concat>
+<cstring code="10"/>
+</alt>
+</lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/link.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/link.xlex
new file mode 100644
index 0000000..29876e6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/link.xlex
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <!-- (([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? -->
+ <lexeme symbol="link">
+ <concat>
+ <concat>
+ <cclass maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ </cclass>
+ <cstring content=":"/>
+ <cstring content="/"/>
+ </concat>
+
+ <concat minOccurs="0">
+ <cstring content="/"/>
+ <cclass minOccurs="0" maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:"/>
+ </cclass>
+ </concat>
+
+ <cclass minOccurs="0" maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:/"/>
+ </cclass>
+
+ <concat minOccurs="0">
+ <cstring content="?"/>
+ <cclass minOccurs="0" maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:/?"/>
+ </cclass>
+ </concat>
+
+ <concat minOccurs="0">
+ <cstring content="#"/>
+ <cclass minOccurs="0" maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:/?#"/>
+ </cclass>
+ </concat>
+ </concat>
+ </lexeme>
+
+ <lexeme symbol="email">
+ <concat>
+ <concat>
+ <group>
+ <cclass maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:"/>
+ </cclass>
+ </group>
+ <cstring content="@"/>
+ <group>
+ <cclass maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ <cinterval min="0" max="9"/>
+ <cset content="._-:"/>
+ </cclass>
+ </group>
+ </concat>
+ </concat>
+ </lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xgrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xgrm
new file mode 100644
index 0000000..f898fe6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xgrm
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+ <production symbol="E">
+ <nonterminal symbol="E"/><terminal symbol="plus"/><nonterminal symbol="T"/>
+ </production>
+
+ <production symbol="E">
+ <nonterminal symbol="T"/>
+ </production>
+
+ <production symbol="T">
+ <nonterminal symbol="T"/><terminal symbol="mult"/><nonterminal symbol="F"/>
+ </production>
+
+ <production symbol="T">
+ <nonterminal symbol="F"/>
+ </production>
+
+ <production symbol="F">
+ <terminal symbol="dopen"/><nonterminal symbol="E"/><terminal symbol="dclose"/>
+ </production>
+
+ <production symbol="F">
+ <terminal symbol="id"/>
+ </production>
+
+ <production symbol="F">
+ <terminal symbol="number"/>
+ </production>
+
+ <start symbol="E"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xlex
new file mode 100644
index 0000000..9fb6d66
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/mathexp.xlex
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <lexeme symbol="plus">
+ <cclass><cset content="+-"/></cclass>
+ </lexeme>
+
+ <lexeme symbol="mult">
+ <cclass><cset content="*/"/></cclass>
+ </lexeme>
+
+ <lexeme symbol="dopen">
+ <cstring content="("/>
+ </lexeme>
+
+ <lexeme symbol="dclose">
+ <cstring content=")"/>
+ </lexeme>
+
+ <lexeme symbol="id">
+ <concat>
+ <cclass><cinterval min="A" max="Z"/><cinterval min="a" max="z"/></cclass>
+ <cclass minOccurs="0" maxOccurs="*"><cinterval min="A" max="Z"/><cinterval min="a" max="z"/><cinterval min="0" max="9"/><cset content="_"/></cclass>
+ </concat>
+ </lexeme>
+
+ <lexeme symbol="number">
+ <alt>
+ <concat>
+ <cclass minOccurs="1" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ <concat minOccurs="0" maxOccurs="1">
+ <cstring content="."/>
+ <cclass minOccurs="0" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ </concat>
+ </concat>
+ <concat>
+ <cstring content="."/>
+ <cclass minOccurs="1" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ </concat>
+ </alt>
+ </lexeme>
+
+ <lexeme>
+ <cclass maxOccurs="*"><cset content=" 	 "/></cclass>
+ </lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/quote.grm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/quote.grm
new file mode 100644
index 0000000..15824e0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/quote.grm
@@ -0,0 +1,35 @@
+%ignore "^#(.*)";
+%token Comma "\,";
+%token Value "[^\n\r\,]+";
+%token Break "\r(\n?) | \n";
+
+%start document;
+
+%%
+
+// with optional last break
+document
+ : rows Break
+ | rows
+ | /* empty */
+ ;
+
+// each row seprated with one break
+// and optional last space
+rows
+ : rows Break row
+ | row
+ ;
+
+// values separated by spaces
+row
+ : row Comma column
+ | column
+ ;
+
+// allow empty columns
+column
+ : Value
+ | /* empty */
+ ;
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xgrm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xgrm
new file mode 100644
index 0000000..da02756
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xgrm
@@ -0,0 +1,191 @@
+<?xml version="1.0" standalone="no"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+ <priority>
+ <terminal symbol="plus"/>
+ </priority>
+
+ <associativity symbol="plus" type="right"/>
+
+ <production symbol="intervall">
+ <terminal symbol="character"/><terminal symbol="minus"/><terminal symbol="character"/>
+ </production>
+
+ <production symbol="intervall">
+ <terminal symbol="maskedcharacter"/><terminal symbol="minus"/><terminal symbol="character"/>
+ </production>
+
+ <production symbol="intervall">
+ <terminal symbol="character"/><terminal symbol="minus"/><terminal symbol="maskedcharacter"/>
+ </production>
+
+ <production symbol="intervall">
+ <terminal symbol="maskedcharacter"/><terminal symbol="minus"/><terminal symbol="maskedcharacter"/>
+ </production>
+
+ <production symbol="sequence">
+ <nonterminal symbol="sequence"/><nonterminal symbol="intervall"/>
+ </production>
+
+ <production symbol="sequence">
+ <nonterminal symbol="sequence"/><terminal symbol="character"/>
+ </production>
+
+ <production symbol="sequence">
+ <nonterminal symbol="sequence"/><terminal symbol="maskedcharacter"/>
+ </production>
+
+ <production symbol="sequence">
+ <nonterminal symbol="intervall"/>
+ </production>
+
+ <production symbol="sequence">
+ <terminal symbol="character"/>
+ </production>
+
+ <production symbol="sequence">
+ <terminal symbol="maskedcharacter"/>
+ </production>
+
+ <production symbol="string">
+ <nonterminal symbol="string"/><terminal symbol="character"/>
+ </production>
+
+<!-- <production symbol="string">
+ <nonterminal symbol="string"/><terminal symbol="maskedcharacter"/>
+ </production>-->
+
+ <production symbol="string">
+ <terminal symbol="character"/>
+ </production>
+
+<!-- <production symbol="string">
+ <terminal symbol="maskedcharacter"/>
+ </production>-->
+
+ <production symbol="characterclass">
+ <terminal symbol="ccbegin"/><nonterminal symbol="sequence"/><terminal symbol="ccend"/>
+ </production>
+
+ <production symbol="exclusivecharacterclass">
+ <terminal symbol="ccbegin"/><terminal symbol="hat"/><nonterminal symbol="sequence"/><terminal symbol="ccend"/>
+ </production>
+
+ <production symbol="regexdot">
+ <terminal symbol="regexdot"/>
+ </production>
+
+ <production symbol="regexbol">
+ <terminal symbol="hat"/>
+ </production>
+
+ <production symbol="regexeol">
+ <terminal symbol="dollar"/>
+ </production>
+
+ <production symbol="regexklammer">
+ <terminal symbol="dopen"/><nonterminal symbol="regexalternation"/><terminal symbol="dclose"/>
+ </production>
+
+ <production symbol="regexabref">
+ <terminal symbol="abopen"/><nonterminal symbol="string"/><terminal symbol="abclose"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="characterclass"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="exclusivecharacterclass"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="regexklammer"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="string"/>
+ </production>
+
+ <production symbol="regexterm">
+ <terminal symbol="maskedcharacter"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="regexdot"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="regexbol"/>
+ </production>
+
+ <production symbol="regexterm">
+ <nonterminal symbol="regexabref"/>
+ </production>
+
+ <production symbol="regexoptional">
+ <nonterminal symbol="regexterm"/><terminal symbol="questionmark"/>
+ </production>
+
+ <production symbol="regexstar">
+ <nonterminal symbol="regexterm"/><terminal symbol="mult"/>
+ </production>
+
+ <production symbol="regexplus">
+ <nonterminal symbol="regexterm"/><terminal symbol="plus"/>
+ </production>
+
+ <production symbol="regexmultiplicator">
+ <terminal symbol="copen"/><nonterminal symbol="string"/><terminal symbol="cclose"/>
+ </production>
+
+ <production symbol="regexmultiplicator">
+ <terminal symbol="copen"/><nonterminal symbol="string"/>
+ <terminal symbol="comma"/><nonterminal symbol="string"/><terminal symbol="cclose"/>
+ </production>
+
+ <production symbol="regexvar">
+ <nonterminal symbol="regexterm"/><nonterminal symbol="regexmultiplicator"/>
+ </production>
+
+ <production symbol="regexquantifier">
+ <nonterminal symbol="regexoptional"/>
+ </production>
+
+ <production symbol="regexquantifier">
+ <nonterminal symbol="regexstar"/>
+ </production>
+
+ <production symbol="regexquantifier">
+ <nonterminal symbol="regexplus"/>
+ </production>
+
+ <production symbol="regexquantifier" precedence="plus">
+ <nonterminal symbol="regexterm"/>
+ </production>
+
+ <production symbol="regexquantifier">
+ <nonterminal symbol="regexvar"/>
+ </production>
+
+ <production symbol="regexconcatenation">
+ <nonterminal symbol="regexconcatenation"/><nonterminal symbol="regexquantifier"/>
+ </production>
+
+ <production symbol="regexconcatenation">
+ <nonterminal symbol="regexquantifier"/>
+ </production>
+
+ <production symbol="regexalternation">
+ <nonterminal symbol="regexalternation"/><terminal symbol="alt"/><nonterminal symbol="regexconcatenation"/>
+ </production>
+
+ <production symbol="regexalternation">
+ <nonterminal symbol="regexconcatenation"/>
+ </production>
+
+ <production symbol="regexexpression">
+ <nonterminal symbol="regexalternation"/>
+ </production>
+
+ <start symbol="regexexpression"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xlex b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xlex
new file mode 100644
index 0000000..6a08337
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/regex.xlex
@@ -0,0 +1,100 @@
+<?xml version="1.0" standalone="no"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+
+ <lexeme symbol="alt">
+ <cstring content="|"/>
+ </lexeme>
+
+ <lexeme symbol="comma">
+ <cstring content=","/>
+ </lexeme>
+
+ <lexeme symbol="copen">
+ <cstring content="{"/>
+ </lexeme>
+
+ <lexeme symbol="cclose">
+ <cstring content="}"/>
+ </lexeme>
+
+ <lexeme symbol="abopen">
+ <cstring content="<"/>
+ </lexeme>
+
+ <lexeme symbol="abclose">
+ <cstring content=">"/>
+ </lexeme>
+
+ <lexeme symbol="character">
+ <cclass exclusive="true">
+ <cset content="\[]-  ()[]|+?*^$.<>""/>
+ </cclass>
+ </lexeme>
+
+ <lexeme symbol="maskedcharacter">
+ <alt>
+ <concat>
+ <cstring content="\"/>
+ <cclass exclusive="true">
+ <cset content="u"/>
+ </cclass>
+ </concat>
+ <concat>
+ <cstring content="\u"/>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ <cclass><cinterval min="0" max="9"/><cinterval min="a" max="f"/><cinterval min="A" max="F"/></cclass>
+ </concat>
+ </alt>
+ </lexeme>
+
+ <lexeme symbol="minus">
+ <cstring content="-"/>
+ </lexeme>
+
+ <lexeme symbol="hat">
+ <cstring content="^"/>
+ </lexeme>
+
+ <lexeme symbol="dollar">
+ <cstring content="$"/>
+ </lexeme>
+
+ <lexeme symbol="ccbegin">
+ <cstring content="["/>
+ </lexeme>
+
+ <lexeme symbol="ccend">
+ <cstring content="]"/>
+ </lexeme>
+
+ <lexeme symbol="regexdot">
+ <cstring content="."/>
+ </lexeme>
+
+ <lexeme symbol="dopen">
+ <cstring content="("/>
+ </lexeme>
+
+ <lexeme symbol="dclose">
+ <cstring content=")"/>
+ </lexeme>
+
+ <lexeme symbol="questionmark">
+ <cstring content="?"/>
+ </lexeme>
+
+ <lexeme symbol="mult">
+ <cstring content="*"/>
+ </lexeme>
+
+ <lexeme symbol="plus">
+ <cstring content="+"/>
+ </lexeme>
+
+ <lexeme>
+ <cclass maxOccurs="*"><cset content=" 	 "/></cclass>
+ </lexeme>
+
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/wiki.grm b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/wiki.grm
new file mode 100644
index 0000000..b03ae83
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/grammars/wiki.grm
@@ -0,0 +1,216 @@
+
+%token line "\-\-\-\- (\-*)";
+
+%token tabletitleitem "\|\|";
+%token tablecolumnitem "\|";
+
+%token titleitem "!!!";
+%token subtitleitem "!!";
+%token subsubtitleitem "!";
+
+%token emitem "''";
+
+%token codeopenitem "\{\{";
+%token codecloseitem "\}\}";
+
+%token strongitem "__";
+
+%token source "\{\{\{ (\}{0,2}[^\}])* \}\}\}";
+
+%token anchor "\[( [^\[\|\]]* \| )? # [^\[\|\]]* \]";
+
+%token link "\[( [^\[\|\]]* \| )? [^\[\|\]]* \]";
+
+%token text "([^\ \t\n\r\[\{\}\|\*\\\-_!#'] | _[^_\n\r] | \{[^\{\n\r] | \}[^\}\n\r] | '[^'\n\r]
+ | \[\[ | \\[^\\\n\r] | \-{1,3}[^\-\n\r]?)
+ ([^ \n\r\[\{\}\|\\\-_'] | _[^_\n\r] | \{[^\{\n\r] | \}[^\}\n\r] | '[^'\n\r]
+ | \[\[ | \\[^\\\n\r] | \-{1,3}[^\-\n\r]? | \|[^\|\ \t])*";
+
+%right softbreak "\r(\n?) | \n";
+
+%right break "\\\\";
+
+%right hardbreak "(\r(\n?) | \n) (\r(\n?) | \n)+";
+
+%token bulleteditem "\*+";
+
+%token numbered1item "#";
+%token numbered2item "##";
+%token numbered3item "###";
+
+%ignore "[\ \t]+";
+
+%start document;
+
+%%
+
+document
+ : document section
+ | section
+ | paragraphs
+ ;
+
+section
+ : title paragraphs
+ | title hardbreak paragraphs
+ ;
+
+title
+ : titleitem textsequence
+ ;
+
+paragraphs
+ : paragraphs paragraph hardbreak
+ | paragraphs paragraph
+ | paragraph hardbreak
+ | paragraph
+ | paragraphs subsection hardbreak
+ | paragraphs subsection
+ | subsection hardbreak
+ | subsection
+ ;
+
+subsection
+ : subtitle subparagraphs
+ | subtitle hardbreak subparagraphs
+ ;
+
+subtitle
+ : subtitleitem textsequence
+ ;
+
+subparagraphs
+ : subparagraphs paragraph hardbreak
+ | subparagraphs paragraph
+ | paragraph hardbreak
+ | paragraph
+ | subparagraphs subsubsection hardbreak
+ | subparagraphs subsubsection
+ | subsubsection hardbreak
+ | subsubsection
+ ;
+
+subsubsection
+ : subsubtitle subsubparagraphs
+ | subsubtitle hardbreak subsubparagraphs
+ ;
+
+subsubtitle
+ : subsubtitleitem textsequence
+ ;
+
+subsubparagraphs
+ : subsubparagraphs paragraph hardbreak
+ | subsubparagraphs paragraph
+ | paragraph hardbreak
+ | paragraph
+ ;
+
+paragraph
+ : bulletedlist
+ | numberedlist1
+ | textsequence
+ | line
+ | source %prec softbreak
+ | source softbreak
+ | table
+ ;
+
+bulletedlist
+ : bulletedlist bulletedlistitem
+ | bulletedlistitem
+ ;
+
+bulletedlistitem
+ : bulleteditem textsequence
+ ;
+
+numberedlist1
+ : numberedlist1 numberedlistitem1
+ | numberedlistitem1
+ | numberedlist1 numberedlist2
+ | numberedlist2
+ ;
+
+numberedlistitem1
+ : numbered1item textsequence
+ ;
+
+numberedlist2
+ : numberedlist2 numberedlistitem2
+ | numberedlistitem2
+ | numberedlist2 numberedlist3
+ | numberedlist3
+ ;
+
+numberedlistitem2
+ : numbered2item textsequence
+ ;
+
+numberedlist3
+ : numberedlist3 numberedlistitem3
+ | numberedlistitem3
+ ;
+
+numberedlistitem3
+ : numbered3item textsequence
+ ;
+
+table
+ : tablehead softbreak tablerows
+ | tablehead softbreak tablerows softbreak
+ ;
+
+tablehead
+ : tablehead tabletitle
+ | tabletitle
+ ;
+
+tabletitle
+ : tabletitleitem textblock
+ ;
+
+tablerows
+ : tablerows softbreak tablecolumns
+ | tablecolumns
+ ;
+
+tablecolumns
+ : tablecolumns tablecolumn
+ | tablecolumn
+ ;
+
+tablecolumn
+ : tablecolumnitem textblock
+ ;
+
+textsequence
+ : textsequence textblock softbreak
+ | textsequence textblock
+ | textblock softbreak
+ | textblock
+ | textsequence textblock break
+ | textblock break
+ ;
+
+textblock
+ : link
+ | anchor
+ | strongblock
+ | emblock
+ | text
+ | codeblock
+ ;
+
+emblock
+ : emitem text emitem
+ ;
+
+strongblock
+ : strongitem text strongitem
+ ;
+
+codeblock
+ : codeopenitem text codecloseitem
+ ;
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/edit.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/edit.xml
new file mode 100644
index 0000000..95f8a04
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/edit.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<document>
+ <header>
+ <title>Wiki example</title>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <row>
+ <column title="Wiki content">
+
+ <form action="${cocoon.continuation.id}.kont" method="post">
+ <textarea name="text" type="textarea" cols="100" rows="23" style="width: 100%">${text}</textarea><br/>
+ <input value="Save" type="submit" class="submit"/>
+ </form>
+
+ </column>
+ </row>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/error.css b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/error.css
new file mode 100644
index 0000000..3766c7e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/error.css
@@ -0,0 +1,26 @@
+pre.error {
+ //font-size: 10pt;
+ font-size: 120%;
+}
+
+span.lt {
+ background-color: #e5ffe5;
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+
+span.eq {
+ background-color: #ff0000;
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+
+span.gt {
+ background-color: #ffe5e5;
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/java.css b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/java.css
new file mode 100644
index 0000000..2ce9716
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/java.css
@@ -0,0 +1,150 @@
+TD.titleText {
+ BACKGROUND: #eff7ff; PADDING-left: 5px;
+}
+
+TABLE.view {
+ FONT-SIZE: 12px;
+ /*BORDER:#aca9ac 1px solid;*/
+}
+
+TD.headerTitle {
+ BACKGROUND: #d5e2ee;
+ BORDER: #aca9ac 1px solid;
+ WIDTH: 100%;
+}
+
+TD.headerLeft {
+ BACKGROUND: #f6f6f6;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+}
+
+TD.header {
+ BACKGROUND: #f6f6f6;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+}
+TD.headerRight {
+ BACKGROUND: #f6f6f6;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ BORDER-RIGHT: #aca9ac 1px solid;
+ WIDTH: 100%;
+}
+
+TD.itemLeft {
+ BACKGROUND: #ffffff;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ vertical-align:top;
+}
+
+TD.item {
+ BACKGROUND: #ffffff;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ vertical-align:top;
+}
+
+TD.itemRight {
+ BACKGROUND: #ffffff;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ BORDER-RIGHT: #aca9ac 1px solid;
+ WIDTH: 100%;
+ vertical-align:top;
+}
+
+FONT.current {
+ padding: 2px;
+ font-weight: bold;
+ color: #FFFFFF;
+ background-color:#00008B;
+}
+
+TABLE.srcView {
+ FONT-SIZE: 12px; BORDER-LEFT:#dcdcdc 1px solid;BORDER-RIGHT:#dcdcdc 1px solid; BORDER-BOTTOM:#dcdcdc 1px solid;
+}
+
+TD.lineCount {
+ BACKGROUND: #f6f6f6;
+ BORDER-LEFT: #aca9ac 1px solid;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ BORDER-RIGHT: #aca9ac 1px solid;
+ PADDING-RIGHT: 3px;
+ FONT-SIZE: 12px;
+}
+
+TD.srcLine {
+ WIDTH: 100%;
+ BORDER-BOTTOM: #aca9ac 1px solid;
+ BORDER-RIGHT: #aca9ac 1px solid;
+}
+
+PRE.srcLine {
+ BACKGROUND: #ffffff; MARGIN-BOTTOM: 0px; FONT-SIZE: 12px;
+}
+
+TD.footer {
+ BORDER-TOP:#dcdcdc 1px solid; FONT-SIZE: 9px
+}
+
+/* Token Colours */
+FONT.CharacerLiteral { color: #FF00FF; }
+FONT.StringLiteral { color: #FF00FF; }
+FONT.SingleLineComment { color: #008000; }
+FONT.FormalComment { color: #008000; }
+FONT.MultiLineComment { color: #008000; }
+FONT.ABSTRACT { color: #2020BF ; font-weight: normal }
+FONT.BOOLEAN { color: #2020BF ; font-weight: normal }
+FONT.BREAK { color: #2020BF ; font-weight: normal }
+FONT.BYTE { color: #2020BF ; font-weight: normal }
+FONT.CASE { color: #2020BF ; font-weight: normal }
+FONT.CATCH { color: #2020BF ; font-weight: normal }
+FONT.CHAR { color: #2020BF ; font-weight: normal }
+FONT.CLASS { color: #2020BF ; font-weight: normal }
+FONT.CONST { color: #2020BF ; font-weight: normal }
+FONT.CONTINUE { color: #2020BF ; font-weight: normal }
+FONT.DEFAULT { color: #2020BF ; font-weight: normal }
+FONT.DO { color: #2020BF ; font-weight: normal }
+FONT.DOUBLE { color: #2020BF ; font-weight: normal }
+FONT.ELSE { color: #2020BF ; font-weight: normal }
+FONT.EXTENDS { color: #2020BF ; font-weight: normal }
+FONT.FALSE { color: #2020BF ; font-weight: normal }
+FONT.FINAL { color: #2020BF ; font-weight: normal }
+FONT.FINALLY { color: #2020BF ; font-weight: normal }
+FONT.FLOAT { color: #2020BF ; font-weight: normal }
+FONT.FOR { color: #2020BF ; font-weight: normal }
+FONT.GOTO { color: #2020BF ; font-weight: normal }
+FONT.IF { color: #2020BF ; font-weight: normal }
+FONT.IMPLEMENTS { color: #2020BF ; font-weight: normal }
+FONT.IMPORT { color: #2020BF ; font-weight: normal }
+FONT.INSTANCEOF { color: #2020BF ; font-weight: normal }
+FONT.INT { color: #2020BF ; font-weight: normal }
+FONT.INTERFACE { color: #2020BF ; font-weight: normal }
+FONT.LONG { color: #2020BF ; font-weight: normal }
+FONT.NATIVE { color: #2020BF ; font-weight: normal }
+FONT.NEW { color: #2020BF ; font-weight: normal }
+FONT.PACKAGE { color: #2020BF ; font-weight: normal }
+FONT.PRIVATE { color: #2020BF ; font-weight: normal }
+FONT.PROTECTED { color: #2020BF ; font-weight: normal }
+FONT.PUBLIC { color: #2020BF ; font-weight: normal }
+FONT.RETURN { color: #2020BF ; font-weight: normal }
+FONT.SHORT { color: #2020BF ; font-weight: normal }
+FONT.STATIC { color: #2020BF ; font-weight: normal }
+FONT.SUPER { color: #2020BF ; font-weight: normal }
+FONT.SWITCH { color: #2020BF ; font-weight: normal }
+FONT.SYCHRONIZED { color: #2020BF ; font-weight: normal }
+FONT.THIS { color: #2020BF ; font-weight: normal }
+FONT.THROW { color: #2020BF ; font-weight: normal }
+FONT.THROWS { color: #2020BF ; font-weight: normal }
+FONT.TRANSIENT { color: #2020BF ; font-weight: normal }
+FONT.TRUE { color: #2020BF ; font-weight: normal }
+FONT.TRY { color: #2020BF ; font-weight: normal }
+FONT.VOID { color: #2020BF ; font-weight: normal }
+FONT.VOLATILE { color: #2020BF ; font-weight: normal }
+FONT.WHILE { color: #2020BF ; font-weight: normal }
+FONT.StrictFP { color: #2020BF ; font-weight: normal }
+FONT.LITERAL { color: #b27b8c }
+FONT.IDENTIFIER { color: #000000 }
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/mathexp.xsp b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/mathexp.xsp
new file mode 100644
index 0000000..5ea1474
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/mathexp.xsp
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:xsp-request="http://apache.org/xsp/request/2.0">
+
+ <document>
+ <header>
+ <title>Chaperon examples</title>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <row>
+ <column title="Mathematical expression">
+
+ <text xmlns="http://chaperon.sourceforge.net/schema/text/1.0" source="" line="1" column="1"><xsp-request:get-parameter name="text"
+ default="3*a-5*6/7 + ( b-c)*5- b"/></text>
+
+ <p>
+ <form action="mathexp.html" method="post">
+
+ <xsp:element name="input">
+ <xsp:attribute name="name">text</xsp:attribute>
+ <xsp:attribute name="type">text</xsp:attribute>
+ <xsp:attribute name="size">80</xsp:attribute>
+ <xsp:attribute name="maxlength">110</xsp:attribute>
+ <xsp:attribute name="value"><xsp-request:get-parameter name="text"
+ default="3*a-5*6/7 + ( b-c)*5- b"/></xsp:attribute>
+ </xsp:element>
+ </form>
+ </p>
+ </column>
+ </row>
+ </body>
+ </document>
+</xsp:page>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/new.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/new.xml
new file mode 100644
index 0000000..92e0391
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/new.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<document>
+ <header>
+ <title>Wiki example</title>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <row>
+ <column title="Wiki content">
+
+ <form action="${cocoon.continuation.id}.kont" method="post">
+ <textarea name="text" type="textarea" cols="100" rows="23" style="width: 100%"></textarea><br/>
+ <input value="Save" type="submit" class="submit"/>
+ </form>
+
+ </column>
+ </row>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/patterntext.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/patterntext.xml
new file mode 100644
index 0000000..38da5eb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/patterntext.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<document>
+ <header>
+ <title>Chaperon examples</title>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <section>
+ <title>Pattern test</title>
+
+ <p>Some links for the Apache project(http://xml.apache.org/):</p>
+ <ul>
+ <li>Here the link for Cocoon http://cocoon.apache.org/</li>
+ <li>And the link for Avalon http://jakarta.apache.org/avalon/</li>
+ </ul>
+ <p>This example was made by Stephan Michels(stephan@apache.org).</p>
+ </section>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote1.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote1.txt
new file mode 100644
index 0000000..283cdbc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote1.txt
@@ -0,0 +1,65 @@
+Date,Open,High,Low,Close,Volume
+20021101,0.11,0.11,0.11,0.11,74000
+20021104,0.11,0.11,0.1,0.105,1166900
+20021105,0.1,0.105,0.1,0.105,759670
+20021106,0.1,0.105,0.1,0.105,101000
+20021107,0.105,0.105,0.097,0.097,808230
+20021108,0.1,0.105,0.1,0.1,685199
+20021111,0.105,0.11,0.1,0.1,1109000
+20021112,0.105,0.105,0.1,0.1,0
+20021113,0.105,0.11,0.105,0.105,564856
+20021114,0.105,0.105,0.1,0.105,617400
+20021115,0.105,0.11,0.105,0.11,343500
+20021118,0.11,0.11,0.105,0.11,427602
+20021119,0.11,0.11,0.105,0.105,458679
+20021120,0.11,0.115,0.11,0.115,669019
+20021121,0.115,0.14,0.115,0.135,2906144
+20021122,0.135,0.135,0.125,0.13,749000
+20021125,0.13,0.13,0.12,0.12,1417533
+20021126,0.125,0.125,0.12,0.12,505800
+20021127,0.12,0.12,0.115,0.115,195472
+20021128,0.115,0.12,0.11,0.12,322800
+20021129,0.12,0.12,0.115,0.115,371600
+20021202,0.115,0.115,0.11,0.11,1112575
+20021203,0.11,0.11,0.105,0.105,252652
+20021204,0.11,0.115,0.11,0.115,829171
+20021205,0.115,0.115,0.11,0.11,390148
+20021206,0.11,0.11,0.105,0.105,640881
+20021209,0.11,0.115,0.11,0.11,1809529
+20021210,0.11,0.11,0.105,0.105,1251090
+20021211,0.105,0.11,0.1,0.1,515300
+20021212,0.105,0.105,0.105,0.105,139000
+20021213,0.11,0.115,0.11,0.11,2567966
+20021216,0.115,0.115,0.11,0.115,605650
+20021217,0.115,0.115,0.105,0.11,1219014
+20021218,0.115,0.115,0.11,0.115,718090
+20021219,0.12,0.125,0.115,0.12,2068299
+20021220,0.12,0.125,0.12,0.125,954000
+20021223,0.12,0.12,0.115,0.12,153300
+20021224,0.12,0.12,0.12,0.12,554900
+20021225,0.12,0.12,0.12,0.12,0
+20021226,0.12,0.12,0.12,0.12,0
+20021227,0.12,0.125,0.12,0.12,537133
+20021230,0.12,0.125,0.115,0.115,1012467
+20021231,0.12,0.12,0.115,0.115,442733
+20030101,0.115,0.115,0.115,0.115,0
+20030102,0.12,0.12,0.115,0.115,218000
+20030103,0.12,0.12,0.115,0.12,640134
+20030106,0.12,0.12,0.115,0.12,922506
+20030107,0.125,0.125,0.115,0.12,529170
+20030108,0.12,0.12,0.11,0.115,586026
+20030109,0.12,0.135,0.115,0.135,6947552
+20030110,0.14,0.155,0.14,0.145,7828670
+20030113,0.15,0.15,0.135,0.14,3047764
+20030114,0.14,0.14,0.125,0.125,2840680
+20030115,0.125,0.13,0.12,0.125,1365666
+20030116,0.13,0.13,0.12,0.13,1208000
+20030117,0.13,0.13,0.12,0.12,1387520
+20030120,0.125,0.125,0.12,0.12,664292
+20030121,0.12,0.12,0.115,0.12,2164262
+20030122,0.12,0.13,0.12,0.13,2751434
+20030123,0.125,0.135,0.125,0.13,2718754
+20030124,0.135,0.135,0.13,0.13,1035888
+20030128,0.130,0.135,0.130,0.135,1933154
+20030129,0.135,0.135,0.130,0.130,681900
+20030130,0.130,0.130,0.125,0.125,661360
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote2.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote2.txt
new file mode 100644
index 0000000..a441dfa
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/quote2.txt
@@ -0,0 +1,10 @@
+DATE,EVENT,VENUE,RACE DISTANCE,ORGANISER,CONTAC No.
+JAN,,,,,
+17th,GAUTENG NORTH AQUATHLON CHAMPS,Blue Bay quarry,Standard (run-swim-run),JOHAN KOK,072 659 2014
+24th,TUKKIES TRIATHLON,ROODEPLAAT,1/2 Standard,ALBIE DE LANGE,082 453 0096
+31st,TRI CHAMPS GAUTENG NORTH,ROODEPLAAT,Standard(swim-cycle-run),JEAN-PIERRE TEN NAPEL,082 358 4005
+FEB,,,,,
+8th,GARY WHITEHOUSE MEMORIAL,ROODEPLAAT,1/2 Standard(swim-cycle-run),HENNING VAN ASWEGEN,082 344 5641
+14th,GAUTENG NORTH TRIATHLON CLINIC,LC DE VILLIERS,,JAN VAN ROOYEN,083 601 8103
+28th,S.A. TRIATHLON CHAMPS,TBA,Standard (swim-cycle-run),,
+MAR,,,,,
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/samples.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/samples.xml
new file mode 100644
index 0000000..bf2f116
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/samples.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<samples xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <group name="Main examples page.">
+ <sample name="Back" href="..">to Cocoon examples main page</sample>
+ </group>
+
+ <group name="Mathexp example">
+ <sample name="Mathexp" href="mathexp.html">This example demonstrate how
+ the parser can be used to parse input text, like mathematical expressions.
+ </sample>
+ </group>
+
+ <group name="Wiki examples">
+ <sample name="Wiki editor" href="view.do?page=index">In this example the parser is used
+ to build an online editor,
+ which is based on the very popular syntax of Wiki.
+ </sample>
+ <sample name="Wiki self-test" href="view.do?page=selftest">
+ A self-describing document that demonstrates and tests the Wiki grammar.
+ </sample>
+ </group>
+
+ <group name="Pattern example">
+ <sample name="Pattern" href="pattern.html">In this example the
+ PatternTransformer is used to replace links with HTML links.
+ </sample>
+ </group>
+
+ <group name="Syntax highlighting example">
+ <sample name="Example 1" href="org/apache/cocoon/Cocoon.java.html">The parser can also
+ be used to colorize some source code.
+ </sample>
+
+ <sample name="Example 2" href="org/apache/cocoon/Cocoon.class.html">
+ This example show a another view of a java class, similar to javadoc.
+ (The first use takes 2-3 minutes, for the parser table generation process.)
+ </sample>
+ </group>
+
+ <group name="Comma-Separated Values (CSV)">
+ <sample name="Stock Quote" href="quote1.html">
+ This example processes a CSV file and generates a table from it.
+ </sample>
+ <sample name="Excel output" href="quote2.html">
+ This example processes a CSV file generate by MS Excel.
+ </sample>
+ </group>
+
+ <group name="Documentation">
+ <sample name="Lexical Transformer"
+ href="../../docs/userdocs/transformers/lexer-transformer.html">
+ </sample>
+ <sample name="Parser Transformer"
+ href="../../docs/userdocs/transformers/parser-transformer.html">
+ </sample>
+ <sample name="Pattern Transformer"
+ href="../../docs/userdocs/transformers/pattern-transformer.html">
+ </sample>
+ <sample name="Full Chaperon documentation"
+ href="http://chaperon.sourceforge.net/">
+ </sample>
+ </group>
+
+</samples>
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/source.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/source.xml
new file mode 100644
index 0000000..85b6cbb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/source.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<document>
+ <header>
+ <title>Wiki example</title>
+ </header>
+ <body>
+ <text xmlns="http://chaperon.sourceforge.net/schema/text/1.0" source="wiki/${page}.txt" line="1" column="1">${text}</text>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/view.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/view.xml
new file mode 100644
index 0000000..dc18284
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/view.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<document>
+ <header>
+ <title>Wiki example</title>
+ <tab title="Edit" href="edit.do?page=${page}"/>
+ <tab title="Source" href="source.do?page=${page}"/>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <text xmlns="http://chaperon.sourceforge.net/schema/text/1.0" source="wiki/${page}.txt" line="1" column="1">${text}</text>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/wiki.js b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/wiki.js
new file mode 100644
index 0000000..8bf05f2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/misc/wiki.js
@@ -0,0 +1,123 @@
+importPackage(Packages.org.apache.excalibur.source);
+//importPackage(Packages.java.io);
+
+var resolver = cocoon.getComponent(SourceResolver.ROLE);
+
+function view() {
+
+ var page = cocoon.request.getParameter("page");
+
+ if (page==null)
+ page = "index";
+
+ var source = null;
+
+ var text = "";
+
+ if (!exists(page)) {
+
+ cocoon.sendPageAndWait("wiki/new.html", {page:page});
+
+ text = cocoon.request.getParameter("text");
+
+ write(page, text);
+ } else {
+ text = read(page);
+ }
+
+ cocoon.sendPage("wiki/view.html", {page:page, text:text});
+}
+
+function edit() {
+
+ var page = cocoon.request.getParameter("page");
+
+ if (page==null)
+ page = "index";
+
+ var text = read(page);
+
+ cocoon.sendPageAndWait("wiki/edit.html", {page:page, text:text});
+
+ var text = cocoon.request.getParameter("text");
+
+ write(page, text);
+
+ cocoon.sendPage("wiki/view.html", {page:page, text:text});
+}
+
+function source() {
+
+ var page = cocoon.request.getParameter("page");
+
+ if (page==null)
+ page = "index";
+
+ var text = read(page);
+
+ cocoon.sendPage("wiki/source.xml", {page:page, text:text});
+}
+
+
+function read(page) {
+
+ var text = "";
+ var source = null;
+ try {
+ source = resolver.resolveURI("wiki/"+page+".txt");
+
+ var input = new Packages.java.io.BufferedReader(new Packages.java.io.InputStreamReader(source.getInputStream()));
+ var buffer = new Packages.java.lang.StringBuffer();
+ var line;
+ while (true) {
+ line = input.readLine();
+ if (line!=null)
+ buffer.append(line+"\n");
+ else
+ break;
+ }
+ text = buffer.toString();
+ input.close();
+
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
+ }
+
+ return text;
+}
+
+function write(page, text) {
+
+ var source = null;
+ try {
+ source = resolver.resolveURI("wiki/"+page+".txt");
+
+ var out = new Packages.java.io.PrintStream(source.getOutputStream());
+ out.print(text);
+ out.flush();
+ out.close();
+
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
+ }
+}
+
+function exists(page) {
+
+ var exists = true;
+ var source = null;
+ try {
+ source = resolver.resolveURI("wiki/"+page+".txt");
+ exists = source.exists();
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
+ }
+ return exists;
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/sitemap.xmap
new file mode 100644
index 0000000..0ddf6da
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/sitemap.xmap
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Components ================================ -->
+
+ <map:components>
+
+<!-- =========================== Generators ================================= -->
+
+ <map:generators default="file">
+
+ <map:generator name="text" logger="sitemap.generator.textgenerator"
+ src="org.apache.cocoon.generation.TextGenerator">
+ <parameter name="localizable" value="true"/>
+ </map:generator>
+
+ <map:generator name="exception"
+ src="org.apache.cocoon.generation.ParseExceptionGenerator"/>
+
+ </map:generators>
+
+<!-- =========================== Transformers ================================= -->
+
+ <map:transformers default="xsltc">
+
+ <map:transformer name="pattern"
+ src="org.apache.cocoon.transformation.PatternTransformer"
+ logger="sitemap.transformer.pattern">
+ <parameter name="groups" value="true"/>
+ </map:transformer>
+ <map:transformer name="lexer"
+ src="org.apache.cocoon.transformation.LexicalTransformer"
+ logger="sitemap.transformer.lexer">
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+ <map:transformer name="parser"
+ src="org.apache.cocoon.transformation.ParserTransformer"
+ logger="sitemap.transformer.parser">
+ <parameter name="flatten" value="true"/>
+ <parameter name="recovery" value="true"/>
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+
+ <map:transformer name="extparser"
+ src="org.apache.cocoon.transformation.ExtendedParserTransformer"
+ logger="sitemap.transformer.extendedparser">
+ </map:transformer>
+
+ </map:transformers>
+
+<!-- =========================== Selectors ================================ -->
+
+ <map:selectors default="browser">
+ <map:selector logger="sitemap.selector.exception" name="exception"
+ src="org.apache.cocoon.selection.ExceptionSelector">
+ <exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/>
+ <exception class="java.lang.Throwable" unroll="true"/>
+ </map:selector>
+ </map:selectors>
+
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view from-label="content" name="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="ast" name="ast">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="xdoc" name="xdoc">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-position="last" name="links">
+ <map:serialize type="links"/>
+ </map:view>
+
+ </map:views>
+
+<!-- =========================== Flow =================================== -->
+
+ <map:flow language="javascript">
+ <map:script src="misc/wiki.js"/>
+ </map:flow>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+
+ <map:pipeline type="caching" internal-only="true">
+ <!-- Hint: During development you could expose this pipeline, to help
+ with writing your grammars. Use a text grammar myapp.grm and request
+ the myapp.xlex and myapp.xgrm URLs and then view source.
+ -->
+ <map:match pattern="*.xlex">
+ <map:generate type="text" src="grammars/{1}.grm"/>
+ <map:transform type="lexer" src="grammars/grm.xlex"/>
+ <map:transform type="parser" src="grammars/grm.xgrm"/>
+ <map:transform src="stylesheets/text4regex.xsl"/>
+ <map:transform type="lexer" src="grammars/regex.xlex"/>
+ <map:transform type="parser" src="grammars/regex.xgrm"/>
+ <map:transform src="stylesheets/grm2xlex.xsl"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="*.xgrm">
+ <map:generate type="text" src="grammars/{1}.grm"/>
+ <map:transform type="lexer" src="grammars/grm.xlex"/>
+ <map:transform type="parser" src="grammars/grm.xgrm"/>
+ <map:transform src="stylesheets/text4regex.xsl"/>
+ <map:transform type="lexer" src="grammars/regex.xlex"/>
+ <map:transform type="parser" src="grammars/regex.xgrm"/>
+ <map:transform src="stylesheets/grm2xgrm.xsl"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="*.xegrm">
+ <map:generate type="text" src="grammars/{1}.egrm"/>
+ <map:transform type="extparser" src="grammars/egrm.xegrm"/>
+ <map:transform src="stylesheets/egrm2xegrm.xsl"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="wiki/*.html">
+ <map:generate type="jx" src="misc/{1}.xml" />
+ <map:transform type="lexer" src="cocoon:/wiki.xlex"/>
+ <map:transform type="parser" src="cocoon:/wiki.xgrm" label="ast">
+ <map:parameter name="failsafe" value="true"/>
+ </map:transform>
+ <map:transform src="stylesheets/error4wiki.xsl"/>
+ <map:transform type="lexer" src="grammars/error.xlex"/>
+ <map:transform src="stylesheets/error2page.xsl"/>
+ <map:transform src="stylesheets/wiki2xdoc.xsl" label="xdoc"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="wiki/source.xml">
+ <map:generate type="jx" src="misc/source.xml" />
+ <map:transform type="lexer" src="cocoon:/wiki.xlex"/>
+ <map:transform type="parser" src="cocoon:/wiki.xgrm" label="ast"/>
+ <map:transform src="stylesheets/wiki2xdoc.xsl" label="xdoc"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ </map:pipeline>
+
+ <map:pipeline type="caching">
+
+ <map:match pattern="">
+ <map:redirect-to uri="welcome"/>
+ </map:match>
+
+ <map:match pattern="welcome">
+ <map:generate src="misc/samples.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="*.kont">
+ <map:call continuation="{1}"/>
+ </map:match>
+
+ <map:match pattern="*.do">
+ <map:call function="{1}"/>
+ </map:match>
+
+ <map:match pattern="*.css">
+ <map:read src="misc/{1}.css"/>
+ </map:match>
+
+ <map:match pattern="**/*.css">
+ <map:read src="misc/{2}.css"/>
+ </map:match>
+
+<!-- ========================= Chaperon ================================ -->
+
+ <map:match pattern="mathexp.html">
+ <map:generate type="serverpages" src="misc/mathexp.xsp"/>
+ <map:transform type="lexer" src="grammars/mathexp.xlex"/>
+ <map:transform type="parser" src="grammars/mathexp.xgrm"/>
+ <map:transform src="stylesheets/mathexp2html.xsl"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="quote*.html">
+ <map:generate type="text" src="misc/quote{1}.txt"/>
+ <map:transform type="lexer" src="cocoon:/quote.xlex"/>
+ <map:transform type="parser" src="cocoon:/quote.xgrm" label="ast"/>
+ <map:transform src="stylesheets/quote2page.xsl"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="pattern.html">
+ <map:generate src="misc/patterntext.xml"/>
+ <map:transform type="pattern" src="grammars/link.xlex"/>
+ <map:transform src="stylesheets/pattern2link.xsl"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="**/*.java.html">
+ <map:generate type="text" src="http://cvs.apache.org/viewcvs.cgi/*checkout*/cocoon-2.1/src/java/{1}/{2}.java"/>
+ <map:transform type="lexer" src="grammars/java.xlex"/>
+ <map:transform src="stylesheets/text4javadoc.xsl"/>
+ <map:transform type="lexer" src="grammars/javadoc.xlex" label="ast"/>
+ <map:transform src="stylesheets/java2html.xsl">
+ <map:parameter name="package" value="{1}"/>
+ <map:parameter name="class" value="{2}"/>
+ </map:transform>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="**/*.class.html">
+ <map:generate type="text" src="http://cvs.apache.org/viewcvs.cgi/*checkout*/cocoon-2.1/src/java/{1}/{2}.java"/>
+ <map:transform type="lexer" src="grammars/java.xlex"/>
+ <map:transform src="stylesheets/remove4class.xsl"/>
+ <map:transform type="parser" src="cocoon:/java.xgrm"/>
+ <map:transform src="stylesheets/text4javadoc2.xsl"/>
+ <map:transform type="lexer" src="cocoon:/javadoc.xlex"/>
+ <map:transform type="parser" src="cocoon:/javadoc.xgrm" label="ast"/>
+ <map:transform src="stylesheets/class2html.xsl">
+ <map:parameter name="package" value="{1}"/>
+ <map:parameter name="class" value="{2}"/>
+ </map:transform>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:handle-errors>
+ <map:select type="exception">
+ <map:when test="syntax">
+ <map:generate type="exception"/>
+ <map:transform src="stylesheets/text4error.xsl"/>
+ <map:transform type="xinclude"/>
+ <map:transform type="lexer" src="grammars/error.xlex"/>
+ <map:transform src="stylesheets/error2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:when>
+ </map:select>
+ </map:handle-errors>
+
+ </map:pipeline>
+
+ </map:pipelines>
+
+</map:sitemap>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/class2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/class2html.xsl
new file mode 100644
index 0000000..a119641
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/class2html.xsl
@@ -0,0 +1,292 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+
+ <xsl:output indent="no"/>
+
+ <xsl:param name="package"/>
+ <xsl:param name="class"/>
+
+ <xsl:param name="prefix">cocoon/samples/chaperon/</xsl:param>
+
+ <xsl:template match="/st:output">
+ <document>
+ <header>
+ <title>Java2HTML example</title>
+ <style href="java.css"/>
+ </header>
+ <body>
+ <row>
+ <column title="Source file: {$class}">
+
+ <xsl:call-template name="header"/>
+
+ <xsl:call-template name="declaration"/>
+
+ </column>
+
+ </row>
+ </body>
+ </document>
+
+ </xsl:template>
+
+ <xsl:template match="package">
+ <a href="/{$prefix}{translate(@full,'.','/')}/index.html"><xsl:value-of select="@full"/></a><br/>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <a href="/{$prefix}{translate(@full,'.','/')}.class.html"><xsl:value-of select="@name"/></a><br/>
+ </xsl:template>
+
+ <xsl:template name="header">
+ <p>
+ <table width="100%" cellpadding="3" cellspacing="0" class="view">
+ <tbody>
+ <tr>
+ <td class="headerTitle" colspan="4"><b> Summary </b></td>
+ </tr>
+ <tr>
+ <td class="headerLeft"><b><nobr> Package </nobr></b></td>
+ <td class="header"><b> Type </b></td>
+ <td class="header"><b> Name </b></td>
+ <td class="headerRight"><b> Description </b></td>
+ </tr>
+ <tr>
+ <td class="itemLeft"><xsl:value-of select="st:CompilationUnit/st:ProgramFile/
+ st:PackageStatement/st:QualifiedName"/></td>
+ <td class="item"><xsl:value-of select="st:CompilationUnit/st:ProgramFile/
+ st:TypeDeclarations/st:TypeDeclarationOptSemi/
+ st:TypeDeclaration/st:ClassHeader/st:ClassWord"/></td>
+ <td class="item"><xsl:value-of select="st:CompilationUnit/st:ProgramFile/
+ st:TypeDeclarations/st:TypeDeclarationOptSemi/
+ st:TypeDeclaration/st:ClassHeader/st:IDENTIFIER"/></td>
+ <td class="itemRight"><xsl:apply-templates select="st:CompilationUnit/st:ProgramFile/
+ st:TypeDeclarations/st:TypeDeclarationOptSemi/
+ st:TypeDeclaration/st:output/st:JavaDoc" mode="short"/> </td>
+ </tr>
+ </tbody>
+ </table>
+ </p>
+ </xsl:template>
+
+ <xsl:template name="declaration">
+ <xsl:apply-templates select="st:CompilationUnit/st:ProgramFile/st:TypeDeclarations/
+ st:TypeDeclarationOptSemi/st:TypeDeclaration/st:FieldDeclarations"/>
+ </xsl:template>
+
+
+
+ <xsl:template match="st:FieldDeclarations">
+ <p>
+ <table width="100%" cellpadding="3" cellspacing="0" class="view">
+ <tbody>
+ <tr>
+ <td class="headerTitle" colspan="4"><b> Field Summary </b></td>
+ </tr>
+ <tr>
+ <td class="headerLeft"><b><nobr> Modifier </nobr></b></td>
+ <td class="header"><b> Type </b></td>
+ <td class="header"><b> Name </b></td>
+ <td class="headerRight"><b> Description </b></td>
+ </tr>
+ <xsl:apply-templates select="st:FieldDeclarationOptSemi/st:FieldDeclaration/st:FieldVariableDeclaration"/>
+ </tbody>
+ </table>
+ </p>
+
+ <p>
+ <table width="100%" cellpadding="3" cellspacing="0" class="view">
+ <tbody>
+ <tr>
+ <td class="headerTitle" colspan="3"><b> Constructor Summary </b></td>
+ </tr>
+ <tr>
+ <td class="headerLeft"><b><nobr> Modifier </nobr></b></td>
+ <td class="header"><b> Name </b></td>
+ <td class="headerRight"><b> Description </b></td>
+ </tr>
+ <xsl:apply-templates select="st:FieldDeclarationOptSemi/st:FieldDeclaration/st:ConstructorDeclaration"/>
+ </tbody>
+ </table>
+ </p>
+
+ <p>
+ <table width="100%" cellpadding="3" cellspacing="0" class="view">
+ <tbody>
+ <tr>
+ <td class="headerTitle" colspan="4"><b> Method Summary </b></td>
+ </tr>
+ <tr>
+ <td class="headerLeft"><b><nobr> Modifier </nobr></b></td>
+ <td class="header"><b> Type </b></td>
+ <td class="header"><b> Name </b></td>
+ <td class="headerRight"><b> Description </b></td>
+ </tr>
+ <xsl:apply-templates select="st:FieldDeclarationOptSemi/st:FieldDeclaration/st:MethodDeclaration"/>
+ </tbody>
+ </table>
+ </p>
+
+ <xsl:apply-templates select="st:FieldDeclarationOptSemi/st:FieldDeclaration/st:MethodDeclaration" mode="detail"/>
+
+ </xsl:template>
+
+ <xsl:template match="st:FieldVariableDeclaration">
+ <xsl:if test="not(contains(st:Modifiers/st:Modifier,'private'))">
+ <tr>
+ <td class="itemLeft">
+ <nobr>
+ <xsl:for-each select="st:Modifiers/st:Modifier">
+ <xsl:value-of select="."/> 
+ </xsl:for-each>
+ </nobr>
+ </td>
+ <td class="item"> <xsl:value-of select="st:TypeSpecifier"/></td>
+ <td class="item">
+ <xsl:value-of select="st:VariableDeclarators/st:VariableDeclarator/st:DeclaratorName"/>
+ </td>
+ <td class="itemRight">
+ <xsl:apply-templates select="st:output/st:JavaDoc" mode="short"/> 
+ </td>
+ </tr>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="st:FieldVariableDeclaration" mode="detail">
+ </xsl:template>
+
+ <xsl:template match="st:ConstructorDeclaration">
+ <tr>
+ <td class="itemLeft">
+ <nobr>
+ <xsl:for-each select="st:Modifiers/st:Modifier">
+ <xsl:value-of select="."/> 
+ </xsl:for-each>
+ </nobr>
+ </td>
+ <td class="item">
+ <nobr>
+ <xsl:value-of select="st:ConstructorDeclarator/st:IDENTIFIER"/>
+ (<xsl:for-each select="st:ConstructorDeclarator/st:ParameterList/st:Parameter">
+ <xsl:if test="position()!=1"> ,</xsl:if>
+ <xsl:value-of select="st:TypeSpecifier/st:TypeName"/> <xsl:value-of select="st:DeclaratorName"/>
+ </xsl:for-each>)
+ </nobr>
+ </td>
+ <td class="itemRight">
+ <xsl:apply-templates select="st:output/st:JavaDoc" mode="short"/> 
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:ConstructorDeclaration" mode="detail">
+ </xsl:template>
+
+ <xsl:template match="st:MethodDeclaration">
+ <tr>
+ <td class="itemLeft">
+ <nobr>
+ <xsl:for-each select="st:Modifiers/st:Modifier">
+ <xsl:value-of select="."/> 
+ </xsl:for-each>
+ </nobr>
+ </td>
+ <td class="item"><xsl:value-of select="st:TypeSpecifier"/></td>
+ <td class="item">
+ <nobr>
+ <xsl:value-of select="st:MethodDeclarator/st:DeclaratorName"/>
+ (<xsl:for-each select="st:MethodDeclarator/st:ParameterList/st:Parameter">
+ <xsl:if test="position()!=1"> ,</xsl:if>
+ <xsl:value-of select="st:TypeSpecifier/st:TypeName"/> <xsl:value-of select="st:DeclaratorName"/>
+ </xsl:for-each>)
+ </nobr>
+ </td>
+ <td class="itemRight">
+ <xsl:apply-templates select="st:output/st:JavaDoc" mode="short"/> 
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:MethodDeclaration" mode="detail">
+ <p>
+ <table width="100%" cellpadding="3" cellspacing="0" class="view">
+ <tr>
+ <td class="headerTitle" colspan="4">
+ <b>
+ <nobr>
+ <xsl:for-each select="st:Modifiers/st:Modifier">
+ <xsl:value-of select="."/> 
+ </xsl:for-each>
+ <xsl:value-of select="st:TypeSpecifier"/> 
+ <xsl:value-of select="st:MethodDeclarator/st:DeclaratorName"/>
+ (<xsl:for-each select="st:MethodDeclarator/st:ParameterList/st:Parameter">
+ <xsl:if test="position()!=1"> ,</xsl:if>
+ <xsl:value-of select="st:TypeSpecifier/st:TypeName"/> <xsl:value-of select="st:DeclaratorName"/>
+ </xsl:for-each>)
+ </nobr>
+ </b>
+ </td>
+ </tr>
+ <tr>
+ <td class="itemRight">
+
+ <dl>
+ <dd><xsl:apply-templates select="st:output/st:JavaDoc"/></dd>
+
+ <dt><b>Parameters:</b></dt>
+
+ <xsl:for-each select="st:MethodDeclarator/st:ParameterList/st:Parameter">
+ <dd>
+ <code><xsl:value-of select="st:DeclaratorName"/></code><xsl:text> - </xsl:text>
+ <xsl:variable name="name"><xsl:value-of select="st:DeclaratorName"/></xsl:variable>
+ <xsl:for-each select="../../../st:output/st:JavaDoc/st:Properties/
+ st:Property[substring-after(st:PROPERTYNAME,'@')='param']/st:Description">
+ <xsl:if test="starts-with(.,$name)">
+ <xsl:value-of select="substring(.,string-length($name)+1,string-length(.)-string-length($name))"/>
+ </xsl:if>
+ </xsl:for-each>
+ </dd>
+ </xsl:for-each>
+
+ <dt><b>Returns:</b></dt>
+ <dd>
+ <code><xsl:value-of select="st:TypeSpecifier"/></code>
+ <xsl:if test="st:output/st:JavaDoc/st:Properties/st:Property[substring-after(st:PROPERTYNAME,'@')='return']/st:Description">
+ <xsl:text> - </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="st:output/st:JavaDoc/st:Properties/st:Property[substring-after(st:PROPERTYNAME,'@')='return']/st:Description"/>
+ </dd>
+ </dl>
+
+ </td>
+ </tr>
+ </table>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="st:JavaDoc">
+ <xsl:apply-templates select="st:Description"/>
+ </xsl:template>
+
+ <xsl:template match="st:JavaDoc" mode="short">
+ <xsl:choose>
+ <xsl:when test="string-length(substring-before(st:Description,'.'))>0">
+ <xsl:value-of select="substring-before(st:Description,'.')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="st:Description"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:Description">
+ <xsl:apply-templates select="st:TEXT|st:TAG"/>
+ </xsl:template>
+
+ <xsl:template match="st:TAG">
+ <xsl:value-of select="." disable-output-escaping="yes"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/egrm2xegrm.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/egrm2xegrm.xsl
new file mode 100644
index 0000000..8bde422
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/egrm2xegrm.xsl
@@ -0,0 +1,185 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns="http://chaperon.sourceforge.net/schema/grammar/2.0"
+ exclude-result-prefixes="st text">
+
+ <xsl:output indent="yes" method="xml" encoding="ASCII"/>
+
+ <xsl:template match="st:output/st:grammar">
+ <grammar start="{st:start/st:name}">
+
+ <xsl:if test="not (st:start)">
+ <xsl:message terminate="yes">
+ Start element is not defined!
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:comment>This file was generated! Don't edit!</xsl:comment>
+
+ <xsl:apply-templates select="st:definition"/>
+ </grammar>
+ </xsl:template>
+
+ <xsl:template match="st:definition">
+ <definition name="{st:name}">
+ <xsl:apply-templates select="st:regex"/>
+ </definition>
+ </xsl:template>
+
+ <xsl:template match="st:regex">
+ <xsl:apply-templates select="st:choice|st:sequence|st:quantifier"/>
+ </xsl:template>
+
+ <xsl:template match="st:element" >
+ <xsl:variable name="name" select="."/>
+ <xsl:choose>
+ <xsl:when test="/st:output/st:grammar/st:abbreviation[st:name=$name]">
+ <xsl:apply-templates select="/st:output/st:grammar/st:abbreviation[st:name=$name]/st:regex"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <element name="{$name}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:choice" >
+ <choice>
+ <xsl:apply-templates select="st:sequence|st:quantifier"/>
+ </choice>
+ </xsl:template>
+
+ <xsl:template match="st:sequence">
+ <sequence>
+ <xsl:apply-templates select="st:quantifier"/>
+ </sequence>
+ </xsl:template>
+
+ <xsl:template match="st:quantifier" >
+ <xsl:apply-templates select="st:optional|st:one-or-more|st:zero-or-more|st:term"/>
+ </xsl:template>
+
+ <xsl:template match="st:optional" >
+ <optional>
+ <xsl:apply-templates select="st:term"/>
+ </optional>
+ </xsl:template>
+
+ <xsl:template match="st:one-or-more">
+ <one-or-more>
+ <xsl:apply-templates select="st:term"/>
+ </one-or-more>
+ </xsl:template>
+
+ <xsl:template match="st:zero-or-more">
+ <zero-or-more>
+ <xsl:apply-templates select="st:term"/>
+ </zero-or-more>
+ </xsl:template>
+
+<!-- <xsl:template match="st:regexvar">
+ <xsl:choose>
+ <xsl:when test="count(st:regexmultiplicator/st:string)=2">
+ <concat>
+ <xsl:attribute name="minOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string[1])"/></xsl:attribute>
+ <xsl:attribute name="maxOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string[2])"/></xsl:attribute>
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:when>
+ <xsl:otherwise>
+ <concat>
+ <xsl:attribute name="minOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string)"/></xsl:attribute>
+ <xsl:attribute name="maxOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string)"/></xsl:attribute>
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>-->
+
+ <xsl:template match="st:term">
+ <xsl:apply-templates select="st:class|st:nested|st:string|st:element|st:dot"/>
+ </xsl:template>
+
+ <xsl:template match="st:nested">
+ <xsl:apply-templates select="st:choice|st:sequence|st:quantifier"/>
+ </xsl:template>
+
+ <xsl:template match="st:dot">
+ <class exclusive="true">
+ <char value="#10"/>
+ <char value="#13"/>
+ </class>
+ </xsl:template>
+
+<!-- <xsl:template match="st:regexabref">
+ <xsl:variable name="ref" select="translate(normalize-space(st:string), ' ', '')"/>
+ <xsl:apply-templates select="/st:output/st:grammar/st:token_decls/st:ab_decl[st:id=$ref]/st:output/st:regexexpression"/>
+ </xsl:template>-->
+
+ <xsl:template match="st:string">
+ <xsl:choose>
+ <xsl:when test="count(st:char|st:masked-char)>1">
+ <sequence>
+ <xsl:apply-templates select="st:char|st:masked-char"/>
+ </sequence>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="st:char|st:masked-char"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:class">
+ <class>
+ <xsl:if test="st:exclusive">
+ <xsl:attribute name="exclusive">true</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="st:interval|st:class-char|st:masked-char"/>
+ </class>
+ </xsl:template>
+
+ <xsl:template match="st:class-char">
+ <char value="{.}"/>
+ </xsl:template>
+
+ <xsl:template match="st:masked-char">
+ <char>
+ <xsl:choose>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'n'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>-->
+ <xsl:attribute name="value">#10</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'r'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>-->
+ <xsl:attribute name="value">#13</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 't'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes">	</xsl:text></xsl:attribute>-->
+ <xsl:attribute name="value">#9</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'u'">
+ <xsl:attribute name="value">#<xsl:value-of select="substring(translate(normalize-space(.), ' ', ''),3,6)"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains(.,'\ ')">
+ <xsl:attribute name="value"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="value"><xsl:value-of select="substring(translate(normalize-space(.), ' ', ''), 2,1)"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </char>
+ </xsl:template>
+
+ <xsl:template match="st:char">
+ <char value="{.}"/>
+ </xsl:template>
+
+ <xsl:template match="st:interval">
+ <interval>
+ <xsl:apply-templates select="st:class-char|st:masked-char"/>
+ </interval>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2html.xsl
new file mode 100644
index 0000000..0d3a95e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2html.xsl
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+
+<!-- CVS $Id: error2html.xsl,v 1.1 2004/01/20 15:23:58 stephan Exp $ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexer/2.0">
+
+ <xsl:param name="contextPath"/>
+
+ <!-- let sitemap override default page title -->
+ <xsl:param name="pageTitle" select="//parse-exception/message"/>
+
+ <xsl:template match="parse-exception">
+ <html>
+ <head>
+ <title>
+ <xsl:value-of select="$pageTitle"/>
+ </title>
+ <link href="{$contextPath}/styles/main.css" type="text/css" rel="stylesheet"/>
+ <style>
+ h1 { color: #336699; text-align: left; margin: 0px 0px 30px 0px; padding: 0px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #336699;}
+ p.message { padding: 10px 30px 10px 30px; font-weight: bold; font-size: 130%; border-width: 1px; border-style: dashed; border-color: #336699; }
+ p.description { padding: 10px 30px 20px 30px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #336699;}
+ p.topped { padding-top: 10px; border-width: 1px 0px 0px 0px; border-style: solid; border-color: #336699; }
+ pre { font-size: 120%; }
+ table { margin: 0px; border: 0px; padding: 0px; }
+ tr { margin: 0px; border: 0px; padding: 0px; }
+ td { margin: 0px; border: 0px; padding: 0px; }
+ span.lt { background-color: #e5ffe5; margin: 0px; border: 0px; padding: 0px; }
+ span.eq { background-color: #ff0000; margin: 0px; border: 0px; padding: 0px; }
+ span.gt { background-color: #ffe5e5; margin: 0px; border: 0px; padding: 0px; }
+ </style>
+ </head>
+ <body>
+ <h1>Error</h1>
+
+ <p class="message">
+ <xsl:value-of select="message"/>
+ </p>
+
+ <p class="topped"/>
+
+ <p class="extra"><span class="description">column </span><xsl:value-of select="@column-number"/></p>
+ <p class="extra"><span class="description">line </span><xsl:value-of select="@line-number"/></p>
+ <xsl:if test="source">
+ <p class="extra"><span class="description">source </span><xsl:value-of select="source/@ref"/></p>
+ </xsl:if>
+
+ <xsl:apply-templates select="source"/>
+
+ <p class="topped">
+ For more detailed technical information, take a look at the log
+ files in the log directory of Cocoon, which is placed by default in
+ the <code>WEB-INF/logs/</code> folder of your cocoon webapp context.<br/>
+ If the logs don't give you enough information, you might want to increase the
+ log level by changing the Logging configuration which is by default the
+ <code>WEB-INF/logkit.xconf</code> file.
+ </p>
+
+ <p>
+ If you think you found a bug, please report it to
+ <a href="http://nagoya.apache.org/bugzilla/">Apache's Bugzilla</a>;
+ a message will automatically be sent to the developer mailing list and you'll
+ be kept in contact automatically with the further progress on that bug.
+ </p>
+
+ <p>
+ Thanks, and sorry for the trouble if this is our fault.
+ </p>
+
+ <p class="topped">
+ The <a href="http://cocoon.apache.org/">Apache Cocoon</a> Project
+ </p>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="source">
+ <xsl:variable name="line-number" select="number(../@line-number)"/>
+
+ <p class="topped">
+ <pre>
+ <xsl:apply-templates select="lex:output/lex:lexeme[(number(@line) < $line-number) and (number(@line) > number($line-number - 10))]" mode="lt"/>
+ <xsl:apply-templates select="lex:output/lex:lexeme[number(@line) = $line-number]" mode="eq"/>
+ <xsl:apply-templates select="lex:output/lex:lexeme[(number(@line) > $line-number) and (number(@line) < number($line-number + 10))]" mode="gt"/>
+ </pre>
+ </p>
+
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="lt">
+ <xsl:value-of select="@line"/> : <span class="lt"><xsl:value-of select="@text"/></span>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="eq">
+ <xsl:variable name="column-number" select="number(../../../@column-number)"/>
+ <xsl:value-of select="@line"/> : <span class="lt"><xsl:value-of select="substring(@text, 1, $column-number - 1)"/></span>
+ <span class="eq"><xsl:value-of select="substring(@text, $column-number, 1)"/></span>
+ <span class="gt"><xsl:value-of select="substring(@text, $column-number + 1, string-length(@text) - $column-number)"/></span>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="gt">
+ <xsl:value-of select="@line"/> : <span class="gt"><xsl:value-of select="@text"/></span>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2page.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2page.xsl
new file mode 100644
index 0000000..1708b17
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error2page.xsl
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+
+<!-- CVS $Id: error2page.xsl,v 1.1 2004/01/20 15:23:58 stephan Exp $ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexer/2.0"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+
+ <xsl:param name="contextPath"/>
+
+ <!-- let sitemap override default page title -->
+ <xsl:param name="pageTitle" select="//parse-exception/message"/>
+
+ <xsl:template match="header">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ <style href="error.css"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="st:output[st:error]">
+ <row>
+ <column title="{st:error/@message}">
+
+ <p class="extra"><span class="description">column </span><xsl:value-of select="st:error/@column"/></p>
+ <p class="extra"><span class="description">line </span><xsl:value-of select="st:error/@line"/></p>
+ <xsl:if test="source">
+ <p class="extra"><span class="description">source </span><xsl:value-of select="@source"/></p>
+ </xsl:if>
+
+ <xsl:apply-templates select="st:error"/>
+
+ </column>
+ </row>
+ </xsl:template>
+
+ <xsl:template match="st:error">
+ <xsl:variable name="line" select="number(@line)"/>
+
+ <p class="topped">
+ <pre class="error">
+ <xsl:apply-templates select="lex:output/lex:lexeme[(number(@line) < $line) and (number(@line) > number($line - 10))]" mode="lt"/>
+ <xsl:apply-templates select="lex:output/lex:lexeme[number(@line) = $line]" mode="eq"/>
+ <xsl:apply-templates select="lex:output/lex:lexeme[(number(@line) > $line) and (number(@line) < number($line + 10))]" mode="gt"/>
+ </pre>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="lt">
+ <xsl:value-of select="@line"/> : <span class="lt"><xsl:value-of select="@text"/></span>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="eq">
+ <xsl:variable name="column" select="number(../../@column)"/>
+ <xsl:value-of select="@line"/> : <span class="lt"><xsl:value-of select="substring(@text, 1, $column - 1)"/></span>
+ <span class="eq"><xsl:value-of select="substring(@text, $column, 1)"/></span>
+ <span class="gt"><xsl:value-of select="substring(@text, $column + 1, string-length(@text) - $column)"/></span>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme" mode="gt">
+ <xsl:value-of select="@line"/> : <span class="gt"><xsl:value-of select="@text"/></span>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error4wiki.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error4wiki.xsl
new file mode 100644
index 0000000..7cfc018
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/error4wiki.xsl
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+
+ <xsl:template match="st:output/st:error">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <text:text source="{../@source}" line="1" column="1"><xsl:value-of select="."/></text:text>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xgrm.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xgrm.xsl
new file mode 100644
index 0000000..af07ca2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xgrm.xsl
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0"
+ exclude-result-prefixes="st text">
+
+ <xsl:output indent="yes" method="xml" encoding="ASCII"/>
+
+ <xsl:template match="st:output/st:grammar" >
+ <grammar><xsl:comment>This file was generated! Don't edit!</xsl:comment>
+ <priority>
+ <xsl:apply-templates select="st:token_decls/st:token_decl" mode="priority"/>
+ </priority>
+ <xsl:apply-templates select="st:token_decls/st:token_decl" mode="associativity"/>
+ <xsl:apply-templates select="st:production_decls"/>
+ <xsl:apply-templates select="st:token_decls/st:start_decl"/>
+ </grammar>
+ </xsl:template>
+
+ <xsl:template match="st:token_decl" mode="priority">
+ <terminal symbol="{st:id}"/>
+ </xsl:template>
+
+ <xsl:template match="st:token_decl" mode="associativity">
+ <xsl:if test="st:token_decl = '%left'">
+ <associativity symbol="{st:id}" type="left"/>
+ </xsl:if>
+ <xsl:if test="st:token_decl = '%right'">
+ <associativity symbol="{st:id}" type="right"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="st:production_decls" >
+ <xsl:for-each select="st:production_decl/st:production_defs/st:production_def">
+ <production>
+ <xsl:attribute name="symbol"><xsl:value-of select="../../st:id"/></xsl:attribute>
+
+ <xsl:if test="st:prec_decl">
+ <xsl:attribute name="precedence"><xsl:value-of select="st:prec_decl/st:id"/></xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates select="st:ids/st:id"/>
+ </production>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="st:id" >
+ <xsl:variable name="symbol" select="text()"/>
+ <xsl:choose>
+ <xsl:when test="/st:output/st:grammar/st:token_decls/st:token_decl/st:id[.=$symbol]">
+ <terminal symbol="{.}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <nonterminal symbol="{.}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:start_decl" >
+ <start symbol="{st:id}"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xlex.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xlex.xsl
new file mode 100644
index 0000000..345cc5a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/grm2xlex.xsl
@@ -0,0 +1,233 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0"
+ exclude-result-prefixes="st text">
+
+ <xsl:output indent="yes" method="xml" encoding="ASCII"/>
+
+ <xsl:template match="st:output/st:grammar" >
+ <lexicon><xsl:comment>This file was generated! Don't edit!</xsl:comment>
+ <xsl:apply-templates select="st:token_decls/st:token_decl | st:token_decls/st:ignorabletoken_decl"/>
+ </lexicon>
+ </xsl:template>
+
+ <xsl:template match="st:token_decl" >
+ <lexeme symbol="{st:id}">
+ <xsl:if test="st:token_decl = '%left'">
+ <xsl:attribute name="assoc">left</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="st:token_decl = '%right'">
+ <xsl:attribute name="assoc">right</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="st:output/st:regexexpression"/>
+ </lexeme>
+ </xsl:template>
+
+ <xsl:template match="st:ignorabletoken_decl" >
+ <lexeme>
+ <xsl:apply-templates select="st:output/st:regexexpression"/>
+ </lexeme>
+ </xsl:template>
+
+ <xsl:template match="st:regexexpression" >
+ <xsl:apply-templates select="st:regexalternation"/>
+ </xsl:template>
+
+ <xsl:template match="st:regexalternation" >
+ <xsl:choose>
+ <xsl:when test="count(st:regexconcatenation)>1">
+ <alt>
+ <xsl:apply-templates select="st:regexconcatenation"/>
+ </alt>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="st:regexconcatenation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:regexconcatenation" >
+ <xsl:choose>
+ <xsl:when test="count(st:regexquantifier)>1">
+ <concat>
+ <xsl:apply-templates select="st:regexquantifier"/>
+ </concat>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="st:regexquantifier"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:regexquantifier" >
+ <xsl:apply-templates select="st:regexoptional|st:regexstar|st:regexplus|st:regexterm|st:regexvar"/>
+ </xsl:template>
+
+ <xsl:template match="st:regexoptional" >
+ <concat minOccurs="0" maxOccurs="1">
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:template>
+
+ <xsl:template match="st:regexstar" >
+ <concat minOccurs="0" maxOccurs="*">
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:template>
+
+ <xsl:template match="st:regexplus" >
+ <concat minOccurs="1" maxOccurs="*">
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:template>
+
+ <xsl:template match="st:regexvar">
+ <xsl:choose>
+ <xsl:when test="count(st:regexmultiplicator/st:string)=2">
+ <concat>
+ <xsl:attribute name="minOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string[1])"/></xsl:attribute>
+ <xsl:attribute name="maxOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string[2])"/></xsl:attribute>
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:when>
+ <xsl:otherwise>
+ <concat>
+ <xsl:attribute name="minOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string)"/></xsl:attribute>
+ <xsl:attribute name="maxOccurs"><xsl:value-of select="normalize-space(st:regexmultiplicator/st:string)"/></xsl:attribute>
+ <xsl:apply-templates select="st:regexterm"/>
+ </concat>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:regexterm">
+ <xsl:apply-templates select="st:characterclass|st:exclusivecharacterclass|st:regexklammer|st:string|st:maskedcharacter|st:regexdot|st:regexbol|st:regexabref"/>
+ </xsl:template>
+
+ <xsl:template match="st:regexklammer">
+ <xsl:apply-templates select="st:regexalternation"/>
+ </xsl:template>
+
+ <xsl:template match="st:regexdot">
+ <cclass exclusive="true">
+ <!--<cset content=" "/>-->
+ <cset code="10"/>
+ <cset code="13"/>
+ </cclass>
+ </xsl:template>
+
+ <xsl:template match="st:regexbol">
+ <bol/>
+ </xsl:template>
+
+ <xsl:template match="st:regexeol">
+ <eol/>
+ </xsl:template>
+
+ <xsl:template match="st:regexabref">
+ <xsl:variable name="ref" select="translate(normalize-space(st:string), ' ', '')"/>
+ <xsl:apply-templates select="/st:output/st:grammar/st:token_decls/st:ab_decl[st:id=$ref]/st:output/st:regexexpression"/>
+ </xsl:template>
+
+ <xsl:template match="st:string" mode="name">
+ <xsl:for-each select="st:character"><xsl:value-of select="normalize-space(.)"/></xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="st:string">
+ <cstring>
+ <xsl:attribute name="content"><xsl:apply-templates select="st:character" mode="string"/></xsl:attribute>
+ </cstring>
+ </xsl:template>
+
+ <xsl:template match="st:characterclass">
+ <cclass>
+ <xsl:apply-templates select="st:sequence"/>
+ </cclass>
+ </xsl:template>
+
+ <xsl:template match="st:exclusivecharacterclass" >
+ <cclass exclusive="true">
+ <xsl:apply-templates select="st:sequence"/>
+ </cclass>
+ </xsl:template>
+
+ <xsl:template match="st:sequence">
+ <xsl:apply-templates select="st:character|st:maskedcharacter|st:intervall" mode="cclass"/>
+ </xsl:template>
+
+ <xsl:template match="st:character" mode="cclass">
+ <cset>
+ <xsl:attribute name="content"><xsl:value-of select="translate(normalize-space(.), ' ', '')"/></xsl:attribute>
+ </cset>
+ </xsl:template>
+
+ <xsl:template match="st:maskedcharacter" mode="cclass">
+ <cset>
+ <xsl:choose>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'n'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>-->
+ <xsl:attribute name="code">10</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'r'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>-->
+ <xsl:attribute name="code">13</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 't'">
+<!-- <xsl:attribute name="content"><xsl:text disable-output-escaping="yes">	</xsl:text></xsl:attribute>-->
+ <xsl:attribute name="code">9</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'u'">
+ <xsl:attribute name="code">#<xsl:value-of select="substring(translate(normalize-space(.), ' ', ''),2,6)"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains(.,'\ ')">
+ <xsl:attribute name="content"><xsl:text disable-output-escaping="yes"> </xsl:text></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="content"><xsl:value-of select="substring(translate(normalize-space(.), ' ', ''), 2,1)"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </cset>
+ </xsl:template>
+
+ <xsl:template match="st:character" mode="string">
+ <xsl:value-of select="translate(normalize-space(.), ' ', '')"/>
+ </xsl:template>
+
+ <xsl:template match="st:maskedcharacter">
+ <xsl:choose>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'n'">
+ <!--<xsl:text disable-output-escaping="yes"> </xsl:text>-->
+ <cstring code="10"/>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'r'">
+ <!--<xsl:text disable-output-escaping="yes"> </xsl:text>-->
+ <cstring code="13"/>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 't'">
+ <!--<xsl:text disable-output-escaping="yes">	</xsl:text>-->
+ <cstring code="9"/>
+ </xsl:when>
+ <xsl:when test="substring(translate(normalize-space(.), ' ', ''), 2,1) = 'u'">
+ <cstring code="#{substring(translate(normalize-space(.), ' ', ''), 2,6)}"/>
+ </xsl:when>
+ <xsl:when test="contains(.,'\ ')">
+ <!--<xsl:text disable-output-escaping="yes"> </xsl:text>-->
+ <cstring content=" "/>
+ </xsl:when>
+ <xsl:otherwise>
+ <cstring content="{substring(translate(normalize-space(.), ' ', ''),2,1)}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:intervall" mode="cclass">
+ <cinterval>
+ <xsl:attribute name="min"><xsl:value-of select="st:character[1]"/></xsl:attribute>
+ <xsl:attribute name="max"><xsl:value-of select="st:character[2]"/></xsl:attribute>
+ </cinterval>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/java2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/java2html.xsl
new file mode 100644
index 0000000..320ae61
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/java2html.xsl
@@ -0,0 +1,440 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexer/2.0">
+
+ <xsl:output indent="no"/>
+
+ <xsl:param name="package"/>
+ <xsl:param name="class"/>
+
+ <xsl:param name="prefix">cocoon/samples/chaperon/</xsl:param>
+
+ <xsl:template match="/lex:output">
+ <document>
+ <header>
+ <title>Java2HTML example</title>
+ <style href="java.css"/>
+ </header>
+ <body>
+ <row>
+ <column title="Source file: {$class}">
+ <pre class="srcLine"><xsl:apply-templates select="lex:lexeme"/></pre>
+ </column>
+ </row>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="package">
+ <a href="/{$prefix}{translate(@full,'.','/')}/index.html"><xsl:value-of select="@full"/></a><br/>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <a href="/{$prefix}{translate(@full,'.','/')}.java.html"><xsl:value-of select="@name"/></a><br/>
+ </xsl:template>
+
+ <xsl:template name="linenumber">
+ <xsl:param name="nr">1</xsl:param>
+ <xsl:param name="max">1</xsl:param> <xsl:value-of select="$nr"/><xsl:text>
+</xsl:text><xsl:if test="$nr <= $max">
+ <xsl:call-template name="linenumber">
+ <xsl:with-param name="nr" select="$nr + 1"/>
+ <xsl:with-param name="max" select="$max"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='ABSTRACT']">
+ <font class="ABSTRACT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BOOLEAN']">
+ <font class="BOOLEAN"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BREAK']">
+ <font class="BREAK"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BYTE']">
+ <font class="BYTE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CASE']">
+ <font class="CASE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CATCH']">
+ <font class="CATCH"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CHAR']">
+ <font class="CHAR"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CLASS']">
+ <font class="CLASS"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CONST']">
+ <font class="CONST"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CONTINUE']">
+ <font class="CONTINUE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DEFAULT']">
+ <font class="DEFAULT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DO']">
+ <font class="DO"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DOUBLE']">
+ <font class="DOUBLE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='ELSE']">
+ <font class="ELSE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='EXTENDS']">
+ <font class="EXTENDS"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='FALSE']">
+ <font class="FALSE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='FINAL']">
+ <font class="FINAL"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='FINALLY']">
+ <font class="FINALLY"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='FLOAT']">
+ <font class="FLOAT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='FOR']">
+ <font class="FOR"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='GOTO']">
+ <font class="GOTO"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='IF']">
+ <font class="IF"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='IMPLEMENTS']">
+ <font class="IMPLEMENTS"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='IMPORT']">
+ <font class="IMPORT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='INSTANCEOF']">
+ <font class="INSTANCEOF"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='INT']">
+ <font class="INT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='INTERFACE']">
+ <font class="INTERFACE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='LONG']">
+ <font class="LONG"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='NATIVE']">
+ <font class="NATIVE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='NEW']">
+ <font class="NEW"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PACKAGE']">
+ <font class="PACKAGE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PRIVATE']">
+ <font class="PRIVATE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PROTECTED']">
+ <font class="PROTECTED"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PUBLIC']">
+ <font class="PUBLIC"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='RETURN']">
+ <font class="RETURN"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SHORT']">
+ <font class="SHORT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='STATIC']">
+ <font class="STATIC"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SUPER']">
+ <font class="SUPER"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SWITCH']">
+ <font class="SWITCH"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SYCHRONIZED']">
+ <font class="SYCHRONIZED"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='THIS']">
+ <font class="THIS"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='THROW']">
+ <font class="THROW"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='THROWS']">
+ <font class="THROWS"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TRANSIENT']">
+ <font class="TRANSIENT"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TRUE']">
+ <font class="TRUE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TRY']">
+ <font class="TRY"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='VOID']">
+ <font class="VOID"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='VOLATILE']">
+ <font class="VOLATILE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='WHILE']">
+ <font class="WHILE"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='LITERAL']">
+ <font class="LITERAL"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='IDENTIFIER']">
+ <font class="IDENTIFIER"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DOPEN']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DCLOSE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='COPEN']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='CCLOSE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BOPEN']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BCLOSE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SEMICOLON']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='COMMA']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DOT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_EQ']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_LE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_GE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_NE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_LOR']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_LAND']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_INC']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_DEC']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_SHR']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_SHL']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OP_SHRR']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='ASS_OP']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='EQ']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='GT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='LT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='NOT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TILDE']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='QM']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='COLON']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PLUS']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='MINUS']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='MULT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='DIV']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='AND']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='OR']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='XOR']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='MOD']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='BOOLLIT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='EOL']">
+ <xsl:text>
+ </xsl:text>
+<!-- <br/>-->
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SPACES']"><xsl:value-of select="@text"/></xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TAB']">
+ <xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='JAVADOC']">
+ <font class="MultiLineComment">/*<xsl:apply-templates select="lex:output/*"/>/</font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='MULTILINECOMMENT']">
+ <font class="MultiLineComment"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SINGLEMULTILINECOMMENT']">
+ <font class="MultiLineComment"><xsl:value-of select="@text"/></font>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='ASTERISK']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TEXT']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TAG']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='PROPERTYNAME']">
+ <xsl:value-of select="@text"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/mathexp2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/mathexp2html.xsl
new file mode 100644
index 0000000..60e8fea
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/mathexp2html.xsl
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ version="1.0">
+
+ <xsl:template match="st:output">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="st:E">
+ <xsl:choose>
+ <xsl:when test="count(*)">
+ <table bgcolor="#a0ffff" cellspacing="1">
+ <tr>
+ <xsl:for-each select="child::node()">
+ <td>
+ <xsl:apply-templates select="."/>
+ </td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:F">
+ <xsl:choose>
+ <xsl:when test="count(*)">
+ <table bgcolor="#ffffa0" cellspacing="1">
+ <tr>
+ <xsl:for-each select="child::node()">
+ <td>
+ <xsl:apply-templates select="."/>
+ </td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:T">
+ <xsl:choose>
+ <xsl:when test="count(*)">
+ <table bgcolor="#ffa0ff" cellspacing="1">
+ <tr>
+ <xsl:for-each select="child::node()">
+ <td>
+ <xsl:apply-templates select="."/>
+ </td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:number|st:id|st:plus|st:mult|st:dopen|st:dclose">
+ <font size="3">
+ <xsl:value-of select="."/>
+ </font>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/pattern2link.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/pattern2link.xsl
new file mode 100644
index 0000000..66cd94b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/pattern2link.xsl
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexemes/2.0">
+
+ <xsl:template match="lex:lexeme[@symbol='link']">
+ <a href="{@text}">
+ <xsl:value-of select="@text"/>
+ </a>
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='email']">
+ <a href="mailto:{@text}">
+ <xsl:value-of select="lex:group[2]"/> at
+ <xsl:value-of select="lex:group[3]"/>
+ </a>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/quote2page.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/quote2page.xsl
new file mode 100644
index 0000000..5038cd9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/quote2page.xsl
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ exclude-result-prefixes="st">
+
+ <xsl:template match="st:output">
+ <document>
+ <header>
+ <title>Chaperon examples</title>
+ <tab title="back" href="."/>
+ </header>
+ <body>
+ <section>
+ <title>CSV Example</title>
+
+ <table cellpadding="3" border="1">
+ <xsl:apply-templates select="st:document/st:rows/st:row[1]" mode="title"/>
+ <xsl:apply-templates select="st:document/st:rows/st:row[position()>1]"/>
+ </table>
+ </section>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="st:row" mode="title">
+ <tr>
+ <th>Line #</th>
+ <xsl:apply-templates select="st:column" mode="title"/>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:row">
+ <tr>
+ <td><xsl:value-of select="position()"/></td>
+ <xsl:apply-templates select="st:column"/>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:column" mode="title">
+ <th><xsl:value-of select="st:Value"/></th>
+ </xsl:template>
+
+ <xsl:template match="st:column">
+ <td><xsl:value-of select="st:Value"/></td>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/remove4class.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/remove4class.xsl
new file mode 100644
index 0000000..2091cfb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/remove4class.xsl
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexer/2.0">
+
+<!-- <xsl:template match="lex:lexeme[@symbol='JAVADOCCOMMENT']">
+ </xsl:template>-->
+
+ <xsl:template match="lex:lexeme[@symbol='MULTILINECOMMENT']">
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SINGLELINECOMMENT']">
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='WHITESPACE']">
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='EOL']">
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='SPACES']">
+ </xsl:template>
+
+ <xsl:template match="lex:lexeme[@symbol='TAB']">
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4error.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4error.xsl
new file mode 100644
index 0000000..231f9b7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4error.xsl
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0">
+
+ <xsl:template match="source">
+ <xsl:if test="string-length(.)>0">
+ <source ref="{.}">
+ <text:text source="{.}" line="1" column="1"><xi:include href="{.}" parse="text"/></text:text>
+ </source>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc.xsl
new file mode 100644
index 0000000..5bc515e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc.xsl
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:lex="http://chaperon.sourceforge.net/schema/lexer/2.0"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0">
+
+ <xsl:template match="lex:lexeme[@symbol='JAVADOC']">
+ <lex:lexeme symbol="JAVADOC">
+ <text:text><xsl:value-of select="substring(@text,3,string-length(@text)-3)"/></text:text>
+ </lex:lexeme>
+ </xsl:template>
+
+<!-- <xsl:template match="lex:lexeme[@symbol='MULTILINECOMMENT']">
+ <lex:lexeme symbol="MULTILINECOMMENT">
+ <text:text><xsl:value-of select="substring(@text,2,string-length(@text)-2)"/></text:text>
+ </lex:lexeme>
+ </xsl:template>-->
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc2.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc2.xsl
new file mode 100644
index 0000000..fbb5bfc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4javadoc2.xsl
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0">
+
+ <xsl:template match="st:JAVADOC">
+ <xsl:variable name="text"><xsl:value-of select="."/></xsl:variable>
+ <text:text>
+ <xsl:if test="//st:output/@source">
+ <xsl:attribute name="source"><xsl:value-of select="//st:output/@source"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@line">
+ <xsl:attribute name="line"><xsl:value-of select="@line"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@column">
+ <xsl:attribute name="column"><xsl:value-of select="number(@column) + 2"/></xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="substring($text,3,string-length($text)-3)"/>
+ </text:text>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4regex.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4regex.xsl
new file mode 100644
index 0000000..5c33392
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/text4regex.xsl
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+ exclude-result-prefixes="st">
+
+ <xsl:output encoding="ASCII"/>
+
+ <xsl:template match="st:string">
+ <text:text><xsl:value-of select="substring(.,2,string-length(.)-2)"/></text:text>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2html.xsl
new file mode 100644
index 0000000..45153b3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2html.xsl
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ xmlns="http://www.w3.org/1999/xhtml">
+
+ <xsl:output indent="yes" method="html"/>
+
+<!-- <xsl:template match="/">
+ <xsl:choose>
+ <xsl:when test="st:wiki">
+ <html>
+ <head>
+ <title>Wiki example</title>
+ </head>
+ <body>
+ <xsl:apply-templates select="st:wiki/st:paragraphs/st:paragraph"/>
+ </body>
+ </html>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>-->
+
+ <xsl:template match="//wiki">
+ <div style="background: #b9d3ee; border: thin; border-color: black; border-style: solid; padding-left: 0.8em;
+ padding-right: 0.8em; padding-top: 0px; padding-bottom: 0px; margin: 0.5ex 0px; clear: both;">
+ <xsl:apply-templates select="paragraphs/paragraph"/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="st:paragraph" >
+ <xsl:apply-templates select="st:bulletedlist|st:numberedlist1|st:numberedlist2|st:numberedlist3|st:headitem|st:footnote|st:textitem|st:LINE"/>
+ </xsl:template>
+
+ <xsl:template match="st:textitem" >
+ <p>
+ <xsl:apply-templates select="st:firstblock|st:textblock"/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="st:textblock" >
+ <xsl:apply-templates select="st:LINK|st:boldblock|st:italicblock|st:underlineblock|st:TEXT|st:note"/>
+ </xsl:template>
+
+ <xsl:template match="st:firstblock" >
+ <xsl:apply-templates select="st:LINK|st:boldblock|st:italicblock|st:underlineblock|st:TEXT"/>
+ </xsl:template>
+
+ <xsl:template match="st:LINE" >
+ <hr/>
+ </xsl:template>
+
+ <xsl:template match="st:bulletedlist" >
+ <ul>
+ <xsl:apply-templates select="st:bulletedlistitem"/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="st:bulletedlistitem" >
+ <li>
+ <xsl:apply-templates select="st:textblock"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist1" >
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem1|st:numberedlist2"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem1" >
+ <li>
+ <xsl:apply-templates select="st:textblock"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist2" >
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem2|st:numberedlist3"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem2" >
+ <li>
+ <xsl:apply-templates select="st:textblock"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist3" >
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem3"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem3" >
+ <li>
+ <xsl:apply-templates select="st:textblock"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:headitem" >
+ <xsl:choose>
+ <xsl:when test="string-length(st:HEAD)=2">
+ <h2>
+ <xsl:apply-templates select="st:textblock"/>
+ </h2>
+ </xsl:when>
+ <xsl:when test="string-length(st:HEAD)=3">
+ <h3>
+ <xsl:apply-templates select="st:textblock"/>
+ </h3>
+ </xsl:when>
+ <xsl:otherwise>
+ <h1>
+ <xsl:apply-templates select="st:textblock"/>
+ </h1>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:footnote" >
+ <a name="{normalize-space(st:note/st:TEXT|st:note/st:LINK)}">
+ [<xsl:apply-templates select="st:note/st:TEXT|st:note/st:LINK"/>]
+ <xsl:apply-templates select="st:textblock"/>
+ </a>
+ </xsl:template>
+
+ <xsl:template match="st:LINK" >
+ <a href="{normalize-space(.)}">
+ <xsl:value-of select="."/>
+ </a>
+ </xsl:template>
+
+ <xsl:template match="st:boldblock" >
+ <b>
+ <xsl:value-of select="st:TEXT"/>
+ </b>
+ </xsl:template>
+
+ <xsl:template match="st:italicblock" >
+ <i>
+ <xsl:value-of select="st:TEXT"/>
+ </i>
+ </xsl:template>
+
+ <xsl:template match="st:underlineblock" >
+ <u>
+ <xsl:value-of select="st:TEXT"/>
+ </u><xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="st:note" >
+ <a href="#{normalize-space(st:TEXT|st:LINK)}">
+ [<xsl:apply-templates select="st:TEXT|st:LINK"/>]
+ </a>
+ </xsl:template>
+
+ <xsl:template match="st:TEXT" >
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2xdoc.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2xdoc.xsl
new file mode 100644
index 0000000..1b9c915
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/wiki2xdoc.xsl
@@ -0,0 +1,226 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0"
+ exclude-result-prefixes="st">
+
+ <xsl:output indent="yes"
+ method="html"
+ doctype-public="-//APACHE//DTD Documentation V1.1//EN"
+ doctype-system="document-v11.dtd"
+ cdata-section-elements="source"/>
+
+ <xsl:template match="st:output">
+ <xsl:apply-templates select="st:document/st:paragraphs/st:paragraph/*" mode="paragraph"/>
+ <xsl:apply-templates select="st:document/st:section"/>
+ </xsl:template>
+
+ <xsl:template match="st:section">
+ <section>
+ <title><xsl:value-of select="st:title/st:textsequence"/></title>
+ <xsl:apply-templates select="st:paragraphs/st:paragraph/*|st:paragraphs/st:subsection" mode="paragraph"/>
+ </section>
+ </xsl:template>
+
+ <xsl:template match="st:subsection" mode="paragraph">
+ <section>
+ <title><xsl:value-of select="st:subtitle/st:textsequence"/></title>
+ <xsl:apply-templates select="st:subparagraphs/st:paragraph/*|st:subparagraphs/st:subsubsection" mode="paragraph"/>
+ </section>
+ </xsl:template>
+
+ <xsl:template match="st:subsubsection" mode="paragraph">
+ <section>
+ <title><xsl:value-of select="st:subsubtitle/st:textsequence"/></title>
+ <xsl:apply-templates select="st:subsubparagraphs/st:paragraph/*" mode="paragraph"/>
+ </section>
+ </xsl:template>
+
+ <xsl:template match="st:source" mode="paragraph">
+ <source>
+ <xsl:value-of select="substring(.,4,string-length(.)-6)"/>
+ </source>
+ </xsl:template>
+
+ <xsl:template match="st:textsequence" mode="paragraph">
+ <p>
+ <xsl:apply-templates select="st:textblock/*|st:break"/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="st:line" mode="paragraph">
+ <p>--------------------------------------------------------------------------------</p>
+ </xsl:template>
+
+ <xsl:template match="st:table" mode="paragraph">
+ <table>
+ <xsl:apply-templates select="st:tablehead|st:tablerows/st:tablecolumns"/>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="st:tablehead">
+ <tr>
+ <xsl:apply-templates select="st:tabletitle"/>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:tabletitle">
+ <th>
+ <xsl:apply-templates select="st:textblock/*"/>
+ </th>
+ </xsl:template>
+
+ <xsl:template match="st:tablecolumns">
+ <tr>
+ <xsl:apply-templates select="st:tablecolumn"/>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="st:tablecolumn">
+ <td>
+ <xsl:apply-templates select="st:textblock/*"/>
+ </td>
+ </xsl:template>
+
+ <xsl:template match="st:text">
+ <xsl:value-of select="."/><xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="st:break">
+ <br/>
+ </xsl:template>
+
+ <xsl:template match="st:link">
+ <xsl:choose>
+ <xsl:when test="contains(.,'|')">
+
+ <xsl:variable name="href" select="substring-before(substring-after(.,'|'),']')"/>
+ <xsl:variable name="text" select="substring-after(substring-before(.,'|'),'[')"/>
+
+ <xsl:choose>
+ <xsl:when test="string(number($href)) != 'NaN'">
+ <link href="#{$href}">
+ <xsl:value-of select="$text"/>
+ </link>
+ </xsl:when>
+ <xsl:when test="contains($href,':') or contains($href,'.')">
+ <link href="{$href}">
+ <xsl:value-of select="$text"/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <link href="view.do?page={$href}">
+ <xsl:value-of select="$text"/>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="href" select="substring(.,2,string-length(.)-2)"/>
+
+ <xsl:choose>
+ <xsl:when test="string(number($href)) != 'NaN'">
+ <link href="#{$href}">
+ [<xsl:value-of select="$href"/>]
+ </link>
+ </xsl:when>
+ <xsl:when test="contains($href,'.png') or contains($href,'.jpg') or contains($href,'.gif')">
+ <img src="{$href}" alt="{$href}"/>
+ </xsl:when>
+ <xsl:when test="contains($href,':') or contains($href,'.')">
+ <link href="{$href}">
+ <xsl:value-of select="$href"/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <link href="view.do?page={$href}">
+ <xsl:value-of select="$href"/>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:anchor" >
+ <xsl:choose>
+ <xsl:when test="contains(.,'|')">
+ <anchor name="{substring-before(substring-after(.,'|#'),']')}">
+ <xsl:value-of select="substring-after(substring-before(.,'|'),'[')"/>
+ </anchor>
+ </xsl:when>
+ <xsl:otherwise>
+ <anchor name="{substring(.,3,string-length(.)-3)}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="st:emblock">
+ <em><xsl:value-of select="st:text"/></em><xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="st:strongblock">
+ <strong><xsl:value-of select="st:text"/></strong><xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="st:codeblock">
+ <code><xsl:value-of select="st:text"/></code><xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="st:bulletedlist" mode="paragraph">
+ <ul>
+ <xsl:apply-templates select="st:bulletedlistitem"/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="st:bulletedlistitem" >
+ <li>
+ <xsl:apply-templates select="st:textsequence/st:textblock/*"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist1" mode="paragraph">
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem1|st:numberedlist2"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem1" >
+ <li>
+ <xsl:apply-templates select="st:textsequence/st:textblock/*"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist2" >
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem2|st:numberedlist3"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem2" >
+ <li>
+ <xsl:apply-templates select="st:textsequence/st:textblock/*"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlist3" >
+ <ol>
+ <xsl:apply-templates select="st:numberedlistitem3"/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="st:numberedlistitem3" >
+ <li>
+ <xsl:apply-templates select="st:textsequence/st:textblock/*"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/xdoc2html.xsl b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/xdoc2html.xsl
new file mode 100644
index 0000000..4740c61
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/stylesheets/xdoc2html.xsl
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:st="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+
+ <xsl:output indent="yes"
+ method="xml"/>
+
+ <xsl:template match="//document">
+<!-- <div style="background: #b9d3ee; border: thin; border-color: black; border-style: solid; padding-left: 0.8em;
+ padding-right: 0.8em; padding-top: 0px; padding-bottom: 0px; margin: 0.5ex 0px; clear: both;">-->
+ <p>
+ <xsl:apply-templates select="body/p|body/section"/>
+ </p>
+<!-- </div>-->
+ </xsl:template>
+
+ <xsl:template match="section">
+ <xsl:choose> <!-- stupid test for the hirachy deep -->
+ <xsl:when test="../../../section">
+ <h5><xsl:value-of select="title"/></h5>
+ </xsl:when>
+ <xsl:when test="../../section">
+ <h4><xsl:value-of select="title"/></h4>
+ </xsl:when>
+ <xsl:when test="../section">
+ <h3><xsl:value-of select="title"/></h3>
+ </xsl:when>
+ </xsl:choose>
+ <p>
+ <xsl:apply-templates select="*[name()!='title']"/>
+ </p>
+ </xsl:template>
+
+ <xsl:template match="source">
+ <div style="background: #b9d3ee; border: thin; border-color: black; border-style: solid; padding-left: 0.8em;
+ padding-right: 0.8em; padding-top: 0px; padding-bottom: 0px; margin: 0.5ex 0px; clear: both;">
+ <pre>
+ <xsl:value-of select="."/>
+ </pre>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="link">
+ <xsl:text> </xsl:text>
+ <a href="{@href}">
+ <xsl:apply-templates/>
+ </a>
+ <xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="strong">
+ <xsl:text> </xsl:text>
+ <b>
+ <xsl:apply-templates/>
+ </b>
+ <xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="anchor">
+ <a name="{@name}">
+ <xsl:apply-templates/>
+ </a>
+ </xsl:template>
+
+ <xsl:template match="table">
+ <table border="1" cellspacing="3" cellpadding="3">
+ <xsl:apply-templates/>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/broken.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/broken.txt
new file mode 100644
index 0000000..09710b0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/broken.txt
@@ -0,0 +1,7 @@
+!!! Boken page
+
+Here comes a text with __an inclomplete element.
+
+!!! Next section
+
+Stephan.
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/index.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/index.txt
new file mode 100644
index 0000000..435eed5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/index.txt
@@ -0,0 +1,16 @@
+!!! Introduction
+
+This is a little example how easy it is to write a wiki engine
+using the Chaperon parser and Apache Cocoon.
+
+Here are some example sites:
+* [Rule of the wiki|rules]
+* [Test document|selftest]
+* [Broken page|broken]
+* [New page|new]
+
+You can edit the page with the little "edit" under the Cocoon logo.
+
+Stephan Michels.
+
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/rules.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/rules.txt
new file mode 100644
index 0000000..7f83d7a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/rules.txt
@@ -0,0 +1,224 @@
+When you've figured out how the editor works, then you should read [WikiEtiquette] so that you would know how to use
+your newly acquired skills...
+
+!!!Quick reference
+
+{{{
+---- = Make a horizontal ruler. Extra '-' is ignored.
+\\ = force a line break, \\\=force line break and clear.
+
+[link] = creates a hyperlink to an internal WikiPage called 'Link'.
+[this is also a link] = creates a hyperlink to an internal WikiPage called
+'ThisIsAlsoALink'.
+[click here|link] = creates a hyperlink to an internal WikiPage called
+'Link', but displays the text 'click here' to the
+user instead of 'Link'.
+[1] = Makes a reference to a footnote numbered 1.
+[#1] = Marks the footnote number 1.
+[[link] = creates text '[link]'.
+
+!heading = small heading with text 'heading'
+!!heading = medium heading with text 'heading'
+!!!heading = large heading with text 'heading'
+
+''text'' = prints 'text' in italic.
+__text__ = prints 'text' in bold.
+{{text}} = prints 'text' in monospaced font.
+
+* text = makes a bulleted list item with 'text'
+# text = makes a numbered list item with 'text'
+;term:ex = makes a definition for 'term' with the explanation 'ex'
+}}}
+
+!!!Writing text
+
+You don't need to know anything about the Wiki text formatting rules to use Wiki. Just write normal text, and then use
+an empty line to mark a paragraph.
+It's just like writing an email.
+
+You can always Edit this page (look at the left sidebar) to see how the different
+effects on this page are used.
+
+!!!Hyperlinks
+The link can also be a direct URL starting with http:, ftp:, mailto:, https:, or news:, in which case the link points to
+an external entity. For example, to point at the java.sun.com home page, use [[http://java.sun.com], which becomes
+[http://java.sun.com/] or [[Java home page|http://java.sun.com], which becomes [Java home page|http://java.sun.com].
+
+To add a new page you just create a link to it from somewhere else. After all, there isn't much point in having a page
+if you can't access it! You'll then see a small question mark after the page name when you return to that page. Then
+click on it and you have created a new page!
+
+It's allowed to use almost any kind of characters inside a [WikiName], as long
+as they are letters or numbers.
+
+Note also that this Wiki can be configured to support standard CamelCase linking (if it's supported, the word CamelCase
+should be a link). It's off by default, but if your friendly administrator has turned it on, then well, CamelCase all
+you want =).
+
+!!!Footnotes
+
+These are a special kind of hyperlink. By using nothing but a number inside
+a hyperlink you create a reference to a footnote, like this [[1], which
+creates a footnote[1]. To make the actual footnote, you just put a [[#1]
+where you want that footnote to point at. Look below to find the footnote.
+
+You can also make a named footnote, just as if you were doing a normal hyperlink. For example, this refers to the same
+footnote[Footnote number 1|1] as the footnote above, but this refers to another footnote[2].
+
+!!!InterWiki links
+
+You can also do links between different Wikis without knowing the URL. Just use a link in the form [[Wiki:WikiPage] and
+JSPWiki will create a link for you. For example, this link points to the [JSPWiki TextFormatting
+rules|JSPWiki:TextFormattingRules]. Check the [SystemInfo] page for more information on which Wiki links are available.
+
+If an InterWiki link is not supported, you'll get a notification of it on the page when
+you save your page.
+
+!!!Adding pictures
+
+For security reasons uploading images is not permitted, but you can embed
+any image in the wiki code by putting the image available somewhere on the web in one of the allowed formats, and then
+just linking to it.
+For example, this is an inlined [PNG] image: [http://www.ecyrd.com/~jalkanen/test.png].
+
+If you specify a link text ([[this one here|http://example.com/example.png]) it becomes
+the ALT text for those who either can't or don't want to view images.
+
+The list of accepted image types depends on the Wiki. See the [SystemInfo]
+page for a list of the different image types.
+
+!!!Bulleted lists
+Use an asterisk (*) in the first column to make bulleted lists. Use more asterisks for deeper indentation. For example:
+{{{
+* One
+* Two
+* Three
+** Three.One}}}
+
+creates
+* One
+* Two
+* Three
+** Three.One
+
+!!!Numbered lists
+Just like with bulleted lists, but use a hash (#) instead of the asterisk. Like this:
+{{{
+# One
+# Two
+# Three
+## Three.One
+}}}
+
+creates
+# One
+# Two
+# Three
+## Three.One
+
+If you want to write the list item on multiple lines, just add one or more spaces on the next line and the line will be
+automatically added to the
+previous item. If this sounds complicated, edit this page for an example, below.
+
+* This is a single-line item.
+* This is actually a multi-line item.
+ We continue the second sentence on a line on a line of its own.
+ We might as well do a third line while we're at it...
+ Notice, however, as all these sentences get put inside a single item!
+* The third line is again a single-line item for your convinience.
+
+!!!Definition lists and comments
+
+A simple way to make definition lists is to use the ';:' -construct:
+
+;__Construct__:''Something you use to do something with''
+
+Another nice use for the ';:' is that you can use it to comment shortly on other people's text, by having an empty
+'term' in the definition, like this:
+{{{
+;:''Comment here.''
+}}}
+Which would be seen as
+;:''Comment here.''
+
+!!!Text effects
+
+You may use __bold__ text or ''italic'' text, by using two underscores (_) and two single quotes ('), respectively. If
+you're on a Windows computer, make sure that you are using the correct quote sign, as there is one that looks the same,
+but really isn't.
+
+
+!!!Preformatted text
+
+If you want to add preformatted text (like code) just use three consecutive braces ({) to open a block, and three
+consecutive braces (}) to close a block. Edit this page for an example.
+
+!!!Tables
+
+You can do simple tables by using using pipe signs ('|'). Use double pipe
+signs to start the heading of a table, and single pipe signs to then
+write the rows of the table. End with a line that is not a table.
+
+For example:
+
+{{{
+|| Heading 1 || Heading 2
+| ''Gobble'' | Bar
+| [Main] | [SandBox]
+}}}
+
+gives you the following table. Note how you can use links also inside tables.
+
+|| Heading 1 || Heading 2
+| ''Gobble'' | Bar
+| [Main] | [SandBox]
+
+
+!!!Conflicts
+
+If someone happens to edit the same page as you at the same time, JSPWiki will prevent you from doing changes and show a
+conflict page instead. Sorry to say, but the first one to make changes wins...
+
+__A word of warning:__ If you use the Back button of your browser to go into the Edit page, you will almost certainly
+get a conflict. This is because the browser thinks its still editing an earlier copy of the page.
+
+!!!Deleting pages
+
+This is not possible. You can, of course, remove all the links to that page, which makes it inaccesible. Or you can
+email the administrator, and I'll remove the page.
+
+!!!Adding new pages
+
+Create a link that points to a new (not existing) page using its [WikiName].
+Click that new link, which should now have a question mark (?) suffix and
+you will get an editor for the new page. -- [Asser]
+
+!!!Attaching files
+
+If the administrator of the wiki has configured it, there is a "Attach file..." link at the bottom of every page.
+Clicking it allows you to attach files into pages. For more information, please see [WikiAttachments].
+
+!!!Inserting variables
+
+There are many possible variables you can insert on a page. The basic form is:
+
+{{ [[{$variablename}], }}
+
+where ''variablename'' is the name of the variable you want to insert. Note that variable names are case-insensitive -
+that is, "pagename" is the same as "paGeNamE" and "PageName".
+
+You can see the list of available of variables at [WikiVariables].
+
+!!!Inserting plugins
+
+The basic incantation to insert a plugin looks like this:
+
+[[{INSERT <plugin class> WHERE param1=value, param2=value, ...}]
+
+There is more information in [JSPWikiPlugins].
+
+----
+
+[#1] Here's the footnote I mentioned.
+
+[The other footnote|#2] The other footnote. Note how it's name is different?
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/selftest.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/selftest.txt
new file mode 100644
index 0000000..304afd6
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/samples/wiki/selftest.txt
@@ -0,0 +1,114 @@
+This wiki document is a self-describing test of the Cocoon Chaperon wiki grammar. Reading what follows
+should tell you if the tests are successful.
+
+The page http://wiki.cocoondev.org/Wiki.jsp?page=ChaperonTestPage should be kept in sync with this so as
+to be able to compare the output of both, as the Chaperon wiki grammar is meant to emulate the JSPWiki syntax
+used by the Cocoon wiki.
+
+The "content", "parser-output" and "xdoc" views can be used to check the various stages of parsing and conversion.
+
+Lines like -- THIS TEXT -- are comments about this test, they must appear as is.
+
+-- 0. CURRENT RESULTS --
+
+This must be followed by a section title and a bullet list with some items.
+
+!!! KNOWN PROBLEMS
+Currently this test shows the following problems:
+
+* 0.1 This bullet list is invisible in the html output if there is no section title (3 bangs) before it
+* 1.1 Headings must be used in the usual order (big contains medium contains small), otherwise unpredictable results can occur due to the conversion from the linear wiki model to the nested xdocs model.
+* 5.1 relative link points to wiki.cocoondev.org (but is it by design?)
+
+-- 1.HEADINGS --
+
+Test 1.1 headings in the usual order (from big to small): below you should see 3 headings, big, medium, small:
+
+!!! big heading #1
+
+!! medium heading #1
+
+! small heading #1
+
+Test 1.2 same headings with text in-between
+
+!!! big heading #2
+Text after big heading.
+
+!! medium heading #2
+Text after medium heading.
+
+! small heading #2
+Text after small heading.
+
+!!! new big heading
+The above heading starts a new section in the xdocs version of this document.
+
+-- 2.NUMBERED LISTS --
+
+Test 2.1 This should be followed by a list that counts from one to four:
+# one
+# two
+# three
+#four
+
+-- 3.BULLET LISTS --
+
+Test 3.1 This should be followed by four bullet points:
+* Bullet one
+* Bullet two
+* Bullet three with a longer text, something like the quick brown fox stuff that you know and like
+* Bullet four
+
+Test 3.2 This should be followed by two bullet points with one line of text in between:
+
+* Bullet one, JSPWiki ends bullet at newline so this is the end.
+and this is not part of bullet one.
+* But this is bullet two.
+
+Test 3.3 This should be followed by 4 bullet points with no text in between them:
+
+* Bullet 3.3.1, adding some ''italic'' should not break the bullet point in two
+* Bullet 3.3.2, adding some __bold__ should not break the bullet point in two
+* Bullet 3.3.3, adding some {{monospaced}} should not break the bullet point in two
+* Bullet 3.3.4, adding some ''italic'', __bold__, and {{monospaced}} should not break the bullet point in two
+
+-- 4.TEXT ATTRIBUTES --
+
+Test 4.1 The words __bold__, ''italic'' and {{monospaced}} in this phrase should be displayed with the corresponding attributes.
+
+Test 4.2 In test 4.1 all words of the phrase should be followed by a space.
+
+Test 4.3 Same as 4.1 but words with attributes are repeated twice: __bold bold__, ''italic italic'' and {{monospaced monospaced}}.
+
+Test 4.4 The block of text that follows should be shown in the source code style:
+
+
+{{{
+ boolean didThisWork() {
+ return !failed();
+ }
+}}}
+
+-- 5.LINKS --
+
+Test 5.1 Here a link to this same page: [wikitest.html]
+
+Test 5.2 Link to cocoon.apache.org: [http://cocoon.apache.org]
+
+Test 5.3 A link to another wiki site [Text formating rules|rules].
+
+-- 6.MISCELLANEOUS --
+
+Test 6.1 This paragraph should be followed by a horizontal ruler line.
+----
+
+Test 6.2 There should be a line break between the words one and two that follow:
+
+ONE\\TWO.
+
+-- 7. TEXT RUNS --
+
+Test 7.1 In this paragraph all
+words should be
+followed by a single space.
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.java
new file mode 100644
index 0000000..2fd837a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.generation;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.HashMap;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.SitemapComponentTestCase;
+
+/**
+ *
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: TextGeneratorTestCase.java,v 1.5 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class TextGeneratorTestCase extends SitemapComponentTestCase {
+
+ public TextGeneratorTestCase(String name) {
+ super(name);
+ }
+
+ public void testTextGenerator1() throws Exception {
+ String src = "resource://org/apache/cocoon/generation/texttest-input1.txt";
+ Parameters parameters = new Parameters();
+ String result = "resource://org/apache/cocoon/generation/texttest-result1.xml";
+
+ assertEqual(load(result), generate("text", src, parameters));
+ }
+
+ public void testTextGenerator2() throws Exception {
+
+ String src = "resource://org/apache/cocoon/generation/texttest-input2.txt";
+ Parameters parameters = new Parameters();
+ String result = "resource://org/apache/cocoon/generation/texttest-result2.xml";
+
+ assertEqual(load(result), generate("text", src, parameters));
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.xtest b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.xtest
new file mode 100644
index 0000000..5c2cf1e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/TextGeneratorTestCase.xtest
@@ -0,0 +1,67 @@
+<?xml version="1.0" ?>
+<testcase>
+ <annotation>
+ Test Cases: TextGenerator
+ </annotation>
+
+ <logkit>
+ <factories>
+ <factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
+ </factories>
+ <targets>
+ <stream id="root">
+ <stream>System.out</stream>
+ <format type="extended">
+ %7.7{priority} %5.5{time} [%9.9{category}] (%{context}): %{message}\n%{throwable}
+ </format>
+ </stream>
+ </targets>
+ <categories>
+ <category name="test" log-level="WARN">
+ <log-target id-ref="root"/>
+ </category>
+ </categories>
+ </logkit>
+
+ <context/>
+
+ <roles>
+ <role name="org.apache.excalibur.xml.sax.SAXParser"
+ shorthand="xml-parser"
+ default-class="org.apache.excalibur.xml.impl.JaxpParser"/>
+
+ <role name="org.apache.excalibur.source.SourceFactorySelector"
+ shorthand="source-factories"
+ default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
+
+ <role name="org.apache.excalibur.source.SourceResolver"
+ shorthand="source-resolver"
+ default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <role name="org.apache.cocoon.generation.GeneratorSelector"
+ shorthand="generators"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+ </roles>
+
+ <components>
+ <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
+ <parameter name="validate" value="false"/>
+ <parameter name="namespace-prefixes" value="false"/>
+ <parameter name="stop-on-warning" value="true"/>
+ <parameter name="stop-on-recoverable-error" value="true"/>
+ <parameter name="reuse-parsers" value="false"/>
+ </xml-parser>
+
+ <source-factories>
+ <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
+ <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
+ </source-factories>
+
+ <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <generators>
+ <component-instance class="org.apache.cocoon.generation.TextGenerator" name="text"/>
+ </generators>
+ </components>
+
+</testcase>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input1.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input1.txt
new file mode 100644
index 0000000..b773d17
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input1.txt
@@ -0,0 +1 @@
+1.Row Text is a text is a text.
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input2.txt b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input2.txt
new file mode 100644
index 0000000..e81e8e0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-input2.txt
@@ -0,0 +1,2 @@
+1.Row Text is a text is a text.
+2.Row Test is a test is a test.
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result1.xml
new file mode 100644
index 0000000..b42c2d2
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">1.Row Text is a text is a text.</text>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result2.xml
new file mode 100644
index 0000000..8eb337b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/generation/texttest-result2.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">1.Row Text is a text is a text.
+2.Row Test is a test is a test.</text>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.java
new file mode 100644
index 0000000..03f1e4c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import java.util.HashMap;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.SitemapComponentTestCase;
+
+/**
+ *
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: LexicalTransformerTestCase.java,v 1.6 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class LexicalTransformerTestCase extends SitemapComponentTestCase {
+
+ public LexicalTransformerTestCase(String name) {
+ super(name);
+ }
+
+ public void testLexicalTransformer1() throws Exception {
+ String src = "resource://org/apache/cocoon/transformation/lexertest-lexicon1.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/lexertest-input1.xml";
+ String result = "resource://org/apache/cocoon/transformation/lexertest-result1.xml";
+
+ assertEqual(load(result), transform("lexer", src, parameters, load(input)));
+ }
+
+ public void testLexicalTransformer2() throws Exception {
+
+ String src = "resource://org/apache/cocoon/transformation/lexertest-lexicon2.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/lexertest-input2.xml";
+ String result = "resource://org/apache/cocoon/transformation/lexertest-result2.xml";
+
+ assertEqual(load(result), transform("lexer", src, parameters, load(input)));
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.xtest b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.xtest
new file mode 100644
index 0000000..c202bb3
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/LexicalTransformerTestCase.xtest
@@ -0,0 +1,85 @@
+<?xml version="1.0" ?>
+<testcase>
+ <annotation>
+ Test Cases: LexicalTransformer
+ </annotation>
+
+ <logkit>
+ <factories>
+ <factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
+ </factories>
+ <targets>
+ <stream id="root">
+ <stream>System.out</stream>
+ <format type="extended">
+ %7.7{priority} %5.5{time} [%9.9{category}] (%{context}): %{message}\n%{throwable}
+ </format>
+ </stream>
+ </targets>
+ <categories>
+ <category name="test" log-level="WARN">
+ <log-target id-ref="root"/>
+ </category>
+ </categories>
+ </logkit>
+
+ <context/>
+
+ <roles>
+ <role name="org.apache.excalibur.xml.sax.SAXParser"
+ shorthand="xml-parser"
+ default-class="org.apache.excalibur.xml.impl.JaxpParser"/>
+
+ <role name="org.apache.excalibur.xmlizer.XMLizer"
+ shorthand="xmlizer"
+ default-class="org.apache.excalibur.xmlizer.DefaultXMLizer"/>
+
+ <role name="org.apache.excalibur.source.SourceFactorySelector"
+ shorthand="source-factories"
+ default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
+
+ <role name="org.apache.excalibur.source.SourceResolver"
+ shorthand="source-resolver"
+ default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <role name="org.apache.cocoon.transformation.TransformerSelector"
+ shorthand="transformers"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+
+ <role name="org.apache.excalibur.store.Store/TransientStore"
+ shorthand="transient-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+
+ <role name="org.apache.excalibur.store.Store"
+ shorthand="persistent-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+ </roles>
+
+ <components>
+ <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
+ <parameter name="validate" value="false"/>
+ <parameter name="namespace-prefixes" value="false"/>
+ <parameter name="stop-on-warning" value="true"/>
+ <parameter name="stop-on-recoverable-error" value="true"/>
+ <parameter name="reuse-parsers" value="false"/>
+ </xml-parser>
+
+ <xmlizer/>
+
+ <transient-store/>
+
+ <persistent-store/>
+
+ <source-factories>
+ <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
+ <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
+ </source-factories>
+
+ <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <transformers>
+ <component-instance class="org.apache.cocoon.transformation.LexicalTransformer" name="lexer"/>
+ </transformers>
+ </components>
+
+</testcase>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.java
new file mode 100644
index 0000000..4d60dda
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import java.util.HashMap;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.SitemapComponentTestCase;
+
+/**
+ *
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: ParserTransformerTestCase.java,v 1.6 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class ParserTransformerTestCase extends SitemapComponentTestCase {
+
+ public ParserTransformerTestCase(String name) {
+ super(name);
+ }
+
+ public void testParserTransformer1() throws Exception {
+
+ String src = "resource://org/apache/cocoon/transformation/parsertest-grammar1.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/parsertest-input1.xml";
+ String result = "resource://org/apache/cocoon/transformation/parsertest-result1.xml";
+
+ assertEqual(load(result), transform("parser", src, parameters, load(input)));
+ }
+
+ public void testParserTransformer2() throws Exception {
+
+ String src = "resource://org/apache/cocoon/transformation/parsertest-grammar1.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/parsertest-input2.xml";
+ String result = "resource://org/apache/cocoon/transformation/parsertest-result2.xml";
+
+ assertEqual(load(result), transform("recovery-parser", src, parameters, load(input)));
+ }
+
+ /*public void testParserTransformer3() throws Exception {
+ String src = "resource://org/apache/cocoon/transformation/parsertest-grammar1.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/parsertest-input3.xml";
+ String result = "resource://org/apache/cocoon/transformation/parsertest-result3.xml";
+
+ assertEqual(load(result), transform("recovery-parser", src, parameters, load(input)));
+ }*/
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.xtest b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.xtest
new file mode 100644
index 0000000..d5a0fc7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/ParserTransformerTestCase.xtest
@@ -0,0 +1,90 @@
+<?xml version="1.0" ?>
+<testcase>
+ <annotation>
+ Test Cases: ParserTransformer
+ </annotation>
+
+ <logkit>
+ <factories>
+ <factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
+ </factories>
+ <targets>
+ <stream id="root">
+ <stream>System.out</stream>
+ <format type="extended">
+ %7.7{priority} %5.5{time} [%9.9{category}] (%{context}): %{message}\n%{throwable}
+ </format>
+ </stream>
+ </targets>
+ <categories>
+ <category name="test" log-level="WARN">
+ <log-target id-ref="root"/>
+ </category>
+ </categories>
+ </logkit>
+
+ <context/>
+
+ <roles>
+ <role name="org.apache.excalibur.xml.sax.SAXParser"
+ shorthand="xml-parser"
+ default-class="org.apache.excalibur.xml.impl.JaxpParser"/>
+
+ <role name="org.apache.excalibur.xmlizer.XMLizer"
+ shorthand="xmlizer"
+ default-class="org.apache.excalibur.xmlizer.DefaultXMLizer"/>
+
+ <role name="org.apache.excalibur.source.SourceFactorySelector"
+ shorthand="source-factories"
+ default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
+
+ <role name="org.apache.excalibur.source.SourceResolver"
+ shorthand="source-resolver"
+ default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <role name="org.apache.cocoon.transformation.TransformerSelector"
+ shorthand="transformers"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+
+ <role name="org.apache.excalibur.store.Store/TransientStore"
+ shorthand="transient-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+
+ <role name="org.apache.excalibur.store.Store"
+ shorthand="persistent-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+ </roles>
+
+ <components>
+ <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
+ <parameter name="validate" value="false"/>
+ <parameter name="namespace-prefixes" value="false"/>
+ <parameter name="stop-on-warning" value="true"/>
+ <parameter name="stop-on-recoverable-error" value="true"/>
+ <parameter name="reuse-parsers" value="false"/>
+ </xml-parser>
+
+ <xmlizer/>
+
+ <transient-store/>
+
+ <persistent-store/>
+
+ <source-factories>
+ <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
+ <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
+ </source-factories>
+
+ <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <transformers logger="test">
+ <component-instance class="org.apache.cocoon.transformation.ParserTransformer"
+ name="parser"/>
+ <component-instance class="org.apache.cocoon.transformation.ParserTransformer"
+ name="recovery-parser">
+ <parameter name="recovery" value="true"/>
+ </component-instance>
+ </transformers>
+ </components>
+
+</testcase>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.java b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.java
new file mode 100644
index 0000000..7f4f9f0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.transformation;
+
+import java.util.HashMap;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.SitemapComponentTestCase;
+
+/**
+ *
+ *
+ * @author <a href="mailto:stephan@apache.org">Stephan Michels </a>
+ * @version CVS $Id: PatternTransformerTestCase.java,v 1.5 2004/03/05 13:01:48 bdelacretaz Exp $
+ */
+public class PatternTransformerTestCase extends SitemapComponentTestCase {
+
+ public PatternTransformerTestCase(String name) {
+ super(name);
+ }
+
+ public void testPatternTransformer() throws Exception {
+
+ String src = "resource://org/apache/cocoon/transformation/patterntest-lexicon1.xml";
+ Parameters parameters = new Parameters();
+ String input = "resource://org/apache/cocoon/transformation/patterntest-input1.xml";
+ String result = "resource://org/apache/cocoon/transformation/patterntest-result1.xml";
+
+ assertEqual(load(result), transform("pattern", src, parameters, load(input)));
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.xtest b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.xtest
new file mode 100644
index 0000000..9335f94
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/PatternTransformerTestCase.xtest
@@ -0,0 +1,85 @@
+<?xml version="1.0" ?>
+<testcase>
+ <annotation>
+ Test Cases: PatternTransformer
+ </annotation>
+
+ <logkit>
+ <factories>
+ <factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
+ </factories>
+ <targets>
+ <stream id="root">
+ <stream>System.out</stream>
+ <format type="extended">
+ %7.7{priority} %5.5{time} [%9.9{category}] (%{context}): %{message}\n%{throwable}
+ </format>
+ </stream>
+ </targets>
+ <categories>
+ <category name="test" log-level="WARN">
+ <log-target id-ref="root"/>
+ </category>
+ </categories>
+ </logkit>
+
+ <context/>
+
+ <roles>
+ <role name="org.apache.excalibur.xml.sax.SAXParser"
+ shorthand="xml-parser"
+ default-class="org.apache.excalibur.xml.impl.JaxpParser"/>
+
+ <role name="org.apache.excalibur.xmlizer.XMLizer"
+ shorthand="xmlizer"
+ default-class="org.apache.excalibur.xmlizer.DefaultXMLizer"/>
+
+ <role name="org.apache.excalibur.source.SourceFactorySelector"
+ shorthand="source-factories"
+ default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
+
+ <role name="org.apache.excalibur.source.SourceResolver"
+ shorthand="source-resolver"
+ default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <role name="org.apache.cocoon.transformation.TransformerSelector"
+ shorthand="transformers"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+
+ <role name="org.apache.excalibur.store.Store/TransientStore"
+ shorthand="transient-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+
+ <role name="org.apache.excalibur.store.Store"
+ shorthand="persistent-store"
+ default-class="org.apache.excalibur.store.impl.MemoryStore"/>
+ </roles>
+
+ <components>
+ <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser">
+ <parameter name="validate" value="false"/>
+ <parameter name="namespace-prefixes" value="false"/>
+ <parameter name="stop-on-warning" value="true"/>
+ <parameter name="stop-on-recoverable-error" value="true"/>
+ <parameter name="reuse-parsers" value="false"/>
+ </xml-parser>
+
+ <xmlizer/>
+
+ <transient-store/>
+
+ <persistent-store/>
+
+ <source-factories>
+ <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
+ <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
+ </source-factories>
+
+ <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
+
+ <transformers>
+ <component-instance class="org.apache.cocoon.transformation.PatternTransformer" name="pattern"/>
+ </transformers>
+ </components>
+
+</testcase>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input1.xml
new file mode 100644
index 0000000..1e66bc5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input1.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">
+ 1+ 5*67 / (7 -2) *
+ pH +5
+</text>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input2.xml
new file mode 100644
index 0000000..40dcbc8
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-input2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<text xmlns="http://chaperon.sourceforge.net/schema/text/1.0">35.5 667.344 23.23 98. .1 88.88</text>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon1.xml
new file mode 100644
index 0000000..c3a10ea
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon1.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <lexeme symbol="id">
+ <cclass minOccurs="1" maxOccurs="*">
+ <cinterval min="A" max="Z"/>
+ <cinterval min="a" max="z"/>
+ </cclass>
+ </lexeme>
+
+ <lexeme symbol="number">
+ <cclass minOccurs="1" maxOccurs="*">
+ <cinterval min="0" max="9"/>
+ </cclass>
+ </lexeme>
+
+ <lexeme symbol="mult">
+ <cstring content="*"/>
+ </lexeme>
+
+ <lexeme symbol="div">
+ <cstring content="/"/>
+ </lexeme>
+
+ <lexeme symbol="plus">
+ <cstring content="+"/>
+ </lexeme>
+
+ <lexeme symbol="minus">
+ <cstring content="-"/>
+ </lexeme>
+
+ <lexeme symbol="pleft">
+ <cstring content="("/>
+ </lexeme>
+
+ <lexeme symbol="pright">
+ <cstring content=")"/>
+ </lexeme>
+
+ <lexeme>
+ <cclass minOccurs="1" maxOccurs="*">
+ <cset content=" 	 "/>
+ </cclass>
+ </lexeme>
+
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon2.xml
new file mode 100644
index 0000000..b2a9787
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-lexicon2.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <lexeme symbol="num">
+ <alt>
+ <concat>
+ <cclass minOccurs="1" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ <cstring content="."/>
+ <cclass minOccurs="0" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ </concat>
+ <concat>
+ <cclass minOccurs="0" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ <cstring content="."/>
+ <cclass minOccurs="1" maxOccurs="*"><cinterval min="0" max="9"/></cclass>
+ </concat>
+ </alt>
+ </lexeme>
+
+ <lexeme><cstring content=" " minOccurs="1" maxOccurs="*"/></lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result1.xml
new file mode 100644
index 0000000..6fbbc9b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result1.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/lexer/2.0">
+ <lexeme symbol="number" text="1"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+ <lexeme symbol="mult" text="*"/>
+ <lexeme symbol="number" text="67"/>
+ <lexeme symbol="div" text="/"/>
+ <lexeme symbol="pleft" text="("/>
+ <lexeme symbol="number" text="7"/>
+ <lexeme symbol="minus" text="-"/>
+ <lexeme symbol="number" text="2"/>
+ <lexeme symbol="pright" text=")"/>
+ <lexeme symbol="mult" text="*"/>
+ <lexeme symbol="id" text="pH"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result2.xml
new file mode 100644
index 0000000..1a413d0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/lexertest-result2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/lexer/2.0">
+ <lexeme symbol="num" text="35.5"/>
+ <lexeme symbol="num" text="667.344"/>
+ <lexeme symbol="num" text="23.23"/>
+ <lexeme symbol="num" text="98."/>
+ <lexeme symbol="num" text=".1"/>
+ <lexeme symbol="num" text="88.88"/>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-grammar1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-grammar1.xml
new file mode 100644
index 0000000..9cfd58f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-grammar1.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://chaperon.sourceforge.net/schema/grammar/1.0">
+ <priority>
+ <terminal symbol="mult"/>
+ <terminal symbol="div"/>
+ <terminal symbol="plus"/>
+ <terminal symbol="minus"/>
+ </priority>
+
+ <associativity symbol="mult" type="right"/>
+ <associativity symbol="div" type="right"/>
+ <associativity symbol="plus" type="right"/>
+ <associativity symbol="minus" type="right"/>
+
+
+ <production symbol="exp">
+ <nonterminal symbol="exp"/><terminal symbol="plus"/><nonterminal symbol="exp"/>
+ </production>
+
+ <production symbol="exp">
+ <nonterminal symbol="exp"/><terminal symbol="minus"/><nonterminal symbol="exp"/>
+ </production>
+
+ <production symbol="exp">
+ <nonterminal symbol="exp"/><terminal symbol="mult"/><nonterminal symbol="exp"/>
+ </production>
+
+ <production symbol="exp">
+ <nonterminal symbol="exp"/><terminal symbol="div"/><nonterminal symbol="exp"/>
+ </production>
+
+ <production symbol="exp">
+ <terminal symbol="pleft"/><nonterminal symbol="exp"/><terminal symbol="pright"/>
+ </production>
+
+ <production symbol="exp">
+ <terminal symbol="id"/>
+ </production>
+
+ <production symbol="exp">
+ <terminal symbol="number"/>
+ </production>
+
+ <start symbol="exp"/>
+</grammar>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input1.xml
new file mode 100644
index 0000000..6fbbc9b
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input1.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/lexer/2.0">
+ <lexeme symbol="number" text="1"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+ <lexeme symbol="mult" text="*"/>
+ <lexeme symbol="number" text="67"/>
+ <lexeme symbol="div" text="/"/>
+ <lexeme symbol="pleft" text="("/>
+ <lexeme symbol="number" text="7"/>
+ <lexeme symbol="minus" text="-"/>
+ <lexeme symbol="number" text="2"/>
+ <lexeme symbol="pright" text=")"/>
+ <lexeme symbol="mult" text="*"/>
+ <lexeme symbol="id" text="pH"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input2.xml
new file mode 100644
index 0000000..d404566
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/lexer/2.0">
+ <lexeme symbol="number" text="1"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input3.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input3.xml
new file mode 100644
index 0000000..d5a3cd7
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-input3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/lexer/2.0">
+ <lexeme symbol="number" text="1"/>
+ <lexeme symbol="plus" text="+"/>
+ <lexeme symbol="number" text="5"/>
+ <lexeme symbol="minus" text="-"/>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result1.xml
new file mode 100644
index 0000000..775272d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result1.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+ <exp>
+ <exp>
+ <number>1</number>
+ </exp>
+ <plus>+</plus>
+ <exp>
+ <exp>
+ <exp>
+ <exp>
+ <number>5</number>
+ </exp>
+ <mult>*</mult>
+ <exp>
+ <number>67</number>
+ </exp>
+ </exp>
+ <div>/</div>
+ <exp>
+ <exp>
+ <pleft>(</pleft>
+ <exp>
+ <exp>
+ <number>7</number>
+ </exp>
+ <minus>-</minus>
+ <exp>
+ <number>2</number>
+ </exp>
+ </exp>
+ <pright>)</pright>
+ </exp>
+ <mult>*</mult>
+ <exp>
+ <id>pH</id>
+ </exp>
+ </exp>
+ </exp>
+ <plus>+</plus>
+ <exp>
+ <number>5</number>
+ </exp>
+ </exp>
+ </exp>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result2.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result2.xml
new file mode 100644
index 0000000..12416b5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+ <exp>
+ <exp><number>1</number></exp>
+ <plus>+</plus>
+ <exp><number>5</number></exp>
+ </exp>
+</output>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result3.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result3.xml
new file mode 100644
index 0000000..7e79b35
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/parsertest-result3.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<output xmlns="http://chaperon.sourceforge.net/schema/syntaxtree/2.0">
+ <exp>
+ <exp><number>1</number></exp>
+ <plus>+</plus>
+ <exp><number>5</number></exp>
+ </exp>
+</ouput>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-input1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-input1.xml
new file mode 100644
index 0000000..2e761cc
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-input1.xml
@@ -0,0 +1,5 @@
+<section>
+ The Chaperon parser is not a part of the Apache project,
+ but parts can be used in the Apache <strong>Cocoon</strong>
+ project.
+</section>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-lexicon1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-lexicon1.xml
new file mode 100644
index 0000000..46433a5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-lexicon1.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+ <lexeme symbol="cocoon">
+ <alt>
+ <cstring content="Apache Cocoon"/>
+ <cstring content="Cocoon"/>
+ </alt>
+ </lexeme>
+
+ <lexeme symbol="apache">
+ <cstring content="Apache"/>
+ </lexeme>
+
+ <lexeme symbol="chaperon">
+ <cstring content="Chaperon"/>
+ </lexeme>
+</lexicon>
diff --git a/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-result1.xml b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-result1.xml
new file mode 100644
index 0000000..042d134
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/chaperon/test/org/apache/cocoon/transformation/patterntest-result1.xml
@@ -0,0 +1,5 @@
+<section xmlns:lex="http://chaperon.sourceforge.net/schema/lexemes/2.0">
+ The <lex:lexeme symbol="chaperon" text="Chaperon"/> parser is not a part of the <lex:lexeme symbol="apache" text="Apache"/> project,
+ but parts can be used in the <lex:lexeme symbol="apache" text="Apache"/> <strong><lex:lexeme symbol="cocoon" text="Cocoon"/></strong>
+ project.
+</section>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-category.xlog b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-category.xlog
new file mode 100644
index 0000000..d9a9001
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-category.xlog
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xlog xpath="/logkit/categories"
+ unless="category[@name='cron']">
+
+ <category log-level="INFO" name="cron">
+ <log-target id-ref="cron" />
+ <log-target id-ref="error"/>
+ </category>
+
+</xlog>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-target.xlog b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-target.xlog
new file mode 100644
index 0000000..bc0f5e0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron-target.xlog
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xlog xpath="/logkit/targets" unless="cocoon[@id='cron']">
+ <!-- The logger for the cron components -->
+ <cocoon id="cron">
+ <filename>${context-root}/WEB-INF/logs/cron.log</filename>
+ <format type="cocoon">
+ %7.7{priority} %{time} [%{category}] %{thread}/%{class:short}: %{message}\n%{throwable}
+ </format>
+ <append>true</append>
+ </cocoon>
+</xlog>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xconf b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xconf
new file mode 100644
index 0000000..e1a0675
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xconf
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.components.cron.JobScheduler']">
+
+ <component role="org.apache.cocoon.components.cron.JobScheduler"
+ class="org.apache.cocoon.components.cron.QuartzJobScheduler"
+ logger="cron">
+ <!-- Definitions for a thread pool used to schedule jobs -->
+ <thread-pool>
+ <!-- Should we queue up execution requests if the pool is busy? Defaults to false -->
+ <use-queueing>false</use-queueing>
+ <!-- How big should the queue be. Defaults to unlimited size (<0 == default) -->
+ <queue-size>-1</queue-size>
+ <!-- The maximum size of the pool. Defaults to Integer.MAX_VALUE (<0 == default) -->
+ <max-pool-size>-1</max-pool-size>
+ <!-- The minimum size of the pool.Defaults to 1 (<0 == default) -->
+ <min-pool-size>1</min-pool-size>
+ <!-- How long will an idle thread be kept before it will be discarded.
+ Defaults to 60000ms (<0 == default) -->
+ <keep-alive-time-ms>60000</keep-alive-time-ms>
+ <!-- Which blocking policy should be used if the maximum pool size and queue size is bounded:
+ Run: (default) The thread making the execute request runs the task itself.
+ This policy helps guard against lockup.
+ Wait: Wait until a thread becomes available.
+ Abort: Throw a RuntimeException
+ Discard: Throw away the current request and return.
+ DiscardOldest: Throw away the oldest request and return. -->
+ <block-policy>RUN</block-policy>
+ <!-- Should queued and running jobs be given a chance to finished on system shutdown. Defaults to true -->
+ <shutdown-graceful>true</shutdown-graceful>
+ <!-- The maximum time to wait for running jobs to complete. Defaults to unlimited time (<0 == default) -->
+ <shutdown-wait-time-ms>5000</shutdown-wait-time-ms>
+ </thread-pool>
+ <!-- Definintions of triggers -->
+ <triggers>
+ <!-- Sample definition of a trigger -->
+ <!-- A trigger element has the following attributes:
+ name: A name for the trigger. Mandatory
+ target: A role name to lookup the job object in the ServiceManager. Mandatory
+ concurrent-runs: Is it allowed to reschedule a job even if the previous one is
+ still running. Optionl, defaults to true.
+ A trigger element has the following child elements:
+ cron: A string expression defining the scheduling timing.
+ Optional. If not specified the following elements are explored:
+ seconds: A string expression for the secods part of a cron expression.
+ minutes: A string expression for the secods part of a cron expression.
+ hours: A string expression for the secods part of a cron expression.
+ days: A string expression for the secods part of a cron expression.
+ month: A string expression for the secods part of a cron expression.
+ weekdays: A string expression for the secods part of a cron expression.
+ years: A string expression for the secods part of a cron expression.
+ For detailed information about the expressions look at the documentation
+ -->
+ <!--
+ <trigger name="test-job1"
+ target="org.apache.cocoon.components.cron.CronJob/test"
+ concurrent-runs="false">
+ <cron>*/12 * * * * ? *</cron>
+ </trigger>
+ <trigger name="test-job2"
+ target="org.apache.cocoon.components.cron.CronJob/test"
+ concurrent-runs="true">
+ <seconds>*/12</seconds>
+ <minutes>*/5</minutes>
+ <hours>8,10,12,14,16,18</hours>
+ <days>?</days>
+ <months>*</months>
+ <weekdays>SUN-FRI</weekdays>
+ </trigger>
+ -->
+ </triggers>
+ </component>
+
+ <!-- sample definition of cron job -->
+ <component role="org.apache.cocoon.components.cron.CronJob/test"
+ class="org.apache.cocoon.components.cron.TestCronJob"
+ logger="cron.test">
+ <msg>I'm here</msg>
+ <sleep>23000</sleep>
+ </component>
+
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xsamples b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xsamples
new file mode 100644
index 0000000..e35b95d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/conf/cron.xsamples
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Cron']">
+
+ <group name="Cron">
+ <sample name="Cron" href="cron/">
+ Cron block samples.
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/AbstractPipelineCallingCronJob.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/AbstractPipelineCallingCronJob.java
new file mode 100644
index 0000000..87cccb0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/AbstractPipelineCallingCronJob.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.Processor;
+import org.apache.cocoon.caching.CachingOutputStream;
+import org.apache.cocoon.environment.Environment;
+import org.apache.cocoon.environment.background.BackgroundEnvironment;
+import org.apache.cocoon.util.NullOutputStream;
+
+/**
+ * An abstract CronJob implementation that provides a <code>process()</code>
+ * method which calls a Cocoon pipeline internally. It uses the
+ * <code>org.apache.cocoon.environment.background.BackgroundEnvironment</code>
+ * to avoid an external call.
+ *
+ * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
+ * @version CVS $Id: AbstractPipelineCallingCronJob.java,v 1.2 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.4
+ */
+public abstract class AbstractPipelineCallingCronJob
+ extends ServiceableCronJob
+ implements CronJob, Contextualizable {
+
+ protected org.apache.cocoon.environment.Context context = null;
+
+ /**
+ * Call an available pipeline and return
+ *
+ * @param uri of the pipeline
+ * @return The return of the pipeline call as <code>InputStream</code>
+ * @throws Exception - if pipeline is not available or returned OutputStream couldn't be closed
+ *
+ */
+ protected InputStream process(String uri) throws Exception {
+ // use the CachingOutputStream because it buffers all bytes written
+ CachingOutputStream os =
+ new CachingOutputStream(new NullOutputStream());
+ File c = new File(this.context.getRealPath("/"));
+ BackgroundEnvironment env =
+ new BackgroundEnvironment(uri, "", c, os, this.getLogger());
+ process(uri, env);
+ os.close();
+ return new ByteArrayInputStream(os.getContent());
+ }
+
+ /**
+ * Call the Cocoon processor to execute a pipeline.
+ *
+ * TODO (RP): Is this correct or too simplified? (I guess it is to simple for
+ * pipelines with components using the ComponentManager ...)
+ */
+ private boolean process(String uri, Environment env) throws Exception {
+ if (uri.length() > 0 && uri.charAt(0) == '/') {
+ uri = uri.substring(1);
+ } else {
+ uri = env.getURIPrefix() + uri;
+ }
+
+ Processor processor = null;
+ boolean result = false;
+
+ try {
+ processor = (Processor) this.manager.lookup(Processor.ROLE);
+ result = processor.process(env);
+ env.commitResponse();
+ return (result);
+ } catch (Exception any) {
+ throw (any);
+ } finally {
+ this.manager.release(processor);
+ }
+ }
+
+ public void contextualize(Context context) throws ContextException {
+ this.context =
+ (org.apache.cocoon.environment.Context) context.get(
+ Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ConfigurableCronJob.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ConfigurableCronJob.java
new file mode 100644
index 0000000..36da3a0
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ConfigurableCronJob.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+
+
+/**
+ * This is a configurable cron job. Before the execute/run method is called the setup method is invoked.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: ConfigurableCronJob.java,v 1.3 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public interface ConfigurableCronJob
+extends CronJob {
+ /**
+ * Setup CronJob with additional information first
+ *
+ * @param pars Any Parameters
+ * @param objects Some additional Objects
+ */
+ void setup(Parameters pars, Map objects);
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/CronJob.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/CronJob.java
new file mode 100644
index 0000000..1a16a20
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/CronJob.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+/**
+ * This is the interface a class has to implement to enable it to be scheduled by a JobScheduler
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: CronJob.java,v 1.4 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public interface CronJob {
+ /** The component role */
+ String ROLE = CronJob.class.getName();
+
+ /**
+ * This methods get called to allow an implementing class to do its supposed job
+ *
+ * @param jobname the name given to this job
+ */
+ void execute(String jobname);
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobScheduler.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobScheduler.java
new file mode 100644
index 0000000..1f5fc8c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobScheduler.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+import org.apache.avalon.framework.CascadingException;
+import org.apache.avalon.framework.parameters.Parameters;
+
+
+/**
+ * This component schedules jobs.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: JobScheduler.java,v 1.6 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public interface JobScheduler {
+ /** The role of a JobScheduler */
+ String ROLE = JobScheduler.class.getName();
+
+ /**
+ * Get the names of all scheduled jobs.
+ *
+ * @return state of execution successfullness
+ */
+ String[] getJobNames();
+
+ /**
+ * Get the JobSchedulerEntry for a scheduled job
+ *
+ * @return the entry
+ */
+ JobSchedulerEntry getJobSchedulerEntry(String jobname);
+
+ /**
+ * Schedule a time based job. Note that if a job with the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ * @param cronSpec the time specification using a cron expression
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ */
+ void addJob(String name, String jobrole, String cronSpec, boolean canRunConcurrently)
+ throws CascadingException;
+
+ /**
+ * Schedule a time based job. Note that if a job with the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ * @param cronSpec the time specification using a cron expression
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void addJob(String name, String jobrole, String cronSpec, boolean canRunConcurrently, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Schedule a time based job. Note that if a job with the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param cronSpec the time specification using a cron expression
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ */
+ void addJob(String name, Object job, String cronSpec, boolean canRunConcurrently)
+ throws CascadingException;
+
+ /**
+ * Schedule a job. Note that if a job with the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param cronSpec the time specification using a cron expression
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void addJob(String name, Object job, String cronSpec, boolean canRunConcurrently, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Schedule a periodic job. The job is started the first time when the period has passed. Note that if a job with
+ * the same name has already beed added it is overwritten.
+ *
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ * @param period Every period seconds this job is started
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void addPeriodicJob(String name, String jobrole, long period, boolean canRunConcurrently, Parameters params,
+ Map objects)
+ throws CascadingException;
+
+ /**
+ * Fire a job once immediately
+ *
+ * @param jobrole The Avalon components role name of the job itself
+ *
+ * @return success state adding the job
+ */
+ boolean fireJob(String jobrole);
+
+ /**
+ * Fire a CronJob once immediately
+ *
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ *
+ * @return whether the job has been successfully started
+ */
+ boolean fireJob(Object job);
+
+ /**
+ * Fire a job once immediately
+ *
+ * @param jobrole The Avalon components role name of the job itself
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ *
+ * @return whether the job has been successfully started
+ */
+ boolean fireJob(String jobrole, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Fire a job once immediately
+ *
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ *
+ * @return whether the job has been successfully started
+ */
+ boolean fireJob(Object job, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Fire a job once at a specific date Note that if a job with the same name has already beed added it is
+ * overwritten.
+ *
+ * @param date The date this job should be scheduled
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ */
+ void fireJobAt(Date date, String name, String jobrole)
+ throws CascadingException;
+
+ /**
+ * Fire a job once at a specific date Note that if a job with the same name has already beed added it is
+ * overwritten.
+ *
+ * @param date The date this job should be scheduled
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void fireJobAt(Date date, String name, String jobrole, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Fire a job once at a specific date Note that if a job with the same name has already beed added it is
+ * overwritten.
+ *
+ * @param date The date this job should be scheduled
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ */
+ void fireJobAt(Date date, String name, Object job)
+ throws CascadingException;
+
+ /**
+ * Fire a job once at a specific date Note that if a job with the same name has already beed added it is
+ * overwritten.
+ *
+ * @param date The date this job should be scheduled
+ * @param name the name of the job
+ * @param job The job object itself. It must implement either CronJob, Runnable or might also be an implementation
+ * specific class (i.e. org.quartz.Job)
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ */
+ void fireJobAt(Date date, String name, Object job, Parameters params, Map objects)
+ throws CascadingException;
+
+ /**
+ * Remove a scheduled job by name.
+ *
+ * @param name the name of the job
+ */
+ void removeJob(String name)
+ throws NoSuchElementException;
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobSchedulerEntry.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobSchedulerEntry.java
new file mode 100644
index 0000000..44a5d78
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/JobSchedulerEntry.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.util.Date;
+
+
+/**
+ * Interface for classes holding scheduled job entries.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: JobSchedulerEntry.java,v 1.3 2004/03/05 13:01:49 bdelacretaz Exp $
+ */
+public interface JobSchedulerEntry {
+ /**
+ * The name of the role/class of the job
+ *
+ * @return Name of the role/class of this job
+ */
+ String getJobName();
+
+ /**
+ * Return name of entry.
+ *
+ * @return the name of the entry
+ */
+ String getName();
+
+ /**
+ * Retrieve time when this job should run next.
+ *
+ * @return the time in milliseconds when job should run
+ */
+ Date getNextTime();
+
+ /**
+ * Is this job currently running?
+ *
+ * @return whether this job is currently running?
+ */
+ boolean isRunning();
+
+ /**
+ * Get a human readable representation of the schedule of this entry. Is up to an implementation how it presents
+ * the schedule for this entry
+ *
+ * @return the human readable representation of the schedule of this entry
+ */
+ String getSchedule();
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
new file mode 100644
index 0000000..4309967
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.quartz.Job;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+
+/**
+ * This component is resposible to launch a {@link CronJob}s in a Quart Scheduler.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: QuartzJobExecutor.java,v 1.5 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public class QuartzJobExecutor
+implements Job {
+ /** Map key for the run status */
+ static final String DATA_MAP_KEY_ISRUNNING = "QuartzJobExecutor.isRunning";
+
+ /* (non-Javadoc)
+ * @see org.quartz.Job#execute(org.quartz.JobExecutionContext)
+ */
+ public void execute(final JobExecutionContext context)
+ throws JobExecutionException {
+ final JobDataMap data = context.getJobDetail().getJobDataMap();
+ data.put(QuartzJobScheduler.DATA_MAP_JOB_EXECUTION_CONTEXT, context);
+
+ final Logger logger = (Logger)data.get(QuartzJobScheduler.DATA_MAP_LOGGER);
+ final String name = (String)data.get(QuartzJobScheduler.DATA_MAP_NAME);
+ final Boolean canRunConcurrentlyB = ((Boolean)data.get(QuartzJobScheduler.DATA_MAP_RUN_CONCURRENT));
+ final boolean canRunConcurrently = ((canRunConcurrentlyB == null) ? true : canRunConcurrentlyB.booleanValue());
+
+ if (!canRunConcurrently) {
+ Boolean isRunning = (Boolean)data.get(DATA_MAP_KEY_ISRUNNING);
+
+ if ((null != isRunning) && isRunning.booleanValue()) {
+ logger.warn("Cron job name '" + name +
+ " already running but configured to not allow concurrent runs. Will discard this scheduled run");
+
+ return;
+ }
+ }
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Scheduling cron job named '" + name + "'");
+ }
+
+ Object job = null;
+ String jobrole = null;
+ ServiceManager manager = null;
+
+ try {
+ jobrole = (String)data.get(QuartzJobScheduler.DATA_MAP_ROLE);
+
+ if (null == jobrole) {
+ job = data.get(QuartzJobScheduler.DATA_MAP_OBJECT);
+ } else {
+ manager = (ServiceManager)data.get(QuartzJobScheduler.DATA_MAP_MANAGER);
+ job = manager.lookup(jobrole);
+ }
+
+ if (job instanceof ConfigurableCronJob) {
+ final Parameters params = (Parameters)data.get(QuartzJobScheduler.DATA_MAP_PARAMETERS);
+ final Map objects = (Map)data.get(QuartzJobScheduler.DATA_MAP_OBJECTMAP);
+ ((ConfigurableCronJob)job).setup(params, objects);
+ }
+
+ data.put(DATA_MAP_KEY_ISRUNNING, Boolean.TRUE);
+
+ if (job instanceof Job) {
+ ((Job)job).execute(context);
+ } else if (job instanceof CronJob) {
+ ((CronJob)job).execute(name);
+ } else if (job instanceof Runnable) {
+ ((Runnable)job).run();
+ } else {
+ logger.error("job named '" + name + "' is of invalid class: " + job.getClass().getName());
+ }
+ } catch (final Throwable t) {
+ logger.error("Cron job name '" + name + " died.", t);
+
+ if (t instanceof JobExecutionException) {
+ throw (JobExecutionException)t;
+ }
+ } finally {
+ data.put(DATA_MAP_KEY_ISRUNNING, Boolean.FALSE);
+
+ if (null != manager) {
+ manager.release(job);
+ }
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
new file mode 100644
index 0000000..d7d4d9a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
@@ -0,0 +1,747 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+import org.apache.avalon.framework.CascadingException;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.activity.Startable;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.quartz.CronTrigger;
+import org.quartz.Job;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
+import org.quartz.Trigger;
+
+import org.quartz.impl.DirectSchedulerFactory;
+
+import org.quartz.simpl.RAMJobStore;
+
+import EDU.oswego.cs.dl.util.concurrent.BoundedBuffer;
+import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
+import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
+
+
+/**
+ * This component can either schedule jobs or directly execute one.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: QuartzJobScheduler.java,v 1.9 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public class QuartzJobScheduler
+extends AbstractLogEnabled
+implements JobScheduler, Component, ThreadSafe, Serviceable, Configurable, Startable, Disposable, Contextualizable {
+ /** ThreadPool policy RUN */
+ private static final String POLICY_RUN = "RUN";
+
+ /** ThreadPool policy WAIT */
+ private static final String POLICY_WAIT = "WAIT";
+
+ /** ThreadPool policy ABORT */
+ private static final String POLICY_ABORT = "ABORT";
+
+ /** ThreadPool policy DISCARD */
+ private static final String POLICY_DISCARD = "DISCARD";
+
+ /** ThreadPool policy DISCARD-OLDEST */
+ private static final String POLICY_DISCARD_OLDEST = "DISCARDOLDEST";
+
+ /** Map key for the component role */
+ static final String DATA_MAP_ROLE = "QuartzJobScheduler.ROLE";
+
+ /** Map key for the job object */
+ static final String DATA_MAP_OBJECT = "QuartzJobScheduler.Object";
+
+ /** Map key for the job name */
+ static final String DATA_MAP_NAME = "QuartzJobScheduler.JobName";
+
+ /** Map key for the service manager */
+ static final String DATA_MAP_MANAGER = "QuartzJobScheduler.ServiceManager";
+
+ /** Map key for the logger */
+ static final String DATA_MAP_LOGGER = "QuartzJobScheduler.Logger";
+
+ /** Map key for the concurrent run property */
+ static final String DATA_MAP_RUN_CONCURRENT = "QuartzJobScheduler.RunConcurrently";
+
+ /** Map key for additional Parameters */
+ static final String DATA_MAP_PARAMETERS = "QuartzJobScheduler.Parameters";
+
+ /** Map key for additional Object Map */
+ static final String DATA_MAP_OBJECTMAP = "QuartzJobScheduler.Map";
+
+ /** Map key for the last JobExecutionContext */
+ static final String DATA_MAP_JOB_EXECUTION_CONTEXT = "QuartzJobScheduler.JobExecutionContext";
+
+ /** The group name */
+ static final String DEFAULT_QUARTZ_JOB_GROUP = "Cocoon";
+
+ /** The scheduler name */
+ static final String DEFAULT_QUARTZ_SCHEDULER_NAME = "Cocoon";
+
+ /** The PooledExecutor instance */
+ private PooledExecutor m_executor;
+
+ /** The quartz scheduler */
+ private Scheduler m_scheduler;
+
+ /** The ServiceManager instance */
+ private ServiceManager m_manager;
+
+ /** Should we wait for running jobs to terminate on shutdown ? */
+ private boolean m_shutdownGraceful;
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#getJobNames()
+ */
+ public String[] getJobNames() {
+ try {
+ final String[] names = m_scheduler.getJobNames(DEFAULT_QUARTZ_JOB_GROUP);
+ Arrays.sort(names);
+
+ return names;
+ } catch (final SchedulerException se) {
+ getLogger().error("could not gather job names", se);
+ }
+
+ return new String[0];
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#getSchedulerEntry(java.lang.String)
+ */
+ public JobSchedulerEntry getJobSchedulerEntry(String jobname) {
+ try {
+ return new QuartzJobSchedulerEntry(jobname, m_scheduler);
+ } catch (final Exception e) {
+ getLogger().error("cannot create QuartzJobSchedulerEntry", e);
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#addJob(java.lang.String, java.lang.Object, java.lang.String, boolean, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public void addJob(final String name, final Object job, final String cronSpec, final boolean canRunConcurrently,
+ final Parameters params, final Map objects)
+ throws CascadingException {
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_OBJECT, job);
+ addJob(name, jobDataMap, cronSpec, canRunConcurrently, params, objects);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#addJob(java.lang.String, java.lang.String, java.lang.String, boolean, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public void addJob(final String name, final String jobrole, final String cronSpec,
+ final boolean canRunConcurrently, final Parameters params, final Map objects)
+ throws CascadingException {
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_ROLE, jobrole);
+ addJob(name, jobDataMap, cronSpec, canRunConcurrently, params, objects);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#addJob(java.lang.String, java.lang.Object, java.lang.String, boolean)
+ */
+ public void addJob(final String name, final Object job, final String cronSpec, final boolean canRunConcurrently)
+ throws CascadingException {
+ if (!(job instanceof CronJob) && !(job instanceof Runnable) && !(job instanceof Job)) {
+ throw new CascadingException("Job object is neither an instance of " + CronJob.class.getName() + "," +
+ Runnable.class.getName() + " nor " + Job.class.getName());
+ }
+
+ addJob(name, job, cronSpec, canRunConcurrently, null, null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#addJob(java.lang.String, java.lang.String, java.lang.String, boolean)
+ */
+ public void addJob(final String name, final String jobrole, final String cronSpec, final boolean canRunConcurrently)
+ throws CascadingException {
+ addJob(name, jobrole, cronSpec, canRunConcurrently, null, null);
+ }
+
+ /**
+ * Schedule a period job. Note that if a Job already has same name then it is overwritten.
+ *
+ * @param name the name of the job
+ * @param jobrole The Avalon components role name of the job itself
+ * @param period Every period seconds this job is started
+ * @param canRunConcurrently whether this job can run even previous scheduled runs are still running
+ * @param params additional Parameters to be passed to the job
+ * @param objects additional objects to be passed to the job
+ *
+ * @throws CascadingException in case of failures
+ */
+ public void addPeriodicJob(String name, String jobrole, long period, boolean canRunConcurrently, Parameters params,
+ Map objects)
+ throws CascadingException {
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_ROLE, jobrole);
+
+ final long ms = period * 1000;
+ final SimpleTrigger timeEntry =
+ new SimpleTrigger(name, DEFAULT_QUARTZ_JOB_GROUP, new Date(System.currentTimeMillis() + ms), null,
+ SimpleTrigger.REPEAT_INDEFINITELY, ms);
+
+ addJob(name, jobDataMap, timeEntry, canRunConcurrently, params, objects);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(final Configuration config)
+ throws ConfigurationException {
+ try {
+ // If cocoon reloads (or is it the container that reload us?)
+ // we cannot create the same scheduler again
+ final String runID = new Date().toString().replace(' ', '_');
+ final ThreadPool pool = createThreadPool(config.getChild("thread-pool"));
+ DirectSchedulerFactory.getInstance().createScheduler(DEFAULT_QUARTZ_SCHEDULER_NAME, runID, pool,
+ new RAMJobStore());
+ // m_scheduler = DirectSchedulerFactory.getInstance().getScheduler(DEFAULT_QUARTZ_SCHEDULER_NAME, runID);
+ m_scheduler = DirectSchedulerFactory.getInstance().getScheduler(DEFAULT_QUARTZ_SCHEDULER_NAME);
+ } catch (final SchedulerException se) {
+ throw new ConfigurationException("cannot create a quartz scheduler", se);
+ }
+
+ final Configuration[] triggers = config.getChild("triggers").getChildren("trigger");
+ createTriggers(triggers);
+
+ if (getLogger().isDebugEnabled() && (triggers.length == 0)) {
+ getLogger().debug("no triggers configured at startup");
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ try {
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("shutting down scheduler " +
+ (m_shutdownGraceful ? "graceful (waiting for running jobs to complete)"
+ : "immediately (killing running jobs)"));
+ }
+
+ m_scheduler.shutdown(m_shutdownGraceful);
+ m_scheduler = null;
+ } catch (final SchedulerException se) {
+ getLogger().error("failure during scheduler shutdown", se);
+ }
+
+ m_executor = null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+ */
+ public void contextualize(Context context) throws ContextException {
+ org.apache.cocoon.environment.Context c = (org.apache.cocoon.environment.Context)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+ System.out.println("context: " + c.getRealPath("/") );
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireTarget(java.lang.Object)
+ */
+ public boolean fireJob(final Object job) {
+ return fireJob(job.getClass().getName(), job);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireTarget(java.lang.String)
+ */
+ public boolean fireJob(final String jobrole) {
+ Object job = null;
+
+ try {
+ job = m_manager.lookup(jobrole);
+
+ return fireJob(jobrole, job);
+ } catch (final ServiceException se) {
+ getLogger().error("cannot fire job " + jobrole, se);
+ } finally {
+ m_manager.release(job);
+ }
+
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJob(java.lang.Object, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public boolean fireJob(final Object job, final Parameters params, final Map objects)
+ throws CascadingException {
+ if (job instanceof ConfigurableCronJob) {
+ ((ConfigurableCronJob)job).setup(params, objects);
+ }
+
+ return fireJob(job);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJob(java.lang.String, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public boolean fireJob(final String jobrole, final Parameters params, final Map objects)
+ throws CascadingException {
+ Object job = null;
+
+ try {
+ job = m_manager.lookup(jobrole);
+
+ if (job instanceof ConfigurableCronJob) {
+ ((ConfigurableCronJob)job).setup(params, objects);
+ }
+
+ return fireJob(jobrole, job);
+ } catch (final ServiceException se) {
+ getLogger().error("cannot fire job " + jobrole, se);
+ } finally {
+ m_manager.release(job);
+ }
+
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJobAt(java.util.Date, java.lang.String, java.lang.Object)
+ */
+ public void fireJobAt(final Date date, final String name, final Object job)
+ throws CascadingException {
+ fireJobAt(date, name, job, null, null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJobAt(java.util.Date, java.lang.String, java.lang.String)
+ */
+ public void fireJobAt(final Date date, final String name, final String jobrole)
+ throws CascadingException {
+ fireJobAt(date, name, jobrole, null, null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJobAt(java.util.Date, java.lang.String, java.lang.Object, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public void fireJobAt(final Date date, final String name, final Object job, final Parameters params,
+ final Map objects)
+ throws CascadingException {
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_OBJECT, job);
+ addJob(name, jobDataMap, date, true, params, objects);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireJobAt(java.util.Date, java.lang.String, java.lang.String, org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public void fireJobAt(final Date date, final String name, final String jobrole, final Parameters params,
+ final Map objects)
+ throws CascadingException {
+ final JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put(DATA_MAP_ROLE, jobrole);
+ addJob(name, jobDataMap, date, true, params, objects);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#removeJob(java.lang.String)
+ */
+ public void removeJob(final String name)
+ throws NoSuchElementException {
+ try {
+ if (m_scheduler.deleteJob(name, DEFAULT_QUARTZ_JOB_GROUP)) {
+ getLogger().info("job " + name + " removed by request");
+ } else {
+ getLogger().error("couldn't remove requested job " + name);
+ }
+ } catch (final SchedulerException se) {
+ getLogger().error("cannot remove job " + name, se);
+ throw new NoSuchElementException(se.getMessage());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(final ServiceManager manager)
+ throws ServiceException {
+ m_manager = manager;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Startable#start()
+ */
+ public void start()
+ throws Exception {
+ m_scheduler.start();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Startable#stop()
+ */
+ public void stop()
+ throws Exception {
+ m_scheduler.pause();
+ }
+
+ /**
+ * Add a job to the scheduler
+ *
+ * @param name The name of the job to add
+ * @param jobDataMap The JobDataMap to use for this job
+ * @param date the date to schedule this job
+ * @param canRunConcurrently whether this job can be run concurrently
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ *
+ * @throws CascadingException thrown in case of errors
+ */
+ private void addJob(final String name, final JobDataMap jobDataMap, final Date date,
+ final boolean canRunConcurrently, final Parameters params, final Map objects)
+ throws CascadingException {
+ final SimpleTrigger trigger = new SimpleTrigger(name, DEFAULT_QUARTZ_JOB_GROUP, date);
+ addJob(name, jobDataMap, trigger, canRunConcurrently, params, objects);
+ }
+
+ /**
+ * Add a job to the scheduler
+ *
+ * @param name The name of the job to add
+ * @param jobDataMap The JobDataMap to use for this job
+ * @param cronSpec a Cron time expression
+ * @param canRunConcurrently whether this job can be run concurrently
+ * @param params Additional Parameters to setup CronJob
+ * @param objects A Map with additional object to setup CronJob
+ *
+ * @throws CascadingException thrown in case of errors
+ */
+ private void addJob(final String name, final JobDataMap jobDataMap, final String cronSpec,
+ final boolean canRunConcurrently, final Parameters params, final Map objects)
+ throws CascadingException {
+ final CronTrigger cronJobEntry = new CronTrigger(name, DEFAULT_QUARTZ_JOB_GROUP);
+
+ try {
+ cronJobEntry.setCronExpression(cronSpec);
+ } catch (final ParseException pe) {
+ throw new CascadingException(pe.getMessage(), pe);
+ }
+
+ addJob(name, jobDataMap, cronJobEntry, canRunConcurrently, params, objects);
+ }
+
+ /**
+ * Add a job to the scheduler
+ *
+ * @param name The name of the job to add
+ * @param jobDataMap The JobDataMap to use for this job
+ * @param trigger a Trigger
+ * @param canRunConcurrently whether this job can be run concurrently
+ * @param params Additional Parameters to setup CronJob (might be null)
+ * @param objects A Map with additional object to setup CronJob (might be null)
+ *
+ * @throws CascadingException thrown in case of errors
+ */
+ private void addJob(final String name, final JobDataMap jobDataMap, final Trigger trigger,
+ final boolean canRunConcurrently, final Parameters params, final Map objects)
+ throws CascadingException {
+ try {
+ final JobDetail jobdetail = m_scheduler.getJobDetail(name, DEFAULT_QUARTZ_JOB_GROUP);
+
+ if (jobdetail != null) {
+ removeJob(name);
+ }
+ } catch (final SchedulerException se) {
+ }
+
+ jobDataMap.put(DATA_MAP_NAME, name);
+ jobDataMap.put(DATA_MAP_LOGGER, getLogger());
+ jobDataMap.put(DATA_MAP_MANAGER, m_manager);
+ jobDataMap.put(DATA_MAP_RUN_CONCURRENT, new Boolean(canRunConcurrently));
+
+ if (null != params) {
+ jobDataMap.put(DATA_MAP_PARAMETERS, params);
+ }
+
+ if (null != objects) {
+ jobDataMap.put(DATA_MAP_OBJECTMAP, objects);
+ }
+
+ final JobDetail detail = new JobDetail(name, DEFAULT_QUARTZ_JOB_GROUP, QuartzJobExecutor.class);
+ detail.setJobDataMap(jobDataMap);
+
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Adding CronJob '" + trigger.getFullName() + "'");
+ }
+
+ try {
+ m_scheduler.scheduleJob(detail, trigger);
+ } catch (final SchedulerException se) {
+ throw new CascadingException(se.getMessage(), se);
+ }
+
+ if (getLogger().isDebugEnabled()) {
+ if (trigger instanceof CronTrigger) {
+ getLogger().debug("Time schedule summary:\n" + ((CronTrigger)trigger).getExpressionSummary());
+ } else {
+ getLogger().debug("Next scheduled time: " + trigger.getNextFireTime());
+ }
+ }
+ }
+
+ /**
+ * Create a ThreadPool
+ *
+ * @param poolConfig Configuration element for the thread pool
+ *
+ * @return ThreadPool
+ */
+ private ThreadPool createThreadPool(final Configuration poolConfig) {
+ final boolean useQueueing = poolConfig.getChild("use-queueing").getValueAsBoolean(false);
+ final int queueSize = poolConfig.getChild("queue-size").getValueAsInteger(-1);
+
+ if (useQueueing) {
+ if (queueSize > 0) {
+ m_executor = new PooledExecutor(new BoundedBuffer(queueSize));
+ } else {
+ m_executor = new PooledExecutor(new LinkedQueue());
+ }
+ } else {
+ m_executor = new PooledExecutor();
+ }
+
+ final int maxPoolSize = poolConfig.getChild("max-pool-size").getValueAsInteger(-1);
+
+ if (maxPoolSize > 0) {
+ m_executor.setMaximumPoolSize(maxPoolSize);
+ } else {
+ m_executor.setMaximumPoolSize(PooledExecutor.DEFAULT_MAXIMUMPOOLSIZE);
+ }
+
+ final int minPoolSize = poolConfig.getChild("min-pool-size").getValueAsInteger(-1);
+
+ if (minPoolSize > 0) {
+ m_executor.setMinimumPoolSize(minPoolSize);
+ } else {
+ m_executor.setMinimumPoolSize(PooledExecutor.DEFAULT_MINIMUMPOOLSIZE);
+ }
+
+ final int keepAliveTimeMs = poolConfig.getChild("keep-alive-time-ms").getValueAsInteger(-1);
+
+ if (keepAliveTimeMs > 0) {
+ m_executor.setKeepAliveTime(keepAliveTimeMs);
+ } else {
+ m_executor.setKeepAliveTime(PooledExecutor.DEFAULT_KEEPALIVETIME);
+ }
+
+ final String blockPolicy = poolConfig.getChild("block-policy").getValue(null);
+
+ if (blockPolicy != null) {
+ if (blockPolicy.equalsIgnoreCase(POLICY_ABORT)) {
+ m_executor.abortWhenBlocked();
+ } else if (blockPolicy.equalsIgnoreCase(POLICY_DISCARD)) {
+ m_executor.discardWhenBlocked();
+ } else if (blockPolicy.equalsIgnoreCase(POLICY_DISCARD_OLDEST)) {
+ m_executor.discardOldestWhenBlocked();
+ } else if (blockPolicy.equalsIgnoreCase(POLICY_RUN)) {
+ m_executor.runWhenBlocked();
+ } else if (blockPolicy.equalsIgnoreCase(POLICY_WAIT)) {
+ m_executor.waitWhenBlocked();
+ } else {
+ getLogger().warn("Unknown block-policy configuration '" + blockPolicy + "'. Should be one of '" +
+ POLICY_ABORT + "','" + POLICY_DISCARD + "','" + POLICY_DISCARD_OLDEST + "','" +
+ POLICY_RUN + "','" + POLICY_WAIT + "'. Will use '" + POLICY_RUN + "'");
+ }
+ }
+
+ m_shutdownGraceful = poolConfig.getChild("shutdown-graceful").getValueAsBoolean(true);
+
+ final int shutdownWaitTimeMs = poolConfig.getChild("shutdown-wait-time-ms").getValueAsInteger(-1);
+ final ThreadPool pool = new ThreadPool(m_executor, shutdownWaitTimeMs);
+ pool.enableLogging(getLogger());
+
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("using a PooledExecutor as ThreadPool with queueing=" + useQueueing +
+ (useQueueing ? (",queue-size=" + ((queueSize > 0) ? ("" + queueSize) : "default")) : "") +
+ ",max-pool-size=" + m_executor.getMaximumPoolSize() + ",min-pool-size=" +
+ m_executor.getMinimumPoolSize() + ",keep-alive-time-ms=" + m_executor.getKeepAliveTime() +
+ ",block-policy='" + blockPolicy + "',shutdown-wait-time-ms=" +
+ ((shutdownWaitTimeMs > 0) ? ("" + shutdownWaitTimeMs) : "default"));
+ }
+
+ return pool;
+ }
+
+ /**
+ * Create the tiggers
+ *
+ * @param tiggers array of tigger configuration elements
+ *
+ * @throws ConfigurationException thrown in case of configuration failures
+ */
+ private void createTriggers(final Configuration[] tiggers)
+ throws ConfigurationException {
+ for (int i = 0; i < tiggers.length; i++) {
+ String cron = tiggers[i].getChild("cron").getValue(null);
+
+ if (null == cron) {
+ final String seconds = tiggers[i].getChild("seconds").getValue("0");
+ final String minutes = tiggers[i].getChild("minutes").getValue("*");
+ final String hours = tiggers[i].getChild("hours").getValue("*");
+ final String days = tiggers[i].getChild("days").getValue("*");
+ final String months = tiggers[i].getChild("months").getValue("*");
+ final String weekdays = tiggers[i].getChild("weekdays").getValue("?");
+ final String years = tiggers[i].getChild("years").getValue("*");
+ cron = seconds + " " + minutes + " " + hours + " " + days + " " + months + " " + weekdays + " " +
+ years;
+ }
+
+ try {
+ addJob(tiggers[i].getAttribute("name"), tiggers[i].getAttribute("target"), cron,
+ tiggers[i].getAttributeAsBoolean("concurrent-runs", true));
+ } catch (final CascadingException ce) {
+ throw new ConfigurationException("failed adding trigger to scheduler", ce);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobScheduler#fireTarget(java.lang.Object)
+ */
+ private boolean fireJob(final String name, final Object job) {
+ try {
+ if (job instanceof CronJob) {
+ m_executor.execute(new Runnable() {
+ public void run() {
+ ((CronJob)job).execute(name);
+ }
+ });
+ } else if (job instanceof Runnable) {
+ m_executor.execute((Runnable)job);
+ } else {
+ getLogger().error("job named '" + name + "' is of invalid class: " + job.getClass().getName());
+
+ return false;
+ }
+
+ return true;
+ } catch (final InterruptedException ie) {
+ getLogger().error("job " + name + " interrupted", ie);
+ }
+
+ return false;
+ }
+
+ /**
+ * A ThreadPool for the Quartz Scheduler based on Doug Leas concurrency utilities PooledExecutor
+ *
+ * @author <a href="mailto:giacomo@otego.com">Giacomo Pati</a>
+ * @version CVS $Id: QuartzJobScheduler.java,v 1.9 2004/03/05 13:01:49 bdelacretaz Exp $
+ */
+ private static class ThreadPool
+ extends AbstractLogEnabled
+ implements org.quartz.spi.ThreadPool {
+ /** Our executor thread pool */
+ private PooledExecutor m_executor;
+
+ /** How long to wait for running jobs to terminate on disposition */
+ private int m_shutdownWaitTimeMs;
+
+ /**
+ *
+ */
+ public ThreadPool(final PooledExecutor executor, final int shutownWaitTimeMs) {
+ super();
+ m_executor = executor;
+ m_shutdownWaitTimeMs = shutownWaitTimeMs;
+ }
+
+ /* (non-Javadoc)
+ * @see org.quartz.spi.ThreadPool#getPoolSize()
+ */
+ public int getPoolSize() {
+ return m_executor.getMaximumPoolSize();
+ }
+
+ /* (non-Javadoc)
+ * @see org.quartz.spi.ThreadPool#initialize()
+ */
+ public void initialize() {
+ }
+
+ /* (non-Javadoc)
+ * @see org.quartz.spi.ThreadPool#runInThread(java.lang.Runnable)
+ */
+ public boolean runInThread(final Runnable job) {
+ try {
+ m_executor.execute(job);
+ } catch (final InterruptedException ie) {
+ getLogger().error("Cronjob failed", ie);
+ }
+
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.quartz.spi.ThreadPool#shutdown(boolean)
+ */
+ public void shutdown(final boolean waitForJobsToComplete) {
+ if (waitForJobsToComplete) {
+ m_executor.shutdownAfterProcessingCurrentlyQueuedTasks();
+ } else {
+ m_executor.shutdownNow();
+ }
+
+ try {
+ if (m_shutdownWaitTimeMs > 0) {
+ if (!m_executor.awaitTerminationAfterShutdown(m_shutdownWaitTimeMs)) {
+ getLogger().warn("scheduled cron jobs are not terminating within " + m_shutdownWaitTimeMs +
+ "ms, Will shut them down by interruption");
+ m_executor.interruptAll();
+ m_executor.shutdownNow();
+ }
+ }
+
+ m_executor.awaitTerminationAfterShutdown();
+ } catch (final InterruptedException ie) {
+ getLogger().error("cannot shutdown Executor", ie);
+ }
+ }
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobSchedulerEntry.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobSchedulerEntry.java
new file mode 100644
index 0000000..3bfc699
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobSchedulerEntry.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.quartz.CronTrigger;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
+import org.quartz.Trigger;
+
+
+/**
+ * Implementation of the JobSchedulerEntry interface for the QuartzJobScheduler
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @version CVS $Id: QuartzJobSchedulerEntry.java,v 1.4 2004/03/05 13:01:49 bdelacretaz Exp $
+ */
+public class QuartzJobSchedulerEntry
+implements JobSchedulerEntry {
+ /** The data map */
+ private final JobDataMap m_data;
+
+ /** The detail */
+ private final JobDetail m_detail;
+
+ /** The scheduler reference */
+ private final Scheduler m_scheduler;
+
+ /** The date formatter */
+ private final SimpleDateFormat m_formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ /** The name */
+ private final String m_name;
+
+ /** The trigger */
+ private final Trigger m_trigger;
+
+ /**
+ * Construct an JobSchedulerEntry
+ *
+ * @param name The name of the job
+ * @param scheduler The QuartzJobScheduler
+ *
+ * @throws SchedulerException in case of failures
+ */
+ public QuartzJobSchedulerEntry(final String name, final Scheduler scheduler)
+ throws SchedulerException {
+ m_scheduler = scheduler;
+ m_name = name;
+ m_detail = m_scheduler.getJobDetail(name, QuartzJobScheduler.DEFAULT_QUARTZ_JOB_GROUP);
+ m_data = m_detail.getJobDataMap();
+ m_trigger = m_scheduler.getTrigger(name, QuartzJobScheduler.DEFAULT_QUARTZ_JOB_GROUP);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobSchedulerEntry#getJobName()
+ */
+ public String getJobName() {
+ String name = (String)m_data.get(QuartzJobScheduler.DATA_MAP_ROLE);
+
+ if (null == name) {
+ name = m_data.get(QuartzJobScheduler.DATA_MAP_OBJECT).getClass().getName();
+ }
+
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobSchedulerEntry#getName()
+ */
+ public String getName() {
+ return m_name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobSchedulerEntry#getNextTime()
+ */
+ public Date getNextTime() {
+ return m_trigger.getNextFireTime();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobSchedulerEntry#isRunning()
+ */
+ public boolean isRunning() {
+ Boolean runs = (Boolean)m_data.get(QuartzJobExecutor.DATA_MAP_KEY_ISRUNNING);
+
+ if (null != runs) {
+ return runs.booleanValue();
+ }
+
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.JobSchedulerEntry#getSchedule()
+ */
+ public String getSchedule() {
+ if (m_trigger instanceof CronTrigger) {
+ return "cron: " + ((CronTrigger)m_trigger).getCronExpression();
+ } else if (m_trigger instanceof SimpleTrigger) {
+ if (((SimpleTrigger)m_trigger).getRepeatInterval() == 0) {
+ return "once: at " + m_formatter.format(m_trigger.getFinalFireTime());
+ }
+
+ return "periodic: every " + (((SimpleTrigger)m_trigger).getRepeatInterval() / 1000) + "s";
+ } else {
+ return "next: " + m_formatter.format(m_trigger.getNextFireTime());
+ }
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ServiceableCronJob.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ServiceableCronJob.java
new file mode 100644
index 0000000..cec658a
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/ServiceableCronJob.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+
+
+/**
+ * Serviceable CronJob
+ *
+ * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
+ * @version CVS $Id: ServiceableCronJob.java,v 1.2 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.4
+ */
+public abstract class ServiceableCronJob extends AbstractLogEnabled
+ implements CronJob, Serviceable {
+
+
+ /** The service manager */
+ protected ServiceManager manager;
+
+
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/TestCronJob.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/TestCronJob.java
new file mode 100644
index 0000000..1eff921
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/components/cron/TestCronJob.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.cron;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Date;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+
+
+/**
+ * A simple test CronJob which also calls a pipeline internally.
+ *
+ * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
+ * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
+ * @version CVS $Id: TestCronJob.java,v 1.5 2004/03/05 13:01:49 bdelacretaz Exp $
+ *
+ * @since 2.1.1
+ */
+public class TestCronJob extends AbstractPipelineCallingCronJob
+ implements CronJob, Configurable, ConfigurableCronJob {
+
+ /** Parameter key for the message */
+ public static final String PARAMETER_MESSAGE = "TestCronJob.Parameter.Message";
+
+ /** Parameter key for the sleep value */
+ public static final String PARAMETER_SLEEP = "TestCronJob.Parameter.Sleep";
+
+ /** Parameter key for the pipeline to be called */
+ public static final String PARAMETER_PIPELINE = "TestCronJob.Parameter.Pipeline";
+
+ /** The configured message */
+ private String m_msg;
+
+ /** The configured sleep time */
+ private int m_sleep;
+
+ /** The pipeline to be called */
+ private String pipeline = null;
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(final Configuration config)
+ throws ConfigurationException {
+ m_msg = config.getChild("msg").getValue("I was not configured");
+ m_sleep = config.getChild("sleep").getValueAsInteger(11000);
+ pipeline = config.getChild("pipeline").getValue("samples/hello-world/hello.xhtml");
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.CronJob#execute(java.lang.String)
+ */
+ public void execute(String name) {
+ getLogger().info("CronJob " + name + " launched at " + new Date() + " with message '" + m_msg +
+ "' and sleep timeout of " + m_sleep + "ms");
+
+ InputStream is = null;
+ try {
+ is = process(pipeline);
+ } catch (Exception e) {
+ getLogger().error("error in execution of TestCronJob", e);
+ }
+ StringBuffer sb = new StringBuffer();
+ try {
+ InputStreamReader reader = new InputStreamReader(is);
+ sb = new StringBuffer();
+ char[] b = new char[8192];
+ int n;
+
+ while((n = reader.read(b)) > 0) {
+ sb.append(b, 0, n);
+ }
+ } catch( IOException ioe ) {
+ getLogger().error("error trying to read the InputStream returned by the Pipeline processor");
+ }
+ getLogger().info("Cronjob " + name + " called pipeline " + pipeline +
+ " and received following content:\n" + sb.toString() );
+
+ try {
+ Thread.sleep(m_sleep);
+ } catch (final InterruptedException ie) {
+ //getLogger().error("CronJob " + name + " interrupted", ie);
+ }
+
+ getLogger().info("CronJob " + name + " finished at " + new Date() + " with message '" + m_msg +
+ "' and sleep timeout of " + m_sleep + "ms");
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.components.cron.ConfigurableCronJob#setup(org.apache.avalon.framework.parameters.Parameters, java.util.Map)
+ */
+ public void setup(Parameters params, Map objects) {
+ if (null != params) {
+ m_msg = params.getParameter(PARAMETER_MESSAGE, m_msg);
+ m_sleep = params.getParameterAsInteger(PARAMETER_SLEEP, m_sleep);
+ pipeline = params.getParameter(PARAMETER_PIPELINE, pipeline );
+
+ }
+ }
+
+
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/environment/background/BackgroundEnvironment.java b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/environment/background/BackgroundEnvironment.java
new file mode 100644
index 0000000..d3bb28c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/java/org/apache/cocoon/environment/background/BackgroundEnvironment.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.environment.background;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.environment.AbstractEnvironment;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.commandline.CommandLineContext;
+import org.apache.cocoon.environment.commandline.CommandLineRequest;
+import org.apache.cocoon.environment.commandline.CommandLineResponse;
+
+/**
+ * A simple implementation of <code>org.apache.cocoon.environment.Environment</code>
+ * for pipeline calls which are not externally triggered.
+ *
+ * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
+ * @version CVS $Id: BackgroundEnvironment.java,v 1.2 2004/03/05 13:01:50 bdelacretaz Exp $
+ *
+ * @since 2.1.4
+ */
+public class BackgroundEnvironment extends AbstractEnvironment {
+
+ /**
+ * @param uri
+ * @param view
+ * @param context
+ * @param stream
+ * @param log
+ * @throws MalformedURLException
+ */
+ public BackgroundEnvironment(String uri, String view, File context, OutputStream stream, Logger log)
+ throws MalformedURLException {
+
+ super(uri, view, context);
+ this.enableLogging(log);
+ this.outputStream = stream;
+
+ // TODO Would special Background*-objects have advantages?
+ Request request = new CommandLineRequest(this, "", uri, null, null, null);
+ this.objectModel.put(ObjectModelHelper.REQUEST_OBJECT, request);
+ this.objectModel.put(ObjectModelHelper.RESPONSE_OBJECT,
+ new CommandLineResponse());
+ this.objectModel.put(ObjectModelHelper.CONTEXT_OBJECT,
+ new CommandLineContext(context.getAbsolutePath()) );
+
+ }
+
+ /**
+ * @see org.apache.cocoon.environment.AbstractEnvironment#redirect(boolean, java.lang.String)
+ */
+ public void redirect(boolean sessionmode, String newURL) throws IOException {
+
+ }
+
+ /**
+ * @see org.apache.cocoon.environment.Environment#setContentType(java.lang.String)
+ */
+ public void setContentType(String mimeType) {
+
+ }
+
+ /**
+ * @see org.apache.cocoon.environment.Environment#getContentType()
+ */
+ public String getContentType() {
+ return null;
+ }
+
+ /**
+ * @see org.apache.cocoon.environment.Environment#setContentLength(int)
+ */
+ public void setContentLength(int length) {
+
+ }
+
+ /**
+ * Always return false
+ *
+ * @see org.apache.cocoon.environment.Environment#isExternal()
+ */
+ public boolean isExternal() {
+ return false;
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/lib/quartz-1.3.2.jar b/ASF_20_SRC_AUTO/src/blocks/cron/lib/quartz-1.3.2.jar
new file mode 100644
index 0000000..3d5de25
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/lib/quartz-1.3.2.jar
Binary files differ
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.js b/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.js
new file mode 100644
index 0000000..adf9054
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.js
@@ -0,0 +1,131 @@
+function Format() {
+}
+
+Format.prototype.format = function(date) {
+ if( date == null || date == undefined )
+ return "-";
+ return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
+}
+Format.prototype.parse = function(date) {
+ if( date == null || date == undefined )
+ return "";
+ return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
+}
+
+function cron( realPath )
+{
+ var done = false;
+ var scheduler = cocoon.getComponent(Packages.org.apache.cocoon.components.cron.JobScheduler.ROLE);
+ var msg_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_MESSAGE;
+ var sleep_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_SLEEP;
+ var pipeline_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_PIPELINE;
+ var testjobrole = "org.apache.cocoon.components.cron.CronJob/test";
+ var logsize = 15;
+ var formatter = new Format();
+ var jobname = "";
+ var message = "I'm here";
+ var sleep = "23";
+ var pipeline = "samples/hello-world/hello.xml";
+ var cronexpr = "";
+ var intervalexpr = "";
+ var atexpr = "";
+ while( ! done )
+ {
+ var jobnames = scheduler.getJobNames();
+ var list = [];
+ for( i = 0; i < jobnames.length; i++ )
+ {
+ list[ i ] = scheduler.getJobSchedulerEntry( jobnames[ i ] );
+ }
+
+ var fileName = realPath + "/WEB-INF/logs/cron.log";
+ var rdr = new java.io.BufferedReader( java.io.FileReader( fileName ) );
+ var count = 0;
+ var lines = new java.util.LinkedList();
+ var line = rdr.readLine();
+ while( line != null )
+ {
+ count++;
+ lines.addLast( line );
+ if( count > logsize )
+ {
+ lines.removeFirst();
+ }
+ line = rdr.readLine();
+ }
+ cocoon.sendPageAndWait( "cron.view", { "entries" : list,
+ "log" : lines,
+ "formatter" : formatter,
+ "jobname" : jobname,
+ "message" : message,
+ "sleep" : sleep,
+ "pipeline" : pipeline,
+ "cronexpr" : cronexpr,
+ "intervalexpr" : intervalexpr,
+ "atexpr" : atexpr
+ }
+ );
+ var action = cocoon.request.getParameter( "action" );
+ if( action == "remove" )
+ {
+ var name = cocoon.request.getParameter( "name" );
+ scheduler.removeJob( name );
+ }
+ else if( action == "add" )
+ {
+ jobname = cocoon.request.getParameter( "jobname" );
+ message = cocoon.request.getParameter( "message" );
+ sleep = cocoon.request.getParameter( "sleep" );
+ pipeline = cocoon.request.getParameter( "pipeline" );
+ cronexpr = cocoon.request.getParameter( "cronexpr" );
+ intervalexpr = cocoon.request.getParameter( "intervalexpr" );
+ atexpr = cocoon.request.getParameter( "atexpr" );
+
+ var scheduletype = cocoon.request.getParameter( "cron" );
+ if( scheduletype != null )
+ {
+ var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
+ params.setParameter( msg_param_key, message );
+ var sleepms = sleep * 1000;
+ params.setParameter( sleep_param_key, sleepms );
+ params.setParameter( pipeline_param_key, pipeline );
+ scheduler.addJob(jobname, testjobrole, cronexpr, false, params, null);
+ }
+ scheduletype = cocoon.request.getParameter( "periodic" );
+ if( scheduletype != null )
+ {
+ var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
+ params.setParameter( msg_param_key, message );
+ var sleepms = sleep * 1000;
+ params.setParameter( sleep_param_key, sleepms );
+ params.setParameter( pipeline_param_key, pipeline );
+ scheduler.addPeriodicJob(jobname, testjobrole, intervalexpr, false, params, null);
+ }
+ scheduletype = cocoon.request.getParameter( "at" );
+ if( scheduletype != null )
+ {
+ var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
+ params.setParameter( msg_param_key, message );
+ var sleepms = sleep * 1000;
+ params.setParameter( sleep_param_key, sleepms );
+ params.setParameter( pipeline_param_key, pipeline );
+ var date = formatter.parse( atexpr );
+ scheduler.fireJobAt(date, jobname, testjobrole, params, null)
+ }
+ scheduletype = cocoon.request.getParameter( "immediately" );
+ if( scheduletype != null )
+ {
+ var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
+ params.setParameter( msg_param_key, message );
+ var sleepms = sleep * 1000;
+ params.setParameter( sleep_param_key, sleepms );
+ params.setParameter( pipeline_param_key, pipeline );
+ scheduler.fireJob(testjobrole, params, null)
+ }
+ }
+ else
+ {
+ // do a refresh
+ }
+ }
+}
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.xml b/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.xml
new file mode 100644
index 0000000..4dc99df
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/samples/cron.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <body>
+ <row>
+ <column>
+ <section>
+ <title>List of Cron Job scheduled</title>
+
+ <table border="1">
+ <tr>
+ <th>Entry name</th>
+ <th>Job name</th>
+ <th>Next scheduled run</th>
+ <th>Is running</th>
+ <th>The Schedule</th>
+ <th>Action</th>
+ </tr>
+ <jx:forEach var="entry" items="${entries}">
+ <tr>
+ <td>${entry.name}</td>
+ <td>${entry.jobName}</td>
+ <td>${formatter.format(entry.nextTime)}</td>
+ <td>
+ <jx:choose>
+ <jx:when test="${entry.isRunning() == true}">
+ <div style="color: red">${entry.isRunning()}</div>
+ </jx:when>
+ <jx:otherwise>
+ <div style="color: green">${entry.isRunning()}</div>
+ </jx:otherwise>
+ </jx:choose>
+ </td>
+ <td>${entry.schedule}</td>
+ <td>
+ <a href="continue.${continuation.id}?action=remove&name=${entry.name}">remove</a>
+ </td>
+ </tr>
+ </jx:forEach>
+ </table>
+ </section>
+ </column>
+ </row>
+ <row>
+ <column>
+ <section>
+ <title>Manage Cron Jobs scheduled</title>
+ <p>
+ Here you can define new CronJobs based on the sample class
+ org.apache.cocoon.components.cron.TestCronJob.
+ </p>
+ <form method="post" action="continue.${continuation.id}?action=add">
+ <table>
+ <tr>
+ <td align="right">Name the new job should have:</td>
+ <td><input name="jobname" size="10" value="${jobname}"/></td>
+ </tr>
+ <tr>
+ <td align="right">Message the job should print into the log:</td>
+ <td><input name="message" size="40" value="${message}"/></td>
+ </tr>
+ <tr>
+ <td align="right">The seconds the job should sleep before finishing:</td>
+ <td><input name="sleep" size="4" value="${sleep}"/></td>
+ </tr>
+ <tr>
+ <td align="right">Call a pipeline:</td>
+ <td><input name="pipeline" size="40" value="${pipeline}"/></td>
+ </tr>
+ <tr>
+ <td align="right">
+ <p>Choose the type of triggering:</p>
+ </td>
+ <td>
+ <table border="1">
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td align="right">
+ Enter a
+ <a href="http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html">
+ Cron
+ </a>
+ expression:
+ </td>
+ <td>
+ <input name="cronexpr" size="20" value="${cronexpr}"/>
+ </td>
+ <td>
+ <input type="submit" name="cron" value="Add Cron"/>
+ </td>
+ </tr>
+ <tr>
+ <td align="right">
+ Enter the interval in seconds:
+ </td>
+ <td>
+ <input name="intervalexpr" size="4" value="${intervalexpr}"/>
+ </td>
+ <td>
+ <input type="submit" name="periodic" value="Add Periodic"/>
+ </td>
+ </tr>
+ <tr>
+ <td align="right">
+ Fire at yyyy-MM-dd HH:mm:ss
+ </td>
+ <td>
+ <input name="atexpr" size="20" value="${atexpr}"/>
+ </td>
+ <td>
+ <input type="submit" name="at" value="Fire at"/>
+ </td>
+ </tr>
+ <tr>
+ <td align="right">
+ Fire immediately
+ </td>
+ <td> </td>
+ <td>
+ <input type="submit" name="immediately" value="Fire now"/>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </section>
+ </column>
+ </row>
+ <row>
+ <column>
+ <section>
+ <title>The Cron Scheduler Logfile</title>
+ <p><a href="continue.${continuation.id}">refresh</a></p>
+ <jx:forEach var="line" items="${log}">
+ <code>${line}</code><br/>
+ </jx:forEach>
+ </section>
+ </column>
+ </row>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/samples/docs.xml b/ASF_20_SRC_AUTO/src/blocks/cron/samples/docs.xml
new file mode 100644
index 0000000..8e4fe42
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/samples/docs.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<document>
+ <body>
+ <section>
+ <title>Cron Job Scheduler</title>
+
+ <p>
+ This implementation of the Java interface
+ <link href="/api/java/org/apache/cocoon/components/cron/JobScheduler.html">
+ <code>JobScheduler</code></link>
+ is based on the <link href="http://quartz.sf.net">Quartz</link>
+ job scheduling project and the
+ <link href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/PooledExecutor.html">
+ <code>PooledExecutor</code></link> of
+ <link href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html">
+ Doug Leas Concurrency Package</link> as a ThreadPool implementation for the Quartz Scheduler.
+ </p>
+
+ <p style="background-color: yellow">
+ <strong>WARNING:</strong> Consider the <link href="/api/java/org/apache/cocoon/components/cron/JobScheduler.html">
+ <code>JobScheduler</code></link> interface as beta in terms of defined functionality as it will be
+ extended with additional requirements in the near future (i.e. getJobList).
+ </p>
+
+ <p>
+ This <link href="/api/java/org/apache/cocoon/components/cron/QuartzJobScheduler.html">
+ <code>QuartzJobScheduler</code></link> implementation is written as a standard
+ <link href="http://avalon.apache.org/">Avalon</link> component. So, its definition you'll find in the
+ <code>cocoon.xconf</code> file of Cocoon if you've included the cron-block in your build (see
+ block.properties or local.block.properties file respectively).
+ </p>
+
+ <p>
+ The snippet below shows the configuration example of the component itself:
+ </p>
+ <source>
+<component role="org.apache.cocoon.components.cron.JobScheduler"
+ class="org.apache.cocoon.components.cron.QuartzJobScheduler"
+ logger="cron">
+ <thread-pool>
+ ...
+ </thread-pool>
+ <triggers>
+ ...
+ </triggers>
+</component>
+ </source>
+
+ <p>
+ There is nothing special about it. As you could see from the snippet above, inside the job
+ scheduler component definition there are two parts:
+ <ul>
+ <li>ThreadPool definition</li>
+ <li>Trigger definitions</li>
+ </ul>
+ </p>
+
+ <section>
+ <title>ThreadPool</title>
+ <p>
+ The ThreadPool definition look like this:
+ </p>
+ <source>
+<!-- Definitions for a thread pool used to schedule jobs -->
+<thread-pool>
+
+ <!-- Should we queue up execution requests if the pool is busy? Defaults to false -->
+ <use-queueing>false</use-queueing>
+
+ <!-- How big should the queue be. Defaults to unlimited size (<0 == default) -->
+ <queue-size>-1</queue-size>
+
+ <!-- The maximum size of the pool. Defaults to Integer.MAX_VALUE (<0 == default) -->
+ <max-pool-size>-1</max-pool-size>
+
+ <!-- The minimum size of the pool.Defaults to 1 (<0 == default) -->
+ <min-pool-size>1</min-pool-size>
+
+ <!-- How long will an idle thread be kept before it will be discarded.
+ Defaults to 60000ms (<0 == default) -->
+ <keep-alive-time-ms>60000</keep-alive-time-ms>
+
+ <!-- Which blocking policy should be used if the maximum pool size and queue size is bounded:
+ Run: (default) The thread making the execute request runs the task itself.
+ This policy helps guard against lockup.
+ Wait: Wait until a thread becomes available.
+ Abort: Throw a RuntimeException
+ Discard: Throw away the current request and return.
+ DiscardOldest: Throw away the oldest request and return. -->
+ <block-policy>RUN</block-policy>
+
+ <!-- Should queued and running jobs be given a chance to finished on system shutdown. Defaults to true -->
+ <shutdown-graceful>true</shutdown-graceful>
+
+ <!-- The maximum time to wait for running jobs to complete. Defaults to unlimited time (<0 == default) -->
+ <shutdown-wait-time-ms>5000</shutdown-wait-time-ms>
+</thread-pool>
+ </source>
+ <p>
+ As mentioned in the beginning, more information about the thread pool details of the base
+ <link href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/PooledExecutor.html">
+ <code>PooledExecutor</code></link> class can be found there.
+ </p>
+ </section>
+
+ <section>
+ <title>Triggers</title>
+ <p>
+ The trigger definition section consists of a single <code><triggers></code> element with as much as
+ needed <code><trigger></code> elements inside it. A <code><trigger></code> element
+ looks like:
+ </p>
+ <source>
+<!-- Definintions of triggers -->
+<triggers>
+
+ <!-- A trigger element has the following attributes:
+ name: A name for the trigger. Mandatory
+ target: A role name to lookup the job object in the ServiceManager. Mandatory
+ concurrent-runs: Is it allowed to reschedule a job even if the previous one is
+ still running. Optionl, defaults to true.
+ A trigger element has the following child elements:
+ cron: A string expression defining the scheduling timing.
+ Optional. If not specified the following elements are explored:
+ seconds: A string expression for the secods part of a cron expression.
+ minutes: A string expression for the secods part of a cron expression.
+ hours: A string expression for the secods part of a cron expression.
+ days: A string expression for the secods part of a cron expression.
+ month: A string expression for the secods part of a cron expression.
+ weekdays: A string expression for the secods part of a cron expression.
+ years: A string expression for the secods part of a cron expression.
+ For detailed information about the expressions look at the documentation
+ -->
+
+ <trigger name="test-job1"
+ target="org.apache.cocoon.components.cron.CronJob/test"
+ concurrent-runs="false">
+ <cron>*/12 * * * * ? *</cron>
+ </trigger>
+ <trigger name="test-job2"
+ target="org.apache.cocoon.components.cron.CronJob/test"
+ concurrent-runs="true">
+ <seconds>*/12</seconds>
+ <minutes>*/5</minutes>
+ <hours>8,10,12,14,16,18</hours>
+ <days>?</days>
+ <months>*</months>
+ <weekdays>SUN-FRI</weekdays>
+ </trigger>
+</triggers>
+ </source>
+ <p>
+ The <code><cron></code> element is simply the concatenation of the values of the elements
+ <code><seconds></code>, <code><minutes></code>, <code><hours></code>,
+ <code><days></code>, <code><months></code>, <code><weekdays></code>, and
+ <code><year></code> delimeted with spaces. You can use either form but the
+ <code><cron></code> element will be preferred by the implementation if you use both forms
+ together in one <code><trigger></code> element. A description of the
+ expressions used inside the <code><trigger></code> elements is described in the
+ <link href="http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html">
+ <code>CronTrigger</code></link> class.
+ </p>
+ </section>
+
+ <section>
+ <title>Job Components</title>
+ <p>
+ The
+ <link href="/api/java/org/apache/cocoon/components/cron/CronJob.html"><code>CronJob</code></link>
+ object doing your work can be defined in the <code>cocoon.xconf</code>
+ file as a regular Avalon components. The <code>role</code> attribute given to this component is
+ refered to by the <code>target</code> attribute in the <code><trigger></code> element above.
+ Below is the sample for the
+ <link href="/api/java/org/apache/cocoon/components/cron/TestCronJob.html">
+ <code>TestCronJob</code></link> component.
+ </p>
+ <source>
+<!-- sample definition of cron job -->
+<component role="org.apache.cocoon.components.cron.CronJob/test"
+ class="org.apache.cocoon.components.cron.TestCronJob"
+ logger="cron.test">
+ <msg>I'm here</msg>
+ <sleep>23000</sleep>
+</component>
+ </source>
+ </section>
+
+ <section>
+ <title>Samples</title>
+ <p>
+ Now you should take a look at the samples to show you how the API of the
+ <link href="cron.html"><code>JobScheduler</code></link> can be used.
+ </p>
+ </section>
+ </section>
+ </body>
+</document>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/samples/samples.xml b/ASF_20_SRC_AUTO/src/blocks/cron/samples/samples.xml
new file mode 100644
index 0000000..e053afa
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/samples/samples.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<!-- CVS: $Id: samples.xml,v 1.3 2003/09/05 10:23:17 giacomo Exp $ -->
+
+<samples xmlns:xlink="http://www.w3.org/1999/xlink" name="Cron block">
+
+ <group name="Main examples page.">
+ <sample name="Back" href="..">to Cocoon main examples page</sample>
+ <sample name="Back" href="../blocks">to Cocoon block examples page</sample>
+ </group>
+
+ <group name="Documentation">
+ <note>
+ The Cron component/block is a utility component to manage execute immediate,
+ once at some future time, and periodic execution of a Java class or Avalon Component.
+ </note>
+ <sample name="Cron Component documentation" href="docs.html">
+ Documentation for the Cron component.
+ </sample>
+ </group>
+
+ <group name="Cron Sample">
+ <sample name="Cron" href="cron.html" xlink:role="dynamic">
+ Cron samples.
+ </sample>
+ </group>
+
+ <group name="">
+ </group>
+
+</samples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/cron/samples/sitemap.xmap b/ASF_20_SRC_AUTO/src/blocks/cron/samples/sitemap.xmap
new file mode 100644
index 0000000..2ad9a68
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/cron/samples/sitemap.xmap
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- ========================= Components ================================ -->
+
+ <map:components>
+ <map:generators default="file">
+ <map:generator name="jx"
+ src="org.apache.cocoon.generation.JXTemplateGenerator"
+ logger="jx.sitemap.generator"/>
+ </map:generators>
+ <map:transformers default="xslt"/>
+ <map:readers default="resource"/>
+ <map:serializers default="html"/>
+ <map:matchers default="wildcard"/>
+ <map:selectors default="browser"/>
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view name="content" from-label="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view from-label="content" name="pretty-content">
+ <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+ <map:serialize type="html"/>
+ </map:view>
+
+ <map:view name="links" from-position="last">
+ <map:serialize type="links"/>
+ </map:view>
+
+ </map:views>
+
+<!-- ============================ Flows ================================== -->
+
+ <map:flow language="javascript">
+ <map:script src="cron.js"/>
+ </map:flow>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+
+ <map:pipeline internal-only="false">
+ <map:match pattern="*.view">
+ <map:generate type="jx" src="{1}.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+ </map:pipeline>
+
+ <map:pipeline>
+
+ <map:match pattern="">
+ <map:redirect-to uri="samples"/>
+ </map:match>
+
+ <map:match pattern="samples">
+ <map:generate src="samples.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="docs.html">
+ <map:generate src="docs.xml"/>
+ <map:transform src="context://samples/common/style/xsl/html/complex-page2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="cron.html">
+ <map:call function="cron">
+ <map:parameter name="realPath" value="{realpath:/}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="continue.*">
+ <map:call continuation="{1}"/>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+
+</map:sitemap>
+
+<!-- end of file -->
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/build.xml b/ASF_20_SRC_AUTO/src/blocks/databases/build.xml
new file mode 100644
index 0000000..59e080c
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/build.xml
@@ -0,0 +1,9 @@
+<project default="main" >
+
+ <target name="main">
+ <mkdir dir="${build.webapp.webinf}/db"/>
+ <copy file="${block.dir}/conf/cocoondb.script" tofile="${build.webapp.webinf}/db/cocoondb.script"/>
+ <copy file="${block.dir}/conf/cocoondb.properties" tofile="${build.webapp.webinf}/db/cocoondb.properties"/>
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/blob.xconf b/ASF_20_SRC_AUTO/src/blocks/databases/conf/blob.xconf
new file mode 100644
index 0000000..33bf7f9
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/blob.xconf
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon/source-factories" unless="component-instance[@name='blob']">
+
+ <!-- blob pseudo protocol -->
+ <component-instance name="blob" class="org.apache.cocoon.components.source.impl.BlobSourceFactory"/>
+
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.properties b/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.properties
new file mode 100644
index 0000000..d7848fb
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.properties
@@ -0,0 +1,16 @@
+#HSQL database
+#Tue Mar 11 17:17:57 CET 2003
+sql.strict_fk=true
+readonly=false
+sql.strong_fk=true
+hsqldb.version=1.7.1
+version=1.7.1
+hsqldb.cache_scale=14
+sql.compare_in_locale=false
+sql.month=true
+hsqldb.log_size=200
+modified=no
+hsqldb.cache_version=1.7.0
+hsqldb.original_version=1.7.1
+hsqldb.compatible_version=1.7.0
+sql.enforce_size=false
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.script b/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.script
new file mode 100644
index 0000000..8c7da14
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/cocoondb.script
@@ -0,0 +1,125 @@
+CREATE TABLE DEPARTMENT(ID INTEGER NOT NULL,NAME VARCHAR NOT NULL,UNIQUE(ID))
+CREATE TABLE EMPLOYEE(ID INTEGER NOT NULL,DEPARTMENT_ID INTEGER NOT NULL,NAME VARCHAR NOT NULL,UNIQUE(ID))
+CREATE TABLE USER(UID INTEGER IDENTITY PRIMARY KEY,NAME VARCHAR,FIRSTNAME VARCHAR,UNAME VARCHAR,UNIQUE(UNAME))
+CREATE TABLE GROUPS(GID INTEGER IDENTITY PRIMARY KEY,GNAME VARCHAR,UNIQUE(GNAME))
+CREATE TABLE USER_GROUPS(UID INTEGER,GID INTEGER,UNIQUE(UID,GID),FOREIGN KEY(UID)REFERENCES USER(UID),FOREIGN KEY(GID)REFERENCES GROUPS(GID))
+CREATE TABLE STATE_TAX(CATEGORY VARCHAR NOT NULL,GROSSTAX_COLLECTED DOUBLE NOT NULL,NETTAX_COLLECTED DOUBLE NOT NULL,YEAR INTEGER NOT NULL)
+CREATE TABLE MEDIA(ID INTEGER IDENTITY PRIMARY KEY,IMAGE BINARY,MIMETYPE VARCHAR)
+CREATE TABLE SOURCEPROPS(SOURCE VARCHAR NOT NULL,NAMESPACE VARCHAR NOT NULL,NAME VARCHAR NOT NULL,VALUE VARCHAR NOT NULL,CONSTRAINT SYS_CT_11 UNIQUE(SOURCE,NAMESPACE,NAME))
+GRANT ALL ON CLASS "org.hsqldb.Library" TO PUBLIC
+GRANT ALL ON CLASS "java.lang.Math" TO PUBLIC
+CREATE USER SA PASSWORD "" ADMIN
+CREATE ALIAS DAYNAME FOR "org.hsqldb.Library.dayname"
+CREATE ALIAS SPACE FOR "org.hsqldb.Library.space"
+CREATE ALIAS SUBSTRING FOR "org.hsqldb.Library.substring"
+CREATE ALIAS SQRT FOR "java.lang.Math.sqrt"
+CREATE ALIAS ABS FOR "java.lang.Math.abs"
+CREATE ALIAS POWER FOR "java.lang.Math.pow"
+CREATE ALIAS CHAR FOR "org.hsqldb.Library.character"
+CREATE ALIAS CONCAT FOR "org.hsqldb.Library.concat"
+CREATE ALIAS PI FOR "org.hsqldb.Library.pi"
+CREATE ALIAS SECOND FOR "org.hsqldb.Library.second"
+CREATE ALIAS TRUNCATE FOR "org.hsqldb.Library.truncate"
+CREATE ALIAS MONTH FOR "org.hsqldb.Library.month"
+CREATE ALIAS LOWER FOR "org.hsqldb.Library.lcase"
+CREATE ALIAS ATAN2 FOR "java.lang.Math.atan2"
+CREATE ALIAS REPEAT FOR "org.hsqldb.Library.repeat"
+CREATE ALIAS DAYOFMONTH FOR "org.hsqldb.Library.dayofmonth"
+CREATE ALIAS TAN FOR "java.lang.Math.tan"
+CREATE ALIAS RADIANS FOR "java.lang.Math.toRadians"
+CREATE ALIAS FLOOR FOR "java.lang.Math.floor"
+CREATE ALIAS NOW FOR "org.hsqldb.Library.now"
+CREATE ALIAS ACOS FOR "java.lang.Math.acos"
+CREATE ALIAS DAYOFWEEK FOR "org.hsqldb.Library.dayofweek"
+CREATE ALIAS CEILING FOR "java.lang.Math.ceil"
+CREATE ALIAS DAYOFYEAR FOR "org.hsqldb.Library.dayofyear"
+CREATE ALIAS LCASE FOR "org.hsqldb.Library.lcase"
+CREATE ALIAS WEEK FOR "org.hsqldb.Library.week"
+CREATE ALIAS SOUNDEX FOR "org.hsqldb.Library.soundex"
+CREATE ALIAS ASIN FOR "java.lang.Math.asin"
+CREATE ALIAS LOCATE FOR "org.hsqldb.Library.locate"
+CREATE ALIAS EXP FOR "java.lang.Math.exp"
+CREATE ALIAS MONTHNAME FOR "org.hsqldb.Library.monthname"
+CREATE ALIAS YEAR FOR "org.hsqldb.Library.year"
+CREATE ALIAS LEFT FOR "org.hsqldb.Library.left"
+CREATE ALIAS ROUNDMAGIC FOR "org.hsqldb.Library.roundMagic"
+CREATE ALIAS BITOR FOR "org.hsqldb.Library.bitor"
+CREATE ALIAS LTRIM FOR "org.hsqldb.Library.ltrim"
+CREATE ALIAS COT FOR "org.hsqldb.Library.cot"
+CREATE ALIAS COS FOR "java.lang.Math.cos"
+CREATE ALIAS MOD FOR "org.hsqldb.Library.mod"
+CREATE ALIAS SIGN FOR "org.hsqldb.Library.sign"
+CREATE ALIAS DEGREES FOR "java.lang.Math.toDegrees"
+CREATE ALIAS LOG FOR "java.lang.Math.log"
+CREATE ALIAS SIN FOR "java.lang.Math.sin"
+CREATE ALIAS CURTIME FOR "org.hsqldb.Library.curtime"
+CREATE ALIAS DIFFERENCE FOR "org.hsqldb.Library.difference"
+CREATE ALIAS INSERT FOR "org.hsqldb.Library.insert"
+CREATE ALIAS SUBSTR FOR "org.hsqldb.Library.substring"
+CREATE ALIAS DATABASE FOR "org.hsqldb.Library.database"
+CREATE ALIAS MINUTE FOR "org.hsqldb.Library.minute"
+CREATE ALIAS HOUR FOR "org.hsqldb.Library.hour"
+CREATE ALIAS IDENTITY FOR "org.hsqldb.Library.identity"
+CREATE ALIAS QUARTER FOR "org.hsqldb.Library.quarter"
+CREATE ALIAS CURDATE FOR "org.hsqldb.Library.curdate"
+CREATE ALIAS BITAND FOR "org.hsqldb.Library.bitand"
+CREATE ALIAS USER FOR "org.hsqldb.Library.user"
+CREATE ALIAS UCASE FOR "org.hsqldb.Library.ucase"
+CREATE ALIAS RTRIM FOR "org.hsqldb.Library.rtrim"
+CREATE ALIAS LOG10 FOR "org.hsqldb.Library.log10"
+CREATE ALIAS RIGHT FOR "org.hsqldb.Library.right"
+CREATE ALIAS ATAN FOR "java.lang.Math.atan"
+CREATE ALIAS UPPER FOR "org.hsqldb.Library.ucase"
+CREATE ALIAS ASCII FOR "org.hsqldb.Library.ascii"
+CREATE ALIAS RAND FOR "java.lang.Math.random"
+CREATE ALIAS LENGTH FOR "org.hsqldb.Library.length"
+CREATE ALIAS ROUND FOR "org.hsqldb.Library.round"
+CREATE ALIAS REPLACE FOR "org.hsqldb.Library.replace"
+INSERT INTO DEPARTMENT VALUES(1,'Development')
+INSERT INTO DEPARTMENT VALUES(2,'Management')
+INSERT INTO DEPARTMENT VALUES(3,'Testers')
+INSERT INTO EMPLOYEE VALUES(1,1,'Donald Ball')
+INSERT INTO EMPLOYEE VALUES(2,1,'Sylvain Wallez ')
+INSERT INTO EMPLOYEE VALUES(3,1,'Carsten Ziegeler ')
+INSERT INTO EMPLOYEE VALUES(4,1,'Torsten Curdt')
+INSERT INTO EMPLOYEE VALUES(5,1,'Marcus Crafter')
+INSERT INTO EMPLOYEE VALUES(6,1,'Ovidiu Predescu')
+INSERT INTO EMPLOYEE VALUES(7,1,'Christian Haul')
+INSERT INTO EMPLOYEE VALUES(8,2,'Stefano Mazzocchi')
+INSERT INTO EMPLOYEE VALUES(9,3,'Pierpaolo Fumagalli')
+INSERT INTO EMPLOYEE VALUES(10,3,'Davanum Srinivas')
+
+INSERT INTO STATE_TAX VALUES('State Sales And Use',6.263250997E9,6.213961851E9,2000)
+INSERT INTO STATE_TAX VALUES('Local Sales And Use',1.321129345E9,1.321129345E9,2000)
+INSERT INTO STATE_TAX VALUES('Resort Area Excise',718624.0,718624.0,2000)
+INSERT INTO STATE_TAX VALUES('State Personal Income',8.983891961E9,8.084576329E9,2000)
+INSERT INTO STATE_TAX VALUES('Corporation Franchise',1.219484766E9,1.029883951E9,2000)
+INSERT INTO STATE_TAX VALUES('Motor Vehicle Fuel',1.418996649E9,1.404945725E9,2000)
+INSERT INTO STATE_TAX VALUES('Public Utility Excise',7.04245493E8,6.75339746E8,2000)
+INSERT INTO STATE_TAX VALUES('Kilowatt-Hour Excise',0.0,0.0,2000)
+INSERT INTO STATE_TAX VALUES('Cigarette Excise',2.89795508E8,2.87710095E8,2000)
+INSERT INTO STATE_TAX VALUES('Dealers in Intangibles',5055311.0,2.2333722E7,2000)
+INSERT INTO STATE_TAX VALUES('Motor Fuel Use',2.2615436E7,6.6889345E7,2000)
+INSERT INTO STATE_TAX VALUES('Alchoholic Beverage Excise',5.6125329E7,5.5993783E7,2000)
+INSERT INTO STATE_TAX VALUES('Replacement Tire Fee',3339367.0,3339367.0,2000)
+INSERT INTO STATE_TAX VALUES('Local Alchoholic Beverage',6284465.0,5851787.0,2000)
+INSERT INTO STATE_TAX VALUES('Horse Racing',1.6582056E7,1.7321198E7,2000)
+INSERT INTO STATE_TAX VALUES('Severance',8295336.0,7981539.0,2000)
+INSERT INTO STATE_TAX VALUES('School District Income',1.50083042E8,1.61257059E8,2000)
+INSERT INTO STATE_TAX VALUES('State Sales And Use',6.287758244E9,6.23711041E9,2001)
+INSERT INTO STATE_TAX VALUES('Local Sales And Use',1.352436625E9,1.352436625E9,2001)
+INSERT INTO STATE_TAX VALUES('Resort Area Excise',719420.0,719420.0,2001)
+INSERT INTO STATE_TAX VALUES('State Personal Income',9.221429278E9,8.119314587E9,2001)
+INSERT INTO STATE_TAX VALUES('Corporation Franchise',1.158910767E9,9.72967198E8,2001)
+INSERT INTO STATE_TAX VALUES('Motor Vehicle Fuel',1.325132798E9,1.307275001E9,2001)
+INSERT INTO STATE_TAX VALUES('Public Utility Excise',6.91925015E8,6.7431469E8,2001)
+INSERT INTO STATE_TAX VALUES('Kilowatt-Hour Excise',3.8026261E7,3.8026261E7,2001)
+INSERT INTO STATE_TAX VALUES('Cigarette Excise',2.83978172E8,2.82481419E8,2001)
+INSERT INTO STATE_TAX VALUES('Dealers in Intangibles',2.4913075E7,2.4881108E7,2001)
+INSERT INTO STATE_TAX VALUES('Motor Fuel Use',7.5662992E7,7.5311561E7,2001)
+INSERT INTO STATE_TAX VALUES('Alchoholic Beverage Excise',5.5862063E7,5.5740722E7,2001)
+INSERT INTO STATE_TAX VALUES('Replacement Tire Fee',3470795.0,3470795.0,2001)
+INSERT INTO STATE_TAX VALUES('Local Alchoholic Beverage',5851787.0,5851787.0,2001)
+INSERT INTO STATE_TAX VALUES('Horse Racing',1.7921198E7,1.7321198E7,2001)
+INSERT INTO STATE_TAX VALUES('Severance',7981539.0,7967438.0,2001)
+INSERT INTO STATE_TAX VALUES('School District Income',1.61257059E8,1.53238001E8,2001)
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases-trans.xmap b/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases-trans.xmap
new file mode 100644
index 0000000..01ab677
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases-trans.xmap
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+
+<xmap xpath="/sitemap/components/transformers" unless="transformer[@name='sql']">
+
+ <map:transformer logger="sitemap.transformer.sql" name="sql" src="org.apache.cocoon.transformation.SQLTransformer"/>
+
+</xmap>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases.xsamples b/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases.xsamples
new file mode 100644
index 0000000..3b13683
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/databases.xsamples
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<xsamples xpath="/samples" unless="group[@name='Databases']">
+
+ <group name="Databases">
+ <note>
+ For the examples of this block to work, either the HSQLDB block
+ needs to be present as well or another RDBMS backend needs to
+ be configured. Schema information is contained in each
+ subdirectory of samples/databases.
+ </note>
+
+ <sample name="Samples" href="databases/samples">
+ Continue to database block samples.
+ </sample>
+ </group>
+
+</xsamples>
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/datasources.xconf b/ASF_20_SRC_AUTO/src/blocks/databases/conf/datasources.xconf
new file mode 100644
index 0000000..b43b6ed
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/datasources.xconf
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon" unless="datasources">
+ <datasources>
+ <jdbc logger="core.datasources.personnel" name="personnel">
+ <!--
+ If you have an Oracle database, and are using the the
+ pool-controller below, you should add the attribute
+ "oradb" and set it to true.
+
+ <pool-controller min="5" max="10" oradb="true"/>
+
+ That way the test to see if the server has disconnected
+ the JdbcConnection will function properly.
+ -->
+ <pool-controller max="10" min="5"/>
+ <!--
+ If you need to ensure an autocommit is set to true or
+ false, then create the "auto-commit" element below.
+
+ <auto-commit>false</auto-commit>
+
+ The default is true.
+ -->
+ <dburl>jdbc:hsqldb:hsql://localhost:9002</dburl>
+ <user>sa</user>
+ <password></password>
+ </jdbc>
+ </datasources>
+</xconf>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules-input.xconf b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules-input.xconf
new file mode 100644
index 0000000..8634073
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules-input.xconf
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon/input-modules" unless="component-instance[@class='org.apache.cocoon.components.modules.input.CollectionMetaModule']">
+
+ <component-instance logger="core.modules.input" name="collection" class="org.apache.cocoon.components.modules.input.CollectionMetaModule"/>
+
+</xconf>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xconf b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xconf
new file mode 100644
index 0000000..95a4c61
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xconf
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon" unless="autoincrement-modules">
+ <!-- =============== Database Modules ==================== -->
+
+ <autoincrement-modules>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.HsqlIdentityAutoIncrementModule"/>
+<!--
+ Choose the one suitable for your DBMS. You *can* have more than
+ one at a time, but they need to have different names. You then
+ need to specify explicitly, which one to use in your descriptor
+ file.
+
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.ManualAutoIncrementModule"/>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.IfxSerialAutoIncrementModule"/>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.McKoiSequenceModule"/>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.MysqlAutoIncrementModule"/>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.PgsqlAutoIncrementModule"/>
+ <component-instance logger="core.modules.auto" name="auto" class="org.apache.cocoon.components.modules.database.SQLServerIdentityAutoIncrementModule"/>
+-->
+ </autoincrement-modules>
+</xconf>
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xroles b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xroles
new file mode 100644
index 0000000..a3209e5
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/db-modules.xroles
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xroles xpath="/role-list" unless="role[@name='org.apache.cocoon.components.modules.database.AutoIncrementModuleSelector']">
+ <!-- database modules -->
+
+ <role name="org.apache.cocoon.components.modules.database.AutoIncrementModuleSelector"
+ shorthand="autoincrement-modules"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+
+</xroles>
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/esql.xconf b/ASF_20_SRC_AUTO/src/blocks/databases/conf/esql.xconf
new file mode 100644
index 0000000..648847f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/esql.xconf
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<xconf xpath="/cocoon/markup-languages/xsp-language[@name='xsp']/target-language[@name='java']" unless="builtin-logicsheet/parameter[@name='prefix' and @value='esql']">
+
+ <!-- The ESQL logicsheet is an XSP logicsheet that performs sql queries and
+ serializes their results as XML. This allows you to work with data from a
+ wide variety of different sources when using Apache Cocoon. -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="esql"/>
+ <parameter name="uri" value="http://apache.org/cocoon/SQL/v2"/>
+ <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/esql.xsl"/>
+ </builtin-logicsheet>
+
+
+</xconf>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/odbc.driver.xweb b/ASF_20_SRC_AUTO/src/blocks/databases/conf/odbc.driver.xweb
new file mode 100644
index 0000000..d4a21cd
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/odbc.driver.xweb
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xweb xpath="/web-app/servlet/init-param[param-name='load-class']/param-value"
+ unless="text()[contains(string(.),'sun.jdbc.odbc.JdbcOdbcDriver')] |
+ comment()[contains(string(.),'sun.jdbc.odbc.JdbcOdbcDriver')]"
+ if-prop="include.driver.odbc">
+ <!-- ODBC -->
+ sun.jdbc.odbc.JdbcOdbcDriver
+</xweb>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/oracle.driver.xweb b/ASF_20_SRC_AUTO/src/blocks/databases/conf/oracle.driver.xweb
new file mode 100644
index 0000000..a6a0938
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/oracle.driver.xweb
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xweb xpath="/web-app/servlet/init-param[param-name='load-class']/param-value"
+ unless="text()[contains(string(.),'oracle.jdbc.driver.OracleDriver')] |
+ comment()[contains(string(.),'oracle.jdbc.driver.OracleDriver')]"
+ if-prop="include.driver.oracle">
+ <!-- For Oracle Database: -->
+ oracle.jdbc.driver.OracleDriver
+</xweb>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/conf/postgresql.driver.xweb b/ASF_20_SRC_AUTO/src/blocks/databases/conf/postgresql.driver.xweb
new file mode 100644
index 0000000..f3cbae1
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/conf/postgresql.driver.xweb
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<xweb xpath="/web-app/servlet/init-param[param-name='load-class']/param-value"
+ unless="text()[contains(string(.),'org.postgresql.Driver')] |
+ comment()[contains(string(.),'org.postgresql.Driver')]"
+ if-prop="include.driver.postgre">
+ <!-- For PostgeSQL Database: -->
+ org.postgresql.Driver
+</xweb>
\ No newline at end of file
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/AbstractDatabaseAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/AbstractDatabaseAction.java
new file mode 100644
index 0000000..c413e56
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/AbstractDatabaseAction.java
@@ -0,0 +1,696 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.sql.Array;
+import java.sql.Clob;
+import java.sql.Date;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.Types;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.util.ImageProperties;
+import org.apache.cocoon.util.ImageUtils;
+
+/**
+ * Set up environment for configurable form handling data. It is
+ * important to note that all DatabaseActions use a common configuration
+ * format. This group of actions are unique in that they employ a
+ * terciary mapping. There is the Form parameter, the database column,
+ * and the type.
+ *
+ * Each configuration file must use the same format in order to be
+ * effective. The name of the root configuration element is irrelevant.
+ *
+ * <pre>
+ * <root>
+ * <connection>personnel<connection>
+ * <table>
+ * <keys>
+ * <key param="id" dbcol="id" type="int"/>
+ * </keys>
+ * <values>
+ * <value param="name" dbcol="name" type="string"/>
+ * <value param="department" dbcol="department_id" type="int"/>
+ * </values>
+ * </table>
+ * </root>
+ * </pre>
+ *
+ * The types recognized by this system are:
+ *
+ * <table>
+ * <tr>
+ * <th>Type</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>ascii</td>
+ * <td>ASCII Input Stream, a CLOB input</td>
+ * </tr>
+ * <tr>
+ * <td>big-decimal</td>
+ * <td>a <code>java.math.BigDecimal</code> value</td>
+ * </tr>
+ * <tr>
+ * <td>binary</td>
+ * <td>Binary Input Stream, a BLOB input</td>
+ * </tr>
+ * <tr>
+ * <td>byte</td>
+ * <td>a Byte</td>
+ * </tr>
+ * <tr>
+ * <td>string</td>
+ * <td>a String</td>
+ * </tr>
+ * <tr>
+ * <td>date</td>
+ * <td>a Date</td>
+ * </tr>
+ * <tr>
+ * <td>double</td>
+ * <td>a Double</td>
+ * </tr>
+ * <tr>
+ * <td>float</td>
+ * <td>a Float</td>
+ * </tr>
+ * <tr>
+ * <td>int</td>
+ * <td>an Integer</td>
+ * </tr>
+ * <tr>
+ * <td>long</td>
+ * <td>a Long</td>
+ * </tr>
+ * <tr>
+ * <td>short</td>
+ * <td>a Short</td>
+ * </tr>
+ * <tr>
+ * <td>time</td>
+ * <td>a Time</td>
+ * </tr>
+ * <tr>
+ * <td>time-stamp</td>
+ * <td>a Timestamp</td>
+ * </tr>
+ * <tr>
+ * <td>now</td>
+ * <td>a Timestamp with the current day/time--the form value is ignored.</td>
+ * </tr>
+ * <tr>
+ * <td>image</td>
+ * <td>a binary image file, we cache the attribute information</td>
+ * </tr>
+ * <tr>
+ * <td>image-width</td>
+ * <td>
+ * the width attribute of the cached file attribute. NOTE:
+ * param attribute must equal the param for image with a
+ * "-width" suffix.
+ * </td>
+ * </tr>
+ * <tr>
+ * <td>image-height</td>
+ * <td>
+ * the width attribute of the cached file attribute NOTE:
+ * param attribute must equal the param for image with a
+ * "-height" suffix.
+ * </td>
+ * </tr>
+ * <tr>
+ * <td>image-size</td>
+ * <td>
+ * the size attribute of the cached file attribute NOTE:
+ * param attribute must equal the param for image with a
+ * "-size" suffix.
+ * </td>
+ * </tr>
+ * </table>
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @author <a href="mailto:balld@apache.org">Donald Ball</a>
+ * @version CVS $Id: AbstractDatabaseAction.java,v 1.4 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public abstract class AbstractDatabaseAction extends AbstractComplementaryConfigurableAction implements Configurable, Disposable {
+ protected Map files = new HashMap();
+ protected static final Map typeConstants;
+ protected ServiceSelector dbselector;
+
+ static {
+ /** Initialize the map of type names to jdbc column types.
+ Note that INTEGER, BLOB, and VARCHAR column types map to more than
+ one type name. **/
+ Map constants = new HashMap();
+ constants.put("ascii", new Integer(Types.CLOB));
+ constants.put("big-decimal", new Integer(Types.BIGINT));
+ constants.put("binary", new Integer(Types.BLOB));
+ constants.put("byte", new Integer(Types.TINYINT));
+ constants.put("string", new Integer(Types.VARCHAR));
+ constants.put("date", new Integer(Types.DATE));
+ constants.put("double", new Integer(Types.DOUBLE));
+ constants.put("float", new Integer(Types.FLOAT));
+ constants.put("int", new Integer(Types.INTEGER));
+ constants.put("long", new Integer(Types.NUMERIC));
+ constants.put("short", new Integer(Types.SMALLINT));
+ constants.put("time", new Integer(Types.TIME));
+ constants.put("time-stamp", new Integer(Types.TIMESTAMP));
+ constants.put("now", new Integer(Types.LONGVARBINARY));
+ //constants.put("image", new Integer(Types.DISTINCT));
+ //constants.put("image-width", new Integer(Types.ARRAY));
+ //constants.put("image-height", new Integer(Types.BIT));
+ //constants.put("image-size", new Integer(Types.CHAR));
+ constants.put("image",new Integer(Types.BLOB));
+ constants.put("image-width",new Integer(Types.INTEGER));
+ constants.put("image-height",new Integer(Types.INTEGER));
+ constants.put("image-size",new Integer(Types.INTEGER));
+ constants.put("row-index",new Integer(Types.INTEGER));
+ constants.put("image-mime-type",new Integer(Types.VARCHAR));
+ constants.put("array", new Integer(Types.ARRAY));
+ constants.put("row", new Integer(Types.STRUCT));
+ constants.put("object", new Integer(Types.OTHER));
+ typeConstants = Collections.unmodifiableMap(constants);
+ }
+
+ /**
+ * Compose the Actions so that we can select our databases.
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ super.service(manager);
+ this.dbselector = (ServiceSelector) manager.lookup(DataSourceComponent.ROLE + "Selector");
+ }
+ /**
+ * Get the Datasource we need.
+ */
+ protected final DataSourceComponent getDataSource(Configuration conf) throws ServiceException {
+ Configuration dsn = conf.getChild("connection");
+ return (DataSourceComponent) this.dbselector.select(dsn.getValue(""));
+ }
+
+ /**
+ * Return whether a type is a Large Object (BLOB/CLOB).
+ */
+ protected final boolean isLargeObject (String type) {
+ if ("ascii".equals(type)) return true;
+ if ("binary".equals(type)) return true;
+ if ("image".equals(type)) return true;
+
+ return false;
+ }
+
+ /**
+ * Get the Statement column so that the results are mapped correctly.
+ */
+ protected Object getColumn(ResultSet set, Request request, Configuration entry)
+ throws Exception {
+ Integer type = (Integer) AbstractDatabaseAction.typeConstants.get(entry.getAttribute("type"));
+ String attribute = entry.getAttribute("param", "");
+ String dbcol = entry.getAttribute("dbcol", "");
+ Object value = null;
+
+ switch (type.intValue()) {
+ case Types.CLOB:
+ Clob dbClob = set.getClob(dbcol);
+ int length = (int) dbClob.length();
+ InputStream asciiStream = new BufferedInputStream(dbClob.getAsciiStream());
+ byte[] buffer = new byte[length];
+ asciiStream.read(buffer);
+ String str = new String(buffer);
+ asciiStream.close();
+ value = str;
+ break;
+ case Types.BIGINT:
+ value = set.getBigDecimal(dbcol);
+ break;
+ case Types.TINYINT:
+ value = new Byte(set.getByte(dbcol));
+ break;
+ case Types.VARCHAR:
+ value = set.getString(dbcol);
+ break;
+ case Types.DATE:
+ value = set.getDate(dbcol);
+ break;
+ case Types.DOUBLE:
+ value = new Double(set.getDouble(dbcol));
+ break;
+ case Types.FLOAT:
+ value = new Float(set.getFloat(dbcol));
+ break;
+ case Types.INTEGER:
+ value = new Integer(set.getInt(dbcol));
+ break;
+ case Types.NUMERIC:
+ value = new Long(set.getLong(dbcol));
+ break;
+ case Types.SMALLINT:
+ value = new Short(set.getShort(dbcol));
+ break;
+ case Types.TIME:
+ value = set.getTime(dbcol);
+ break;
+ case Types.TIMESTAMP:
+ value = set.getTimestamp(dbcol);
+ break;
+ case Types.ARRAY:
+ value = set.getArray(dbcol);
+ break;
+ case Types.BIT:
+ value = new Integer(set.getInt(dbcol));
+ break;
+ case Types.CHAR:
+ value = new Integer(set.getInt(dbcol));
+ break;
+ case Types.STRUCT:
+ value = set.getObject(dbcol);
+ break;
+ case Types.OTHER:
+ value = set.getObject(dbcol);
+ break;
+
+ default:
+ // The blob types have to be requested separately, via a Reader.
+ value = "";
+ break;
+ }
+
+ setRequestAttribute(request,attribute,value);
+
+ return value;
+ }
+
+ /**
+ * Set the Statement column so that the results are mapped correctly.
+ * The name of the parameter is retrieved from the configuration object.
+ *
+ * @param statement the prepared statement
+ * @param position the position of the column
+ * @param request the request
+ * @param entry the configuration object
+ */
+ protected void setColumn(PreparedStatement statement, int position, Request request, Configuration entry)
+ throws Exception {
+ setColumn(statement,position,request,entry,entry.getAttribute("param",""));
+ }
+
+ /**
+ * Set the Statement column so that the results are mapped correctly. The
+ * value of the column is retrieved from the request object. If the
+ * named parameter exists in the request object's parameters, that value
+ * is used. Otherwise if the named parameter exists in the request object's
+ * attributes, that value is used. Otherwise the request object is
+ * retrieved using Request.get(attribute), which is documented to be the
+ * same as Request.getAttribute(attribute), so something weird must be
+ * going on.
+ *
+ * @param statement the prepared statement
+ * @param position the position of the column
+ * @param request the request
+ * @param entry the configuration object
+ * @param param the name of the request parameter
+ */
+ protected void setColumn(PreparedStatement statement, int position, Request request, Configuration entry, String param)
+ throws Exception {
+ Object value = request.getParameter(param);
+ if (value == null) value = request.getAttribute(param);
+ if (value == null) value = request.get(param);
+ setColumn(statement,position,request,entry,param,value);
+ }
+
+ /**
+ * Set the Statement column so that the results are mapped correctly.
+ *
+ * @param statement the prepared statement
+ * @param position the position of the column
+ * @param request the request
+ * @param entry the configuration object
+ * @param param the name of the request parameter
+ * @param value the value of the column
+ */
+ protected void setColumn(PreparedStatement statement, int position, Request request, Configuration entry, String param, Object value) throws Exception {
+ setColumn(statement,position,request,entry,param,value,0);
+ }
+
+ /**
+ * Set the Statement column so that the results are mapped correctly.
+ *
+ * @param statement the prepared statement
+ * @param position the position of the column
+ * @param request the request
+ * @param entry the configuration object
+ * @param param the name of the request parameter
+ * @param value the value of the column
+ * @param rowIndex the index of the current row for manyrows inserts
+ */
+ protected void setColumn(PreparedStatement statement, int position, Request request, Configuration entry, String param, Object value, int rowIndex) throws Exception {
+ getLogger().debug("Setting column "+position+" named "+param+" with value "+value);
+ if (value instanceof String) {
+ value = ((String) value).trim();
+ }
+ String typeName = entry.getAttribute("type");
+ Integer typeObject = (Integer) AbstractDatabaseAction.typeConstants.get(typeName);
+ if (typeObject == null) {
+ throw new SQLException("Can't set column because the type "+typeName+" is unrecognized");
+ }
+ if (value == null) {
+ /** If the value is null, set the column value null and return **/
+ if (typeName.equals("image-width") || typeName.equals("image-height") || typeName.equals("image-size") || typeName.equals("row-index") || typeName.equals("image-mime-type")) {
+ /** these column types are automatically generated so it's ok **/
+ } else {
+ statement.setNull(position, typeObject.intValue());
+ return;
+ }
+ }
+ if ("".equals(value)) {
+ switch (typeObject.intValue()) {
+ case Types.CHAR:
+ case Types.CLOB:
+ case Types.VARCHAR:
+ /** If the value is an empty string and the column is
+ a string type, we can continue **/
+ break;
+ case Types.INTEGER:
+ if (typeName.equals("image-width") || typeName.equals("image-height") || typeName.equals("image-size") || typeName.equals("row-index")) {
+ /** again, these types are okay to be absent **/
+ break;
+ }
+ default:
+ /** If the value is an empty string and the column
+ is something else, we treat it as a null value **/
+ statement.setNull(position, typeObject.intValue());
+ return;
+ }
+ }
+
+ /** Store the column value in the request attribute
+ keyed by the request parameter name. we do this so possible future
+ actions can access this data. not sure about the key tho... **/
+ setRequestAttribute(request,param,value);
+ File file;
+
+ switch (typeObject.intValue()) {
+ case Types.CLOB:
+ int length = -1;
+ InputStream asciiStream = null;
+
+ if (value instanceof File) {
+ File asciiFile = (File) value;
+ asciiStream = new BufferedInputStream(new FileInputStream(asciiFile));
+ length = (int) asciiFile.length();
+ } else {
+ String asciiText = (String) value;
+ asciiStream = new BufferedInputStream(new ByteArrayInputStream(asciiText.getBytes()));
+ length = asciiText.length();
+ }
+
+ statement.setAsciiStream(position, asciiStream, length);
+ break;
+ case Types.BIGINT:
+ BigDecimal bd = null;
+
+ if (value instanceof BigDecimal) {
+ bd = (BigDecimal) value;
+ } else {
+ bd = new BigDecimal((String) value);
+ }
+
+ statement.setBigDecimal(position, bd);
+ break;
+ case Types.TINYINT:
+ Byte b = null;
+
+ if (value instanceof Byte) {
+ b = (Byte) value;
+ } else {
+ b = new Byte((String) value);
+ }
+
+ statement.setByte(position, b.byteValue());
+ break;
+ case Types.DATE:
+ Date d = null;
+
+ if (value instanceof Date) {
+ d = (Date) value;
+ } else if (value instanceof java.util.Date) {
+ d = new Date(((java.util.Date) value).getTime());
+ } else {
+ d = new Date(this.dateValue((String) value, entry.getAttribute("format", "M/d/yyyy")));
+ }
+
+ statement.setDate(position, d);
+ break;
+ case Types.DOUBLE:
+ Double db = null;
+
+ if (value instanceof Double) {
+ db = (Double) value;
+ } else {
+ db = new Double((String) value);
+ }
+
+ statement.setDouble(position, db.doubleValue());
+ break;
+ case Types.FLOAT:
+ Float f = null;
+
+ if (value instanceof Float) {
+ f = (Float) value;
+ } else {
+ f = new Float((String) value);
+ }
+
+ statement.setFloat(position, f.floatValue());
+ break;
+ case Types.NUMERIC:
+ Long l = null;
+
+ if (value instanceof Long) {
+ l = (Long) value;
+ } else {
+ l = new Long((String) value);
+ }
+
+ statement.setLong(position, l.longValue());
+ break;
+ case Types.SMALLINT:
+ Short s = null;
+
+ if (value instanceof Short) {
+ s = (Short) value;
+ } else {
+ s = new Short((String) value);
+ }
+
+ statement.setShort(position, s.shortValue());
+ break;
+ case Types.TIME:
+ Time t = null;
+
+ if (value instanceof Time) {
+ t = (Time) value;
+ } else {
+ t = new Time(this.dateValue((String) value, entry.getAttribute("format", "h:m:s a")));
+ }
+
+ statement.setTime(position, t);
+ break;
+ case Types.TIMESTAMP:
+ Timestamp ts = null;
+
+ if (value instanceof Time) {
+ ts = (Timestamp) value;
+ } else {
+ ts = new Timestamp(this.dateValue((String) value, entry.getAttribute("format", "M/d/yyyy h:m:s a")));
+ }
+
+ statement.setTimestamp(position, ts);
+ break;
+ case Types.ARRAY:
+ statement.setArray(position, (Array) value); // no way to convert string to array
+ break;
+ case Types.STRUCT:
+ case Types.OTHER:
+ statement.setObject(position, value);
+ break;
+ case Types.LONGVARBINARY:
+ statement.setTimestamp(position, new Timestamp((new java.util.Date()).getTime()));
+ break;
+ case Types.VARCHAR:
+ if ("string".equals(typeName)) {
+ statement.setString(position, (String) value);
+ break;
+ } else if ("image-mime-type".equals(typeName)) {
+ String imageAttr = param.substring(0, (param.length() - "-mime-type".length()));
+ file = (File) request.get(imageAttr);
+ synchronized (this.files) {
+ Parameters parameters = (Parameters) this.files.get(file);
+ String imageMimeType = parameters.getParameter("image-mime-type",
+ (String) settings.get("image-mime-type",""));
+ statement.setString(position, imageMimeType);
+ /** Store the image mime type in the request attributes.
+ Why do we do this? **/
+ setRequestAttribute(request, param, imageMimeType);
+ }
+ break;
+ }
+ case Types.BLOB:
+ if (value instanceof File) {
+ file = (File)value;
+ } else if (value instanceof String) {
+ file = new File((String)value);
+ } else {
+ throw new SQLException("Invalid type for blob: "+value.getClass().getName());
+ }
+ //InputStream input = new BufferedInputStream(new FileInputStream(file));
+ FileInputStream input = new FileInputStream(file);
+ statement.setBinaryStream(position, input, (int)file.length());
+ if ("image".equals(typeName)) {
+ /** If this column type is an image, store the
+ size, width, and height in a static table **/
+ Parameters parameters = new Parameters();
+ parameters.setParameter("image-size", Long.toString(file.length()));
+ ImageProperties prop = ImageUtils.getImageProperties(file);
+ parameters.setParameter("image-width", Integer.toString(prop.width));
+ parameters.setParameter("image-height", Integer.toString(prop.height));
+ // TC: if it's really mime-type shouldn't we prepend "image/"?
+ parameters.setParameter("image-mime-type",prop.type);
+ synchronized (this.files) {
+ this.files.put(file, parameters);
+ }
+ }
+ break;
+ case Types.INTEGER:
+ if ("int".equals(typeName)) {
+ Integer i = null;
+ if (value instanceof Integer) {
+ i = (Integer) value;
+ } else {
+ i = new Integer((String) value);
+ }
+ statement.setInt(position, i.intValue());
+ break;
+ } else if ("image-width".equals(typeName)) {
+ /** Get the image width from the cached image data **/
+ /** Is this why we store the values in the request
+ attributes? **/
+ String imageAttr = param.substring(0, (param.length() - "-width".length()));
+ file = (File) request.get(imageAttr);
+ synchronized (this.files) {
+ Parameters parameters = (Parameters) this.files.get(file);
+ statement.setInt(position, parameters.getParameterAsInteger("image-width",
+ Integer.parseInt((String)settings.get("image-width","-1"))));
+ /** Store the image width in the request attributes.
+ Why do we do this? **/
+ setRequestAttribute(request,
+ param,
+ parameters.getParameter("image-width",
+ (String) settings.get("image-width","")));
+ }
+ break;
+ } else if ("image-height".equals(typeName)) {
+ /** Get the image height from the cached image data **/
+ String imageAttr = param.substring(0, (param.length() - "-height".length()));
+ file = (File) request.get(imageAttr);
+ synchronized (this.files) {
+ Parameters parameters = (Parameters) this.files.get(file);
+ statement.setInt(position, parameters.getParameterAsInteger("image-height",
+ Integer.parseInt((String)settings.get("image-height","-1"))));
+ setRequestAttribute(request,
+ param,
+ parameters.getParameter("image-height",
+ (String) settings.get("image-height","")));
+ }
+ break;
+ } else if ("image-size".equals(typeName)) {
+ /** Get the image file size from the cached image data **/
+ String imageAttr = param.substring(0, (param.length() - "-size".length()));
+ file = (File) request.get(imageAttr);
+ synchronized (this.files) {
+ Parameters parameters = (Parameters) this.files.get(file);
+ statement.setInt(position, parameters.getParameterAsInteger("image-size",
+ Integer.parseInt((String)settings.get("image-height","-1"))));
+ setRequestAttribute(request,
+ param,
+ parameters.getParameter("image-size",
+ (String) settings.get("image-size","")));
+ }
+ break;
+ } else if ("row-index".equals(typeName)) {
+ statement.setInt(position,rowIndex);
+ break;
+ }
+ default:
+ throw new SQLException("Impossible exception - invalid type "+typeName);
+ }
+ }
+
+ /**
+ * Convert a String to a long value.
+ */
+ private final long dateValue(String value, String format) throws Exception {
+ DateFormat formatter = new SimpleDateFormat(format);
+ return formatter.parse(value).getTime();
+ }
+
+ /**
+ * dispose
+ */
+ public void dispose() {
+ this.manager.release(dbselector);
+ }
+
+ /**
+ * Store a key/value pair in the request attributes. We prefix the key
+ * with the name of this class to prevent potential name collisions.
+ */
+ protected void setRequestAttribute(Request request, String key, Object value) {
+ request.setAttribute("org.apache.cocoon.acting.AbstractDatabaseAction:"+key,value);
+ }
+
+ /**
+ * Retreive a value from the request attributes.
+ */
+ protected Object getRequestAttribute(Request request, String key) {
+ return request.getAttribute("org.apache.cocoon.acting.AbstractDatabaseAction:"+key);
+ }
+
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAddAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAddAction.java
new file mode 100644
index 0000000..1fda7d4
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAddAction.java
@@ -0,0 +1,378 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
+
+/**
+ * Adds record in a database. The action can update one or more tables,
+ * and can add more than one row to a table at a time. The form descriptor
+ * semantics for this are still in a bit of a state of flux. Note
+ * that if a secondary table relies on the value of a new primary key in a
+ * primary table, the primary key must be created using manual mode.
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @author <a href="mailto:balld@apache.org">Donald Ball</a>
+ * @version CVS $Id: DatabaseAddAction.java,v 1.3 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public class DatabaseAddAction extends AbstractDatabaseAction implements ThreadSafe {
+ protected static final Map addStatements = new HashMap();
+ private static final Map selectStatements = new HashMap();
+
+ /**
+ * Add a record to the database. This action assumes that
+ * the file referenced by the "descriptor" parameter conforms
+ * to the AbstractDatabaseAction specifications.
+ */
+ public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ Map results = new HashMap();
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+ if (this.settings.containsKey("reloadable"))
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ // read local parameter settings
+ try {
+ Configuration conf =
+ this.getConfiguration(param.getParameter("descriptor", (String) this.settings.get("descriptor")), resolver,
+ param.getParameterAsBoolean("reloadable",reloadable));
+
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+ Request request = ObjectModelHelper.getRequest(objectModel);
+
+ if (conn.getAutoCommit()) {
+ conn.setAutoCommit(false);
+ }
+
+ Configuration[] tables = conf.getChildren("table");
+ for (int i=0; i<tables.length; i++) {
+ Configuration table = tables[i];
+ processTable(table,conn,request,results);
+ }
+ conn.commit();
+ } catch (Exception e) {
+ if (conn != null) {
+ try {
+ conn.rollback();
+ } catch (SQLException se) {
+ getLogger().debug("There was an error rolling back the transaction", se);
+ }
+ }
+
+ //throw new ProcessingException("Could not add record :position = " + currentIndex, e);
+ throw new ProcessingException("Could not add record",e);
+ } finally {
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (SQLException sqe) {
+ getLogger().warn("There was an error closing the datasource", sqe);
+ }
+ }
+
+ if (datasource != null) this.dbselector.release(datasource);
+ }
+
+ return Collections.unmodifiableMap(results);
+ }
+
+ /**
+ * Inserts a row or a set of rows into the given table based on the
+ * request parameters
+ *
+ * @param table the table's configuration
+ * @param conn the database connection
+ * @param request the request
+ */
+ void processTable(Configuration table, Connection conn, Request request, Map results) throws SQLException,ConfigurationException,Exception {
+ PreparedStatement statement = null;
+ try {
+ String query = this.getAddQuery(table);
+ getLogger().debug("Add query: "+query);
+ statement = conn.prepareStatement(query);
+ Configuration[] keys = table.getChild("keys").getChildren("key");
+ Configuration[] values = table.getChild("values").getChildren("value");
+ int currentIndex = 1;
+ boolean manyrows = false;
+ int wildcardIndex = -1;
+ String wildcardParam = null;
+ for (int i=0; i<keys.length; i++) {
+ wildcardParam = keys[i].getAttribute("param");
+ if ((wildcardIndex = wildcardParam.indexOf('*')) != -1) {
+ manyrows = true;
+ break;
+ }
+ }
+ if (manyrows) {
+ /**
+ * This table has a column with a wildcard, so we're going
+ * to be inserting n rows, where 0 <= n
+ */
+ String prefix = wildcardParam.substring(0,wildcardIndex);
+ String suffix;
+ if (wildcardParam.length() >= wildcardIndex+1) {
+ suffix = wildcardParam.substring(wildcardIndex+1);
+ } else {
+ suffix = "";
+ }
+ Enumeration names = request.getParameterNames();
+ SortedSet matchset = new TreeSet();
+ while (names.hasMoreElements()) {
+ String name = (String)names.nextElement();
+ if (name.startsWith(prefix) && name.endsWith(suffix)) {
+ String wildcard = name.substring(prefix.length());
+ wildcard = wildcard.substring(0,wildcard.length()-suffix.length());
+ matchset.add(wildcard);
+ }
+ }
+ Iterator iterator = matchset.iterator();
+ int rowIndex = 1;
+ while (iterator.hasNext()) {
+ String wildcard = (String)iterator.next();
+ currentIndex = 1;
+ for (int j=0; j<keys.length; j++) {
+ String myparam = getActualParam(keys[j].getAttribute("param"),wildcard);
+ currentIndex += setKey(table,keys[j],conn,statement,currentIndex,request,myparam,results);
+ }
+ for (int j=0; j<values.length; j++) {
+ String myparam = getActualParam(values[j].getAttribute("param"),wildcard);
+ this.setColumn(statement,currentIndex,request,values[j],myparam,request.getParameter(myparam),rowIndex);
+ currentIndex++;
+ }
+ statement.execute();
+ rowIndex++;
+ }
+ } else {
+ /**
+ * This table has no wildcard columns, so we're going to
+ * be inserting 1 row.
+ */
+ for (int i = 0; i < keys.length; i++) {
+ currentIndex += setKey(table,keys[i],conn,statement,currentIndex,request,keys[i].getAttribute("param",""),results);
+ }
+ for (int i = 0; i < values.length; i++, currentIndex++) {
+ this.setColumn(statement, currentIndex, request, values[i]);
+ }
+ statement.execute();
+ /** Done processing table **/
+ }
+ } finally {
+ try {
+ if (statement != null) {
+ statement.close();
+ }
+ } catch (SQLException e) {}
+ }
+ }
+
+ /**
+ * Sets the key value on the prepared statement. There are four modes:
+ *
+ * <dl>
+ * <dt>automatic (default)</dt>
+ * <dd>let the database automatically create the key. note this
+ * prohibits the action from storing the key value anywhere.</dd>
+ * <dt>manual</dt>
+ * <dd>create the key value using SELECT(dbcol)+1 from TABLE</dd>
+ * <dt>form</dt>
+ * <dd>look for the key value in the request parameters</dd>
+ * <dt>request-attribute</dt>
+ * <dd>look for the key value in the request attributes</dd>
+ * </dl>
+ *
+ * This method has a couple of side effects. If the mode is manual,
+ * the key value is stored in the request object's attributes for use
+ * by other inserts. The key is the string "key:TABLENAME:DBCOL".
+ * This method also puts the value of manually created keys in the results
+ * map. That key is simply the value of the dbcol attribute. Note this
+ * stuff is definitely up in the air.
+ *
+ * @param table the table's configuration object
+ * @param key the key's configuration object
+ * @param conn the database connection
+ * @param statement the insert statement
+ * @param currentIndex the position of the key column
+ * @param request the request object
+ * @param param the actual name of the request parameter
+ * @return the number of columns by which to increment the currentIndex
+ */
+ int setKey(Configuration table, Configuration key, Connection conn, PreparedStatement statement, int currentIndex, Request request, String param, Map results) throws ConfigurationException, SQLException,Exception {
+ String mode = key.getAttribute("mode","automatic");
+ String keyname = new StringBuffer("key:").append(table.getAttribute("name"))
+ .append(':').append(key.getAttribute("dbcol")).toString();
+ if ("manual".equals(mode)) {
+ /** Set the key value using SELECT MAX(keyname)+1 **/
+ String selectQuery = this.getSelectQuery(key);
+ PreparedStatement select_statement = conn.prepareStatement(selectQuery);
+ ResultSet set = select_statement.executeQuery();
+ set.next();
+ int value = set.getInt("maxid") + 1;
+ statement.setInt(currentIndex, value);
+ getLogger().debug("Manually setting key to "+value);
+ setRequestAttribute(request,keyname,new Integer(value));
+ results.put(key.getAttribute("dbcol"),String.valueOf(value));
+ set.close();
+ select_statement.close();
+ return 1;
+ } else if ("form".equals(mode)) {
+ /** Set the key value from the request **/
+ getLogger().debug("Setting key from form");
+ this.setColumn(statement, currentIndex, request, key, param);
+ return 1;
+ } else if ("request-attribute".equals(mode)) {
+ Integer value = (Integer)getRequestAttribute(request,key.getAttribute("request-attribute-name"));
+ getLogger().debug("Setting key from request attribute "+value);
+ statement.setInt(currentIndex,value.intValue());
+ return 1;
+ } else {
+ getLogger().debug("Automatically setting key");
+ /** The database automatically creates a key value **/
+ return 0;
+ }
+ }
+
+ /**
+ * Returns the actual name of the parameter. If the name contains
+ * no wildcard, the param is returned untouched, otherwise the
+ * wildcard value is substituted for the * character. This probably
+ * doesn't deserve a method unto itself, but I can imagine wanting
+ * to use a more sophisticated matching and substitution algorithm.
+ *
+ * @param param the name of the parameter, possibly with a wildcard char
+ * @param wildcard the wildcard value
+ * @return the actual name of the parameter
+ */
+ String getActualParam(String param, String wildcard) {
+ int index;
+ if ((index = param.indexOf('*')) != -1) {
+ return param.substring(0,index)+wildcard+param.substring(index+1);
+ } else {
+ return param;
+ }
+ }
+
+ /**
+ * Get the String representation of the PreparedStatement. This is
+ * mapped to the Configuration object itself, so if it doesn't exist,
+ * it will be created.
+ *
+ * @param table the table's configuration object
+ * @return the insert query as a string
+ */
+ protected String getAddQuery(Configuration table) throws ConfigurationException {
+ String query = null;
+ synchronized (DatabaseAddAction.addStatements) {
+ query = (String) DatabaseAddAction.addStatements.get(table);
+ if (query == null) {
+ Configuration[] values = table.getChild("values").getChildren("value");
+ Configuration[] keys = table.getChild("keys").getChildren("key");
+
+ StringBuffer queryBuffer = new StringBuffer("INSERT INTO ");
+ queryBuffer.append(table.getAttribute("name"));
+ queryBuffer.append(" (");
+
+ int numKeys = 0;
+
+ for (int i = 0; i < keys.length; i++) {
+ String mode = keys[i].getAttribute("mode", "automatic");
+ if ("manual".equals(mode) || "form".equals(mode) || "request-attribute".equals(mode)) {
+ if (i > 0) {
+ queryBuffer.append(", ");
+ }
+
+ queryBuffer.append(keys[i].getAttribute("dbcol"));
+ this.setSelectQuery(table.getAttribute("name"), keys[i]);
+ numKeys++;
+ }
+ }
+
+ int numValues = 0;
+
+ for (int i = 0; i < values.length; i++) {
+ if ((numKeys + numValues) > 0) {
+ queryBuffer.append(", ");
+ }
+
+ queryBuffer.append(values[i].getAttribute("dbcol"));
+ numValues++;
+ }
+
+ queryBuffer.append(") VALUES (");
+
+ int numParams = numValues + numKeys;
+
+ for (int i = 0; i < numParams; i++) {
+ if (i > 0) {
+ queryBuffer.append(", ");
+ }
+
+ queryBuffer.append("?");
+ }
+
+ queryBuffer.append(")");
+
+ query = queryBuffer.toString();
+
+ DatabaseAddAction.addStatements.put(table, query);
+ }
+ }
+
+ return query;
+ }
+
+ /**
+ * Set the String representation of the MaxID lookup statement. This is
+ * mapped to the Configuration object itself, so if it doesn't exist,
+ * it will be created.
+ */
+ protected final synchronized void setSelectQuery(String tableName, Configuration entry) throws ConfigurationException {
+ StringBuffer queryBuffer = new StringBuffer("SELECT max(");
+ queryBuffer.append(entry.getAttribute("dbcol"));
+ queryBuffer.append(") AS maxid FROM ");
+ queryBuffer.append(tableName);
+
+ DatabaseAddAction.selectStatements.put(entry, queryBuffer.toString());
+ }
+
+ protected final synchronized String getSelectQuery(Configuration entry) throws ConfigurationException {
+ return (String) DatabaseAddAction.selectStatements.get(entry);
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java
new file mode 100644
index 0000000..92dee9e
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.PreparedStatement;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This action is used to authenticate user by comparing several request
+ * fields (username, password) with the values in database. The description of
+ * the process is given via external xml description file simiar to the one
+ * used for all actions derived from AbstractDatabaseAction.
+ * <pre>
+ * <root>
+ * <connection>personnel</connection>
+ * <table name="users_table>
+ * <select dbcol="username" request-param="username"
+ * to-session="username"/>
+ * <select dbcol="password" request-param="password"
+ * nullable="yes"/>
+ * <select dbcol="role" to-session="role" type="string"/>
+ * <select dbcol="skin" to-session="skin" type="string"/>
+ * </table>
+ * </root>
+ * </pre>
+ * The values specified via "request-param" describe the name of HTTP request
+ * parameter, "dbcol" indicates matching database column, "nullable" means
+ * that request-param which is null or empty will not be included in the WHERE
+ * clause. This way you can enable accounts with empty passwords, etc.
+ * "to-session" attribute indicates under which name the value obtained from
+ * database should be stored in the session. Of course new session is created
+ * when authorization is successfull. The "type" attribute can be either
+ * string, long or double and alters the type of object stored in session.
+ * Additionally all parameters that are
+ * propagated to the session are made available to the sitemap via {name}
+ * expression.
+ *
+ * If there is no need to touch the session object, providing just one-time
+ * verification, you can specify action parameter "create-session" to "no" or
+ * "false". No values are then propagated to the sesion and session object is
+ * not verified.
+ *
+ * @author <a href="mailto:Martin.Man@seznam.cz">Martin Man</a>
+ * @version CVS $Id: DatabaseAuthenticatorAction.java,v 1.5 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public class DatabaseAuthenticatorAction extends AbstractDatabaseAction implements ThreadSafe
+{
+ /**
+ * Main invocation routine.
+ */
+ public Map act (Redirector redirector, SourceResolver resolver, Map objectModel, String src,
+ Parameters parameters) throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ PreparedStatement st = null;
+ ResultSet rs = null;
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+
+ if (this.settings.containsKey("reloadable")) {
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ }
+
+ // read local settings
+ try {
+ Configuration conf = this.getConfiguration (
+ parameters.getParameter ("descriptor", (String) this.settings.get("descriptor")),
+ resolver,
+ parameters.getParameterAsBoolean("reloadable",reloadable));
+ boolean cs = true;
+ String create_session = parameters.getParameter ("create-session",
+ (String) this.settings.get("create-session"));
+ if (create_session != null &&
+ ("no".equals (create_session.trim ()) || "false".equals (create_session.trim ()))) {
+ cs = false;
+ }
+
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+ Request req = ObjectModelHelper.getRequest(objectModel);
+
+ /* check request validity */
+ if (req == null) {
+ getLogger ().debug ("DBAUTH: no request object");
+ return null;
+ }
+
+ st = this.getAuthQuery (conn, conf, req);
+ if (st == null) {
+ getLogger ().debug ("DBAUTH: have not got query");
+ req.setAttribute("message", "The authenticator is misconfigured");
+ return null;
+ }
+
+ rs = st.executeQuery ();
+
+ if (rs.next ()) {
+ getLogger ().debug ("DBAUTH: authorized successfully");
+ Session session = null;
+
+ if (cs) {
+ session = req.getSession (false);
+ if (session != null)
+ session.invalidate ();
+ session = req.getSession (true);
+ if (session == null)
+ return null;
+ getLogger ().debug ("DBAUTH: session created");
+ } else {
+ getLogger ().debug ("DBAUTH: leaving session untouched");
+ }
+
+ HashMap actionMap = this.propagateParameters (conf, rs,
+ session);
+ if(!conn.getAutoCommit()) {
+ conn.commit();
+ }
+ return Collections.unmodifiableMap (actionMap);
+ }
+ if(!conn.getAutoCommit()) {
+ conn.rollback();
+ }
+
+ req.setAttribute("message", "The username or password were incorrect, please check your CAPS LOCK key and try again.");
+ getLogger ().debug ("DBAUTH: no results for query");
+ } catch (Exception e) {
+ if (conn != null) {
+ try {
+ if(!conn.getAutoCommit()) {
+ conn.rollback();
+ }
+ } catch (Exception se) {/* ignore */}
+ }
+ getLogger().debug ("exception: ", e);
+ return null;
+ } finally {
+ if (rs != null) rs.close();
+ if (st != null) st.close();
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (Exception e) {/* ignore */}
+ }
+ }
+ return null;
+ }
+
+ private PreparedStatement getAuthQuery(Connection conn, Configuration conf, Request req) {
+ StringBuffer queryBuffer = new StringBuffer("SELECT ");
+ StringBuffer queryBufferEnd = new StringBuffer("");
+ Configuration table = conf.getChild("table");
+ Configuration[] columns = table.getChildren("select");
+ try {
+ Object[] constraintValues = new Object[columns.length];
+ int constraints = 0;
+ for (int i = 0; i < columns.length; i++) {
+ String dbcol = columns[i].getAttribute("dbcol");
+ boolean nullable = false;
+
+ if (i > 0) {
+ queryBuffer.append (", ");
+ }
+
+ queryBuffer.append(dbcol);
+
+ String requestParameter = columns[i].getAttribute("request-param", null);
+ if (requestParameter != null && requestParameter.trim() != "") {
+
+ String nullstr = columns[i].getAttribute("nullable", null);
+ if (nullstr != null) {
+ nullstr = nullstr.trim();
+ nullable = "yes".equals(nullstr) || "true".equals(nullstr);
+ }
+
+ String constraintValue = req.getParameter(requestParameter);
+
+ // if there is a request parameter name,
+ // but not the value, we exit immediately do
+ // that authorization fails authomatically
+ if ((constraintValue == null || constraintValue.trim().equals("")) && !nullable) {
+ getLogger().debug("DBAUTH: request-param " + requestParameter + " does not exist");
+ return null;
+ }
+
+ if (constraints > 0) {
+ queryBufferEnd.append(" AND ");
+ }
+
+ queryBufferEnd.append(dbcol).append("= ?");
+ constraintValues[constraints] = constraintValue;
+ constraints++;
+ }
+ }
+
+ queryBuffer.append(" FROM ");
+ queryBuffer.append(table.getAttribute("name"));
+ if (!queryBufferEnd.toString().trim().equals("")) {
+ queryBuffer.append(" WHERE ").append(queryBufferEnd.toString());
+ }
+
+ getLogger().debug("DBAUTH: query " + queryBuffer);
+
+ PreparedStatement st = conn.prepareStatement(queryBuffer.toString());
+
+ for(int i=0;i<constraints;i++) {
+ getLogger().debug("DBAUTH: parameter " + (i+1) + " = [" + String.valueOf(constraintValues[i]) + "]");
+ st.setObject(i+1,constraintValues[i]);
+ }
+
+ return st;
+ }
+ catch (Exception e) {
+ getLogger().debug("DBAUTH: got exception: " + e);
+ }
+
+ return null;
+ }
+
+ private HashMap propagateParameters (Configuration conf, ResultSet rs,
+ Session session) {
+ Configuration table = conf.getChild ("table");
+ Configuration[] select = table.getChildren ("select");
+ String session_param, type;
+ HashMap map = new HashMap();
+ try {
+ for (int i = 0; i < select.length; i ++) {
+ try {
+ session_param = select[i].getAttribute ("to-session");
+ if (session_param != null &&
+ !session_param.trim().equals ("")) {
+ String s = rs.getString (i + 1);
+ /* propagate to session */
+ try {
+ type = select[i].getAttribute ("type");
+ } catch (Exception e) {
+ type = null;
+ }
+ if (type == null || "".equals (type.trim ())) {
+ type = "string";
+ }
+ Object o = null;
+ if ("string".equals (type)) {
+ o = s;
+ } else if ("long".equals (type)) {
+ Long l = Long.decode (s);
+ o = l;
+ } else if ("double".equals (type)) {
+ Double d = Double.valueOf (s);
+ o = d;
+ }
+ if (session != null) {
+ session.setAttribute (session_param, o);
+ getLogger ().debug ("DBAUTH: propagating param "
+ + session_param + "=" + s);
+ }
+ map.put (session_param, o);
+ }
+ } catch (Exception e) {
+ }
+ }
+ return map;
+ } catch (Exception e) {
+ getLogger().debug("exception: ", e);
+ }
+ return null;
+ }
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseCookieAuthenticatorAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseCookieAuthenticatorAction.java
new file mode 100644
index 0000000..5751b23
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseCookieAuthenticatorAction.java
@@ -0,0 +1,384 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.components.language.markup.xsp.XSPCookieHelper;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This action is used to authenticate user by comparing several cookie values
+ * (username, password) with the values in database. The description of the
+ * process is given via external xml description file simiar to the one used
+ * for all actions derived from AbstractDatabaseAction. <pre>
+ * <root>
+ * <connection>personnel</connection>
+ * <table name="users_table>
+ * <select dbcol="username" cookie-name="username"
+ * to-session="username"/>
+ * <select dbcol="password" cookie-name="password"
+ * nullable="yes"/>
+ * <select dbcol="role" to-session="role" type="string"/>
+ * <select dbcol="skin" to-session="skin" type="string"/>
+ * </table>
+ * </root>
+ * </pre> The values specified via "cookie-name" describe the name of the
+ * cookie, "dbcol" indicates matching database column, "nullable" means that
+ * cookie-name which is null or empty will not be included in the WHERE clause.
+ * This way you can enable accounts with empty passwords, etc. "to-session"
+ * attribute indicates under which name the value obtained from database should
+ * be stored in the session. Of course new session is created when
+ * authorization is successfull. The "type" attribute can be either string,
+ * long or double and alters the type of object stored in session. Additionally
+ * all parameters that are propagated to the session are made available to the
+ * sitemap via {name} expression. If there is no need to touch the session
+ * object, providing just one-time verification, you can specify action
+ * parameter "create-session" to "no" or "false". No values are then propagated
+ * to the sesion and session object is not verified. If you want to append
+ * attributes to the session without creating a new one, specify action
+ * parameter "append-session" to "yes" or "true".
+ *
+ * @author <a href="mailto:paolo@arsenio.net">Paolo Scaffardi</a>
+ * @version CVS $Id: DatabaseCookieAuthenticatorAction.java,v 1.3 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public class DatabaseCookieAuthenticatorAction extends AbstractDatabaseAction implements ThreadSafe {
+
+ /**
+ * Main invocation routine.
+ *
+ * @param redirector Description of Parameter
+ * @param resolver Description of Parameter
+ * @param objectModel Description of Parameter
+ * @param src Description of Parameter
+ * @param parameters Description of Parameter
+ * @return Description of the Returned Value
+ * @exception Exception Description of Exception
+ */
+ public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
+ Parameters parameters)
+ throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ Statement st = null;
+ ResultSet rs = null;
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+
+ if (this.settings.containsKey("reloadable")) {
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ }
+
+ // read local settings
+ try {
+ Configuration conf = this.getConfiguration(
+ parameters.getParameter("descriptor", (String) this.settings.get("descriptor")),
+ resolver,
+ parameters.getParameterAsBoolean("reloadable", reloadable));
+ boolean cs = true;
+ boolean as = false;
+ String create_session = parameters.getParameter("create-session",
+ (String) this.settings.get("create-session"));
+ String
+ append_session = parameters.getParameter("append-session",
+ (String) this.settings.get("append-session"));
+
+ if (create_session != null &&
+ ("no".equals(create_session.trim()) || "false".equals(create_session.trim()))) {
+ cs = false;
+ }
+ if (append_session != null &&
+ ("yes".equals(append_session.trim()) || "true".equals(append_session.trim()))) {
+ as = true;
+ }
+
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+ Request req = ObjectModelHelper.getRequest(objectModel);
+
+ /*
+ * check request validity
+ */
+ if (req == null) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: no request object");
+ }
+ return null;
+ }
+
+ String query = this.getAuthQuery(objectModel, conf, req);
+ if (query == null) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: have not got query");
+ }
+ req.setAttribute("message", "The authenticator is misconfigured");
+ return null;
+ }
+
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: query is: " + query);
+ }
+ st = conn.createStatement();
+ rs = st.executeQuery(query);
+
+ if (rs.next()) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: authorized successfully");
+ }
+ Session session = null;
+
+ if (cs) {
+ session = req.getSession(false);
+ if (session != null) {
+ if (as == false) {
+ session.invalidate();
+ session = req.getSession(true);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: session invalidated");
+ }
+ }
+ } else {
+ session = req.getSession(true);
+ }
+
+ if (session == null) {
+ return null;
+ }
+
+ if (getLogger().isDebugEnabled()) {
+ if (as) {
+ getLogger().debug("DBCOOKIEAUTH: appending to session");
+ } else {
+ getLogger().debug("DBCOOKIEAUTH: session created");
+ }
+ }
+ } else {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: leaving session untouched");
+ }
+ }
+
+ HashMap actionMap = this.propagateParameters(conf, rs,
+ session);
+ if (!conn.getAutoCommit()) {
+ conn.commit();
+ }
+ return Collections.unmodifiableMap(actionMap);
+ }
+ if (!conn.getAutoCommit()) {
+ conn.rollback();
+ }
+
+ req.setAttribute("message", "The username or password were incorrect, please check your CAPS LOCK key and try again.");
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: no results for query");
+ }
+ } catch (Exception e) {
+ if (conn != null) {
+ try {
+ if (!conn.getAutoCommit()) {
+ conn.rollback();
+ }
+ } catch (Exception se) {
+ /*
+ * ignore
+ */
+ }
+ }
+ getLogger().error("Exception: ", e);
+ return null;
+ } finally {
+ if (rs != null) {
+ rs.close();
+ }
+ if (st != null) {
+ st.close();
+ }
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (Exception e) {
+ /*
+ * ignore
+ */
+ }
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Gets the authQuery attribute of the DatabaseCookieAuthenticatorAction
+ * object
+ *
+ * @param objectModel Description of Parameter
+ * @param conf Description of Parameter
+ * @param req Description of Parameter
+ * @return The authQuery value
+ */
+ private String getAuthQuery(Map objectModel, Configuration conf, Request req) {
+ boolean first_constraint = true;
+ StringBuffer queryBuffer = new StringBuffer("SELECT ");
+ StringBuffer queryBufferEnd = new StringBuffer("");
+ String dbcol;
+ String cookie_name;
+ String cookie_value;
+ String nullstr;
+ boolean nullable = false;
+ Configuration table = conf.getChild("table");
+ Configuration[] select = table.getChildren("select");
+ try {
+ for (int i = 0; i < select.length; i++) {
+ if (i != 0) {
+ queryBuffer.append(", ");
+ }
+ dbcol = select[i].getAttribute("dbcol");
+ queryBuffer.append(dbcol);
+ try {
+ cookie_name = select[i].getAttribute("cookie-name");
+ if (cookie_name == null ||
+ cookie_name.trim().equals("")) {
+ continue;
+ }
+ } catch (Exception e) {
+ continue;
+ }
+ try {
+ nullstr = select[i].getAttribute("nullable");
+ if (nullstr != null) {
+ nullstr = nullstr.trim();
+ }
+ if ("yes".equals(nullstr) || "true".equals(nullstr)) {
+ nullable = true;
+ }
+ } catch (Exception e1) {
+ }
+ /*
+ * if there is a cookie name,
+ * but not the value, we exit immediately do
+ * that authorization fails authomatically
+ */
+ cookie_value = XSPCookieHelper.getCookie(objectModel, cookie_name, -1).getValue();
+
+ if (cookie_value == null || cookie_value.trim().equals("")) {
+ // value is null
+ if (!nullable) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: cookie-name "
+ + cookie_name + " does not exist");
+ }
+ return null;
+ }
+ } else {
+ if (!first_constraint) {
+ queryBufferEnd.append(" AND ");
+ }
+ queryBufferEnd.append(dbcol + "='" + cookie_value + "'");
+ first_constraint = false;
+ }
+ }
+ queryBuffer.append(" FROM ");
+ queryBuffer.append(table.getAttribute("name"));
+ if (!queryBufferEnd.toString().trim().equals("")) {
+ queryBuffer.append(" WHERE ").append(queryBufferEnd);
+ }
+ return queryBuffer.toString();
+ } catch (Exception e) {
+ getLogger().error("Exception: ",e);
+ return null;
+ }
+ }
+
+
+ /**
+ * Description of the Method
+ *
+ * @param conf Description of Parameter
+ * @param rs Description of Parameter
+ * @param session Description of Parameter
+ * @return Description of the Returned Value
+ */
+ private HashMap propagateParameters(Configuration conf, ResultSet rs,
+ Session session) {
+ Configuration table = conf.getChild("table");
+ Configuration[] select = table.getChildren("select");
+ String session_param;
+ String type;
+ HashMap map = new HashMap();
+ try {
+ for (int i = 0; i < select.length; i++) {
+ try {
+ session_param = select[i].getAttribute("to-session");
+ if (session_param != null &&
+ !session_param.trim().equals("")) {
+ String s = rs.getString(i + 1);
+ /*
+ * propagate to session
+ */
+ try {
+ type = select[i].getAttribute("type");
+ } catch (Exception e) {
+ type = null;
+ }
+ if (type == null || "".equals(type.trim())) {
+ type = "string";
+ }
+ Object o = null;
+ if ("string".equals(type)) {
+ o = s;
+ } else if ("long".equals(type)) {
+ Long l = Long.decode(s);
+ o = l;
+ } else if ("double".equals(type)) {
+ Double d = Double.valueOf(s);
+ o = d;
+ }
+ if (session != null) {
+ session.setAttribute(session_param, o);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("DBCOOKIEAUTH: propagating param "
+ + session_param + "=" + s);
+ }
+ }
+ map.put(session_param, o);
+ }
+ } catch (Exception e) {
+ }
+ }
+ return map;
+ } catch (Exception e) {
+ getLogger().error("Exception: ", e);
+ }
+ return null;
+ }
+}
+
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseDeleteAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseDeleteAction.java
new file mode 100644
index 0000000..0282a6f
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseDeleteAction.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Delete a record from a database. This Action assumes that all
+ * dependant data is either automatically cleaned up by cascading
+ * deletes, or that multiple instances of this action are being used
+ * in the correct order. In other words, it removes one record by
+ * the keys.
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @version CVS $Id: DatabaseDeleteAction.java,v 1.2 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public final class DatabaseDeleteAction extends AbstractDatabaseAction implements ThreadSafe {
+ private static final Map deleteStatements = new HashMap();
+
+ /**
+ * Delete a record from the database. This action assumes that
+ * the file referenced by the "descriptor" parameter conforms
+ * to the AbstractDatabaseAction specifications.
+ */
+ public final Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ int currentIndex = 0;
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+ if (this.settings.containsKey("reloadable"))
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ // read local parameter settings
+ try {
+ Configuration conf =
+ this.getConfiguration(param.getParameter("descriptor", (String) this.settings.get("descriptor")), resolver,
+ param.getParameterAsBoolean("reloadable",reloadable));
+
+ String query = this.getDeleteQuery(conf);
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+ Request request = ObjectModelHelper.getRequest(objectModel);
+
+ if (conn.getAutoCommit()) {
+ conn.setAutoCommit(false);
+ }
+
+ PreparedStatement statement = conn.prepareStatement(query);
+
+ Configuration[] keys = conf.getChild("table").getChild("keys").getChildren("key");
+
+ for (int i = 0; i < keys.length; i++) {
+ this.setColumn(statement, i + 1, request, keys[i]);
+ }
+
+ int rows = statement.executeUpdate();
+ conn.commit();
+ statement.close();
+
+ if(rows > 0){
+ request.setAttribute("rows", Integer.toString(rows));
+ return EMPTY_MAP;
+ }
+ } catch (Exception e) {
+ if (conn != null) {
+ conn.rollback();
+ }
+
+ throw new ProcessingException("Could not delete record :position = " + currentIndex, e);
+ } finally {
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (SQLException sqe) {
+ getLogger().warn("There was an error closing the datasource", sqe);
+ }
+ }
+
+ if (datasource != null) this.dbselector.release(datasource);
+ }
+
+ return null;
+ }
+
+ /**
+ * Get the String representation of the PreparedStatement. This is
+ * mapped to the Configuration object itself, so if it doesn't exist,
+ * it will be created.
+ */
+ private final String getDeleteQuery(Configuration conf) throws ConfigurationException {
+ String query = null;
+
+ synchronized (DatabaseDeleteAction.deleteStatements) {
+ query = (String) DatabaseDeleteAction.deleteStatements.get(conf);
+
+ if (query == null) {
+ Configuration table = conf.getChild("table");
+ Configuration[] keys = table.getChild("keys").getChildren("key");
+
+ StringBuffer queryBuffer = new StringBuffer("DELETE FROM ");
+ queryBuffer.append(table.getAttribute("name"));
+ queryBuffer.append(" WHERE ");
+
+ for (int i = 0; i < keys.length; i++) {
+ if (i > 0) {
+ queryBuffer.append(" AND ");
+ }
+
+ queryBuffer.append((keys[i]).getAttribute("dbcol"));
+ queryBuffer.append(" = ?");
+ }
+
+ query = queryBuffer.toString();
+
+ DatabaseDeleteAction.deleteStatements.put(conf, query);
+ }
+ }
+
+ return query;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseSelectAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseSelectAction.java
new file mode 100644
index 0000000..b66eb96
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseSelectAction.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Select a record from a database. If request parameters are present,
+ * their values are used to populate request attributes. Otherwise,
+ * values from database are used.
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
+ * @version CVS $Id: DatabaseSelectAction.java,v 1.2 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public class DatabaseSelectAction extends AbstractDatabaseAction implements ThreadSafe {
+
+ private static final Map selectStatements = new HashMap();
+
+ /**
+ * Select a record from the database. This action assumes that
+ * the file referenced by the "descriptor" parameter conforms
+ * to the AbstractDatabaseAction specifications.
+ */
+ public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ int currentIndex = 0;
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+ if (this.settings.containsKey("reloadable"))
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ // read local parameter settings
+ try {
+ Configuration conf =
+ this.getConfiguration(param.getParameter("descriptor", (String) this.settings.get("descriptor")),
+ resolver,
+ param.getParameterAsBoolean("reloadable",reloadable));
+
+ Request request = ObjectModelHelper.getRequest(objectModel);
+
+ Configuration[] keys = conf.getChild("table").getChild("keys").getChildren("key");
+ Configuration[] values = conf.getChild("table").getChild("values").getChildren("value");
+
+ PreparedStatement statement = null;
+ ResultSet rset = null;
+ boolean result = false;
+
+ for (int i = 0; i < keys.length; i++) {
+ final String parameter = keys[i].getAttribute("param");
+ Object value = request.getParameter(parameter);
+ if (value == null || "".equals(value)) {
+ if (statement == null) {
+ final String query = this.getSelectQuery(conf);
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+
+ statement = conn.prepareStatement(query);
+ currentIndex = 1;
+ for (int j = 0; j < keys.length; j++, currentIndex++) {
+ this.setColumn(statement, currentIndex, request, keys[j]);
+ }
+
+ rset = statement.executeQuery();
+ result = rset.next();
+ }
+
+ if (result)
+ value = this.getColumn(rset, request, keys[i]);
+ }
+
+ if (value != null)
+ request.setAttribute(parameter, value.toString());
+ }
+
+ for (int i = 0; i < values.length; i++) {
+ final String parameter = values[i].getAttribute("param");
+ Object value = request.getParameter(parameter);
+ if (value == null || "".equals(value)) {
+ if (statement == null) {
+ final String query = this.getSelectQuery(conf);
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+
+ statement = conn.prepareStatement(query);
+ currentIndex = 1;
+ for (int j = 0; j < keys.length; j++, currentIndex++) {
+ this.setColumn(statement, currentIndex, request, keys[j]);
+ }
+
+ rset = statement.executeQuery();
+ result = rset.next();
+ }
+
+ if (result)
+ value = this.getColumn(rset, request, values[i]);
+ }
+
+ if (value != null)
+ request.setAttribute(parameter, value.toString());
+ }
+
+ if(statement != null)
+ statement.close();
+
+ return EMPTY_MAP;
+ } catch (Exception e) {
+ throw new ProcessingException("Could not prepare statement :position = " + currentIndex, e);
+ } finally {
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (SQLException sqe) {
+ getLogger().warn("There was an error closing the datasource", sqe);
+ }
+ }
+
+ if (datasource != null) this.dbselector.release(datasource);
+ }
+
+ // Result is empty map or exception. No null.
+ }
+
+ /**
+ * Get the String representation of the PreparedStatement. This is
+ * mapped to the Configuration object itself, so if it doesn't exist,
+ * it will be created.
+ */
+ protected String getSelectQuery(Configuration conf) throws ConfigurationException {
+ String query = null;
+
+ synchronized (DatabaseSelectAction.selectStatements) {
+ query = (String) DatabaseSelectAction.selectStatements.get(conf);
+
+ if (query == null) {
+ Configuration table = conf.getChild("table");
+ Configuration[] keys = table.getChild("keys").getChildren("key");
+ Configuration[] values = table.getChild("values").getChildren("value");
+
+ StringBuffer queryBuffer = new StringBuffer("SELECT ");
+ int index = 0;
+ for (int i = 0; i < keys.length; i++, index++) {
+ if (index > 0) {
+ queryBuffer.append(", ");
+ }
+ queryBuffer.append(keys[i].getAttribute("dbcol"));
+ }
+ for (int i = 0; i < values.length; i++,index++) {
+ if (index > 0) {
+ queryBuffer.append(", ");
+ }
+ queryBuffer.append(values[i].getAttribute("dbcol"));
+ }
+
+ queryBuffer.append(" FROM ");
+ queryBuffer.append(table.getAttribute("name"));
+
+ queryBuffer.append(" WHERE ");
+ for (int i = 0; i < keys.length; i++) {
+ if (i > 0) {
+ queryBuffer.append(" AND ");
+ }
+
+ queryBuffer.append(keys[i].getAttribute("dbcol"));
+ queryBuffer.append(" = ?");
+ }
+
+ query = queryBuffer.toString();
+
+ DatabaseSelectAction.selectStatements.put(conf, query);
+ }
+ }
+
+ return query;
+ }
+}
diff --git a/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseUpdateAction.java b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseUpdateAction.java
new file mode 100644
index 0000000..993a87d
--- /dev/null
+++ b/ASF_20_SRC_AUTO/src/blocks/databases/java/org/apache/cocoon/acting/DatabaseUpdateAction.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.acting;
+
+import org.apache.avalon.excalibur.datasource.DataSourceComponent;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Update a record in a database. This Action assumes that there is
+ * only one table at a time to update.
+ *
+ * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
+ * @version CVS $Id: DatabaseUpdateAction.java,v 1.2 2004/03/05 13:01:50 bdelacretaz Exp $
+ */
+public class DatabaseUpdateAction extends AbstractDatabaseAction implements ThreadSafe {
+ private static final Map updateStatements = new HashMap();
+
+ /**
+ * Update a record in the database. This action assumes that
+ * the file referenced by the "descriptor" parameter conforms
+ * to the AbstractDatabaseAction specifications.
+ */
+ public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception {
+ DataSourceComponent datasource = null;
+ Connection conn = null;
+ int currentIndex = 0;
+
+ // read global parameter settings
+ boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
+ if (this.settings.containsKey("reloadable"))
+ reloadable = Boolean.valueOf((String) this.settings.get("reloadable")).booleanValue();
+ // read local parameter settings
+ try {
+ Configuration conf =
+ this.getConfiguration(param.getParameter("descriptor", (String) this.settings.get("descriptor")), resolver,
+ param.getParameterAsBoolean("reloadable",reloadable));
+
+ String query = this.getUpdateQuery(conf);
+ datasource = this.getDataSource(conf);
+ conn = datasource.getConnection();
+ Request request = ObjectModelHelper.getRequest(objectModel);
+
+ if (conn.getAutoCommit()) {
+ conn.setAutoCommit(false);
+ }
+
+ PreparedStatement statement = conn.prepareStatement(query);
+
+ Configuration[] keys = conf.getChild("table").getChild("keys").getChildren("key");
+ Configuration[] values = conf.getChild("table").getChild("values").getChildren("value");
+ currentIndex = 1;
+
+ for (int i = 0; i < values.length; i++, currentIndex++) {
+ this.setColumn(statement, currentIndex, request, values[i]);
+ }
+
+ for (int i = 0; i < keys.length; i++, currentIndex++) {
+ this.setColumn(statement, currentIndex, request, keys[i]);
+ }
+
+ int rows = statement.executeUpdate();
+ conn.commit();
+ statement