diff --git a/common/m2/repository/jfree/jcommon/1.0.12/MODULE_LICENSE_LGPL b/common/m2/repository/jfree/jcommon/1.0.12/MODULE_LICENSE_LGPL
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/MODULE_LICENSE_LGPL
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/NOTICE b/common/m2/repository/jfree/jcommon/1.0.12/NOTICE
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/NOTICE
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/PREBUILT b/common/m2/repository/jfree/jcommon/1.0.12/PREBUILT
new file mode 100644
index 0000000..aaab1d6
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/PREBUILT
@@ -0,0 +1,6 @@
+The objects in this prebuilt directory can be rebuilt
+using the source archive
+
+jfreechart-1.0.9.zip
+
+hosted at <http://android.kernel.org/pub/>.
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/README.txt b/common/m2/repository/jfree/jcommon/1.0.12/README.txt
new file mode 100644
index 0000000..b8313bb
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/README.txt
@@ -0,0 +1,794 @@
+*******************************
+*  JFREECHART: Version 1.0.8  *
+*******************************
+
+23 November 2007
+
+(C)opyright 2000-2007, by Object Refinery Limited and Contributors.
+
+-----------------
+1.  INTRODUCTION
+-----------------
+JFreeChart is a free chart library for the Java(tm) platform.  It runs 
+on the Java 2 Platform (JDK 1.3 or later) and uses the Java 2D API for 
+drawing.
+
+JFreeChart is licensed under the terms of the GNU Lesser General
+Public Licence (LGPL).  A copy of the licence is included in the
+distribution.
+
+Please note that JFreeChart is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE.  Please refer to the licence for details.
+
+-------------------
+2.  LATEST VERSION
+-------------------
+The latest version of this class library can be obtained from:
+
+    http://www.jfree.org/jfreechart/
+
+If you have an comments, suggestions or bugs to report, please post a
+message in the JFreeChart forum.
+
+-----------------
+3.  DOCUMENTATION
+-----------------
+You can download installation instructions
+(jfreechart-1.0.8-install.pdf) from the JFreeChart home
+page or the project page on SourceForge.
+
+Further documentation for JFreeChart (the JFreeChart Developer Guide) is
+available to purchase from by Object Refinery Limited, a company owned and
+operated by David Gilbert (the original author of JFreeChart).  For more
+information, please see:
+
+    http://www.object-refinery.com/jfreechart/guide.html
+
+Sales of the JFreeChart Developer Guide are an important source of funding for
+the project.  Please help us to continue developing free software.
+
+API documentation files in HTML format are available on-line.  If you wish 
+to keep a local copy of the API files, you can regenerate them directly
+from the source code.  You can do this using the 'javadoc' or 'gjdoc' 
+utilities directly, or with the Ant script (build.xml) included in the
+distribution.
+
+-----------------
+4.  DEPENDENCIES
+-----------------
+JFreeChart has the following dependencies:
+
+(a)  JDK 1.3.1 or higher - JFreeChart requires the Java2D and Collections
+APIs, so it definitely won't work with JDK 1.1 (with a small amount of effort
+you can get it to compile and run with JDK 1.2).  If you are using JFreeChart 
+to create applets, this means that you cannot rely on the JVM integrated with
+Microsoft's Internet Explorer - your users will need to have the Java 2
+plug-in installed.  Most other browsers (e.g. Firefox, Mozilla, Netscape, 
+Konqueror) support JRE 1.4, 1.5 or 1.6.
+
+(b)  JCommon - version 1.0.0 or later.  The runtime jar file (version 1.0.12) 
+is included in the JFreeChart distribution.  You can obtain the complete
+source code for JCommon from:
+
+    http://www.jfree.org/jcommon/
+
+JCommon is licensed under the terms of the GNU Lesser General Public Licence.
+
+(c)  GNU JAXP (JDK 1.3 only) - a free implementation of the standard XML 
+processing APIs for Java.
+
+    http://www.gnu.org/software/classpathx/jaxp/
+
+Classes in the org.jfree.data.xml package require this library, or
+another JAXP v1.1 compliant parser.  The gnujaxp.jar file (from the
+gnujaxp-1.0beta1.zip distribution) is included with JFreeChart.  GNU
+JAXP is licensed under the terms of the GNU General Public License
+with an additional library exception.
+
+THIS LIBRARY IS ONLY REQUIRED BY JFREECHART IF YOU ARE USING JDK 1.3.
+
+(d)  servlet.jar - classes in the org.jfree.chart.servlet
+package require this file.  The JFreeChart distribution includes the 
+servlet.jar file distributed with Tomcat 4.1.31.  Applicable license 
+terms are published at:  
+
+    http://java.sun.com/products/servlet/LICENSE   
+
+(e)  JUnit - a unit testing framework (the junit.jar runtime file is
+included in the distribution).  JUnit is licensed under the terms
+of the IBM Common Public License.  You can find out more about JUnit
+and/or download the latest version from:
+
+    http://www.junit.org
+
+The JUnit tests included with JFreeChart have been created using JUnit
+4.3.1.
+
+-----------
+5.  SUPPORT
+-----------
+Support questions can be posted in the free support forum at
+
+    http://www.jfree.org/phpBB2/viewforum.php?f=3
+    
+We read all questions posted in the forum, and respond to as many as we can
+in the time available.  Unfortunately, there are too many questions to answer
+them all.
+    
+If you need commercial support for JFreeChart, this is offered by
+Object Refinery Limited:
+
+    http://www.object-refinery.com/jfreechart/support.html
+
+--------------------
+6.  ANT BUILD SCRIPT
+--------------------
+An Ant build script (build.xml) is included in the distribution.  This
+is the same script that is used to create the JFreeChart distribution.
+
+For more information about Ant:
+
+    http://ant.apache.org/
+
+Please note that you will need to obtain the servlet.jar file (see the
+DEPENDENCIES section above) before running the Ant script.
+
+------------------------
+7.  THE DEMO APPLICATION
+------------------------
+A demo application that shows a selection of the charts that can be
+generated is included in the JFreeChart distribution.   To run the
+demo (using JDK 1.3.1 or later), use the following command:
+
+    java -jar jfreechart-1.0.8-demo.jar
+
+The complete source code for the demo application is available for
+download when you purchase the JFreeChart Developer Guide.
+
+The demo application uses iText, a library for creating PDF documents.
+iText is licensed under the terms of the GNU Lesser General Public Licence
+and is available to download from:
+
+    http://www.lowagie.com/iText/
+
+---------------
+8.  LIMITATIONS
+---------------
+JFreeChart has some known limitations that will hopefully be addressed in 
+the future:
+
+    - with the XYPlot class, when the bounds of the range axis are calculated
+      automatically, all of the data is used, not just the subset that is 
+      visible on the chart;
+    - some renderers do not respect the series visibility flags yet;
+    - the chart property editors (accessible by right-clicking on the chart
+      panel) are horribly out of date and probably shouldn't be used;
+    - item labels (if displayed) are not taken into account for the 
+      automatically calculated axis range.  As a workaround, you can increase
+      the axis margins;
+    - tick labels on a DateAxis that uses a SegmentedTimeline can be 
+      problematic;
+    - there is no support for writing charts to JPEG format on JDK 1.3.  JPEG 
+      is not a good format for charts in any case, and it is usually better to 
+      use PNG format.
+    
+If there are other items that you think should be listed here,
+please post a bug report.
+
+-----------------
+9.  GNU CLASSPATH
+-----------------
+GNU Classpath is a project to create a free, clean-room implementation of the
+standard Java(tm) class libraries:
+
+http://www.gnu.org/software/classpath/
+
+JFreeChart should work quite well with free runtimes based on 
+GNU Classpath 0.92 or later.  We are grateful to all the GNU Classpath 
+developers that have made this possible.
+
+---------------
+10.  WHAT's NEW
+---------------
+A list of changes in recent versions:
+
+1.0.8 : (23-Nov-2007)
+        - primarily a bug fix release.  See the NEWS and ChangeLog files for a 
+          more detailed description of the changes in this release.
+
+1.0.7 : (14-Nov-2007)
+        - See the NEWS and ChangeLog files for a more detailed description of 
+          the changes in this release.
+
+1.0.6 : (15-Jun-2007) 
+        - the VectorRenderer and associated dataset classes have been promoted
+          to the standard API from the 'experimental' source tree.  See the
+          NEWS and ChangeLog files for a more detailed description of the 
+          changes in this release.
+          
+1.0.5 : (23-Mar-2007) 
+        - this release contains a new DeviationRenderer, enhancements to a 
+          number of existing classes and numerous bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.4 : (9-Feb-2007)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.3 : (17-Nov-2006) 
+        - this release contains a new DialPlot class (in 'experimental') that
+          will hopefully replace the MeterPlot class, once the API has been
+          polished a little, plus many other new features and bug fixes.  See
+          the NEWS and ChangeLog files for details.
+
+1.0.2 : (25-Aug-2006)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.1 : (27-Jan-2006)
+        - primarily a bug fix release, see the NEWS and ChangeLog files for
+          details.
+
+1.0.0 : (2-Dec-2005)
+        - the first stable release of the JFreeChart class library, all future
+          releases in the 1.0.x series will aim to maintain backward 
+          compatibility with this release;
+        - see the ChangeLog file for a detailed list of changes.
+
+1.0.0-rc3 : (28-Nov-2005)
+        - the third "release candidate" for version 1.0.0, this release
+          fixes some issues with the 1.0.0-rc2 release (mainly concerning
+          packaging of resource bundles for localisation).  
+        - if no significant problems are reported in the next few days,
+          the 1.0.0 "final" release will be posted on 2-Dec-2005.
+
+1.0.0-rc2 : (25-Nov-2005)
+            - the second "release candidate" for version 1.0.0.  If no problems
+              are reported, 1.0.0 "final" will be released on 2-Dec-2005.
+            - see the ChangeLog file for a detailed list of changes in this 
+              release.
+
+1.0.0-rc1 : (2-Jun-2005)
+            - this is a "release candidate" for version 1.0.0.  If no 
+              significant API problems are reported, this release will be 
+              re-released as version 1.0.0. 
+            - see CHANGELOG.txt for further details.
+
+1.0.0-pre2 : (10-Mar-2005)
+         - see CHANGELOG.txt for further details.
+
+1.0.0-pre1 : (29-Nov-2004)
+         - see CHANGELOG.txt for further details.
+ 
+0.9.21 : (9-Sep-2004) 
+         - added new axes: PeriodAxis and ModuloAxis.
+         - split org.jfree.data and org.jfree.chart.renderer into
+           subpackages for 'category' and 'xy' charts.
+         - Sun PNG encoder is now used, if available.
+         - a new demo application makes it easier to preview the 
+           chart types that JFreeChart can create.
+         - added a new series visibility flag to the AbstractRenderer
+           class.
+         - added support for GradientPaint in interval markers.
+         - see CHANGELOG.txt for further details.
+         
+0.9.20 : (7-Jun-2004) 
+         - primarily bug fixes, see CHANGELOG.txt for further details.
+
+0.9.19 : (28-May-2004)
+         - added methods to XYDataset that return double primitives;
+         - removed distinction between "primary" and "secondary" datasets,
+           renderers and axes;
+         - added fixed legend item options to CategoryPlot and XYPlot;
+         - legend changes by Barek Naveh;
+         - removed Log4j dependency;
+         - many, many bug fixes;
+         - see CHANGELOG.txt for further details.
+
+0.9.18 : (15-Apr-2004)
+         - new legend anchor options;
+         - fixed broken JPEG export;
+         - fixed title size problems;
+         - various other bug fixes;
+
+0.9.17 : (26-Mar-2004)
+         - pie chart enhancements for labelling, shading and multiple pie
+           charts (2D or 3D) on a single plot;
+         - new PolarPlot class added;
+         - XYSeries can now be sorted or unsorted;
+         - createBufferedImage() method can now scale charts;
+         - domain and range markers now support intervals;
+         - item labels are now supported by some XYItemRenderers;
+         - tooltip and item label generators now use MessageFormat class;
+         - added new XYBarDataset class;
+         - added transparency support to PNG export;
+         - numerous other small enhancements and bug fixes, see the
+           CHANGELOG.txt file for more details;
+
+0.9.16 : (09-Jan-2004)
+         - this release contains bug fixes and some minor feature
+           enhancements (title and category label wrapping, legend shape
+           scaling, enhanced performance for the DefaultTableXYDataset class);
+         - added Spanish localisation files;
+
+0.9.15 : (28-Nov-2003)
+         - the focus of this release is bug fixes - quite a number of issues
+           have been resolved, please check the bug database for details;
+         - added a new Wafer Map chart type;
+         - added a cyclic axis;
+         - added localisation files for _ru;
+
+0.9.14 : (17-Nov-2003) 
+         - implemented zooming for the FastScatterPlot class;
+         - added item label support for stacked bar charts, and new fall back
+           options for item labels that don't fit within bars;
+         - modified the CategoryAxis class to allow additional options for the
+           alignment and rotation of category labels;
+         - addition of the AxisState class, used in the drawing of axes to
+           eliminate a bug when multiple threads draw the same axis
+           simultaneously;
+         - provided additional attributes in the DateTickUnit class to improve
+           labelling on a segmented DateAxis;
+         - added support for GradientPaint in bar charts;
+         - updated the PNGEncoder;
+         - fixes for tick label positioning on axes;
+         - various Javadoc updates;
+         - numerous bug fixes;
+
+0.9.13 : (26-Sep-2003)
+         - various enhancements to the stacked area XY charts;
+         - added a completion indicator for the Gantt chart;
+         - range and domain markers can now be placed in the foreground or the
+           background;
+         - more fixes for cloning and serialization;
+         - fixed mouse event bug for combined charts;
+         - fixed bugs in the PngEncoder class;
+         - incorporated .properties files that were missing from the 0.9.12
+           distribution;
+
+0.9.12 : (11-Sep-2003)
+         - extended box-and-whisker plots to work with the CategoryPlot	class
+           as well as the XYPlot class (based on work by David Browning);
+         - added a new LayeredBarRenderer (by Arnaud Lelievre);
+         - added support for stacked area charts with the XYPlot class (thanks
+           to Richard Atkinson);
+         - improved HTML image map support (thanks to Richard Atkinson);
+         - added localized resources for the chart property editors (thanks to
+           Arnaud Lelievre).  Current translations include French and Portugese
+           (thanks to Eduardo Ramalho);
+         - added facility for setting all rendering hints;
+         - improved support for cloning and serialization;
+         - fixed a bug in the XYSeries class that prevented the TableXYDataset
+           from functioning correctly;
+         - improved date axis labelling with segmented time lines;
+         - fixed several bugs in the secondary dataset/axis/renderer code;
+         - fixed bugs in the JDBCCategoryDataset class;
+         - numerous other bug fixes;
+
+0.9.11 : (8-Aug-2003)
+         - added support for box-and-whisker plots, thanks to David Browning;
+         - lots of bug fixes;
+
+API changes in this release are minimal and have been implemented using
+deprecation, so code written against 0.9.10 should recompile.
+
+0.9.10 : (25-Jul-2003) 
+         - added support for multiple secondary axes, datasets and
+           renderers;
+         - minor feature enhancements and bug fixes;
+
+0.9.9 : (10-Jul-2003) PLEASE NOTE THAT MAJOR CHANGES HAVE BEEN MADE IN THIS
+RELEASE AND ONE OR TWO FEATURES MAY BE BROKEN.  PLEASE REPORT BUGS SO THEY CAN
+BE FIXED FOR THE NEXT RELEASE.
+
+        - merged the HorizontalCategoryPlot and VerticalCategoryPlot classes,
+          into the CategoryPlot class;
+        - merged the horizontal and vertical axis classes;
+        - merged the horizontal and vertical renderer classes;
+        - CategoryPlot and XYPlot now support both horizontal and vertical
+          orientation via the setOrientation(...) method;
+        - merged horizontal and vertical methods in the ChartFactory class;
+        - created new combined plot classes: CombinedDomainCategoryPlot,
+          CombinedRangeCategoryPlot, CombinedDomainXYPlot and
+          CombinedRangeXYPlot (these can all be drawn with a horizontal or
+          vertical orientation);
+        - Bill Kelemen has enhanced the DateAxis class to handle segmented
+          timelines.  This can be used, for example, to skip weekends for
+          daily stock price charts;
+        - Richard Atkinson has updated the ServletUtilities class;
+        - Bryan Scott has added an XYDatasetTableModel class for presenting
+          datasets in a JTable;
+        - modified XYPlot to allow renderers to use multiple passes through
+          the dataset;
+        - added new XYDifferenceRenderer;
+        - added support for colored bands between gridlines in XYPlot;
+        - added new XYDrawableAnnotation class;
+        - added a new attribute to control the order of dataset rendering in 
+          a CategoryPlot;
+        - extended the value label mechanism for the renderers, to allow
+          better (per series) control over label generation, positioning and
+          visibility;
+        - CategoryItemTooltipGenerator has been renamed
+          CategoryItemLabelGenerator, since it is now being used to generated
+          item labels as well as tooltips;
+        - there is now support for horizontal stacked 3D bar charts;
+        - added support for range markers against secondary axis in a 
+          CategoryPlot;
+        - added labels to domain and range markers;
+        - added a new HistogramDataset class (contributed by Jelai Wang) to
+          make it easier to create histograms with JFreeChart;
+        - moved the DrawingSupplier into the plot class, renderers now
+          reference the supplier from the plot (parent plot for combined and
+          overlaid charts).  This means that renderers now share a single
+          DrawingSupplier by default, which simplifies the creation of
+          combined charts;
+        - changed the ColorBarAxis classes that extended the NumberAxis class,
+          to a single ColorBar class that wraps a ValueAxis (may have broken
+          one or two things in the process);
+        - Barak Naveh has contributed new classes MatrixSeries and
+          MatrixSeriesCollection, along with demos:  BubblyBubblesDemo.java
+          and BubblyBubblesDemo2.java;
+        - the TextTitle class now has a background paint attribute;
+        - the StandardLegend class now generates LegendEntity objects if a
+          ChartRenderingInfo instance is supplied to the draw(...) method;
+        - extended the CategoryTextAnnotation class to take into account a
+          category anchor point.  See the SurveyResultsDemo.java application
+          for an example;
+        - included numerous bug fixes;
+
+0.9.8 : (24-Apr-2003)
+        - changed package naming from com.jrefinery.* to org.jfree.*;
+        - added new TimePeriodValuesCollection class;
+        - added MIME type code to ServletUtilities class;
+        - reversed the order of PieDataset and KeyedValuesDataset in 
+          the class hierarchy;
+        - reversed the order of CategoryDataset and KeyedValues2DDataset
+          in the class hierarchy;
+        - minor bug fixes;
+
+0.9.7 : (11-Apr-2003) 
+        - added a new ValueDataset interface and DefaultValueDataset
+          class, and changed the CompassPlot class to use this instead
+          of MeterDataset;
+        - added DataUtilities class, to support creation of Pareto
+          charts (new demo included);
+        - updated writeImageMap method as suggested by Xavier Poinsard
+          (see Feature Request 688079);
+        - implemented Serializable for most classes (this is likely to
+          require further testing);
+        - incorporated contour plot updates from David M. O'Donnell;
+        - added new CategoryTextAnnotation and XYLineAnnotation
+          classes;
+        - added new HorizontalCategoryAxis3D class contributed by
+          Klaus Rheinwald;
+
+        Bug fixes:
+        - added a workaround for JVM crash (a JDK bug) in pie charts
+          with small sections (see bug report 620031);
+        - fixed minor bug in HorizontalCategoryPlot constructor (see
+          bug report 702248);
+        - added code to ensure HorizontalNumberAxis3D is not drawn if
+          it is not visible (see bug report 702466);
+        - added small fix for suppressed chart change events (see bug
+          report 690865);
+        - added pieIndex parameter to tooltip and URL generators for
+          pie charts;
+        - fixed bug in getLastMillisecond() method for the Second
+          class and the getFirstMillisecond() method for the Year
+          class (picked up in JUnit tests);
+        - in TextTitle, changed width used for relative spacing to fix
+          bug 703050;
+
+0.9.6 : (17-Feb-2003) Bug fixes:
+        - fixed null pointer exception in DefaultCategoryDataset;
+        - fixed update problem for PaintTable, StrokeTable and
+          ShapeTable objects;
+        - added methods to control colors in PiePlot (these were
+          inadvertantly removed in the changes made for 0.9.5);
+        - fixed auto-range update problem for secondary axis;
+        - fixed missing category labels in the overlaid category plot;
+        - fixed constructors for symbolic axes;
+        - corrected error in Javadoc generation (Ant script);
+
+0.9.5 : (6-Feb-2003)  PLEASE NOTE THAT MAJOR CHANGES TO THE
+        JFREECHART API HAVE BEEN MADE IN THIS RELEASE!
+
+        - added support for secondary axes, datasets and renderers;
+        - added new data interfaces (Value, Values, Values2D,
+          KeyedValues and KeyedValues2D) and incorporated these into
+          the existing PieDataset and CategoryDataset interfaces.
+        - modified the CategoryDataset interface to be more
+          symmetrical, data is organised in rows and columns (as
+          before) but can now be accessed by row/column index or
+          row/column key.   
+        - added support for reading PieDatasets and CategoryDatasets
+          from XML files.
+        - created separate packages for the axes
+          (com.jrefinery.chart.axis), plots (com.jrefinery.chart.plot)
+          and renderers (com.jrefinery.chart.renderer).
+        - series attributes (paint, outline paint, stroke and shape)
+          are now controlled by the renderer classes using lookup
+          tables.  Introduced the DrawingSupplier interface (and
+          DefaultDrawingSupplier class) which is used to populate the
+          lookup tables from a common source (necessary to coordinate
+          complex combined charts).
+        - the chart legend can now display shapes corresponding to
+          series. 
+        - moved responsibility for category distribution to the
+          CategoryAxis class, which tidies up the code in the
+          CategoryPlot classes.  
+        - gridlines are now controlled by the CategoryPlot and XYPlot
+          classes, not the axes (included in this change is the
+          addition of gridlines for the CategoryPlot domain values).
+        - changed the list of titles in the JFreeChart class to a
+          title and a list of subtitles.  
+        - added new renderers for XYPlot (XYBubbleRenderer and
+          YIntervalRenderer).
+        - modified Gantt chart to display sub-tasks.
+        - added ContourPlot class (still experimental) by David
+          M. O'Donnell.
+        - introduced new MovingAverage class.
+        - ChartMouseEvent now includes source chart.
+        - numerous bug fixes.
+        - lots of Javadoc updates.
+
+0.9.4 : (18-Oct-2002)  Added a new stacked area chart (contributed by Dan
+        Rivett) and a compass plot (contributed by Bryan Scott).  Updated
+        the ThermometerPlot class. Added a new XYDotRenderer for scatter
+        plots. Modified combined and overlaid plots to use the series colors
+        specified in the sub plot rather than the parent plot (this makes it
+        easier to align the colors in the legend).  Added Regression class
+        for linear and power regressions.  BasicTimeSeries can now
+        automatically drop "old" data.  Some clean-up work in the code for
+        tooltips and the event listener mechanism.  Richard Atkinson has
+        incorporated some useful extensions for servlets/JSP developers.
+
+        Ran Checkstyle and corrected issues reported for most classes.
+        Checkstyle is a free utility that you can download from:
+
+            http://checkstyle.sourceforge.net
+
+        Fixed bugs and updated documentation.
+
+        API changes include:
+        - added tickMarkPaint to Axis constructor (also affects
+          subclasses);
+        - added getLegendItems() to Plot, and deprecated
+          getLegendItemLabels();
+        - added getLegendItem(int) to XYItemRenderer and
+          CategoryItemRenderer.
+        - most 'protected' member variables have been changed to
+          'private'.
+
+0.9.3 : (4-Sep-2002) Added multiple pie charts based on
+        CategoryDataset.  Updated logarithmic axes.  Improved URL
+        support for image map generation. Moved the com.jrefinery.data
+        package from JCommon to JFreeChart. Added simple framework for
+        chart annotations. Improved control over renderers. Duplicate
+        x-values now allowed in XYSeries. Optional category label
+        skipping in category axes. Added CategoriesPaint attribute to
+        AbstractCategoryItemRenderer.  Added new attributes to
+        MeterPlot class. Updated 3D pie chart to observe start angle
+        and direction, and also foreground alpha < 1.0. Improved
+        Javadoc comments. New demo applications, including:
+        AnnotationDemo1, EventFrequencyDemo, JDBCCategoryChartDemo,
+        JDBCPieChartDemo, JDBCXYChartDemo and MinMaxCategoryPlotDemo.
+        Bug fixes:
+        - negative percentages on PiePlot.
+        - added listener notification to setXXXAxis(...) methods.
+        - fixed DomainInfo method name clash.
+        - added DomainIsPointsInTime flag to TimeSeriesCollection to
+          give better control over auto range on axis for time series
+          charts.
+        - axis margins for date axes are no longer hard-coded.
+        - fix for ordering of categories in JdbcCategoryDataset.
+        - added check for null axis in mouse click handler.
+
+        The CVS repository at SourceForge has also been restructured
+        to match the distribution directory layout.
+
+0.9.2 : (28-Jun-2002) PiePlot now has startAngle and direction
+        attributes.  Added support for image map generation.  Added a
+        new Pie3DPlot class. Added label drawing code to bar
+        renderers. Added optional range markers to horizontal number
+        axis.  Added bar clipping to avoid PRExceptions in bar
+        charts.  JFreeChartDemo has been modified and now includes
+        examples of the dial and thermometer plots.
+        Bug fixes:
+        - auto range for VerticalNumberAxis when zero is forced to be
+          included in the range.
+        - fixed null pointer exception in StackedVerticalBarRenderer3D;
+        - Added get/set methods for min/max chart drawing dimensions
+          in ChartPanel;
+        - HorizontalIntervalBarRenderer now handles single category;
+        - verticalTickLabels now possible in HorizontalNumberAxis3D;
+        - removed unnecessary imports;
+
+0.9.1 : (14-Jun-2002) Bug fixes and Javadoc updates.
+        - fixed auto range calculation for category plots;
+        - fixed event notification for XYPlot;
+        - fixed auto axis range for Gantt charts;
+        - check for null popup menu in ChartPanel.mouseDragged;
+        - new checks for null info in renderers;
+        - range markers now drawn only if in visible axis range;
+
+0.9.0 : (7-Jun-2002) New plots including an area chart, a horizontal
+        3D bar chart, a Gantt chart and a thermometer chart.
+        Combination plots have been reworked to provide a
+        simpler framework, and extends to allow category plots to be
+        combined. There is now a facility to add a ChartMouseListener
+        to the ChartPanel (formerly JFreeChartPanel).  An interactive
+        zooming feature (experimental at this point) is now available
+        for XYPlots.  A new Polish translation has been added. Several
+        fixes have been applied to the default tool tip generators.  A
+        workaround has been added to fix the alignment between time
+        series charts and the date axis.  There are some improvements
+        to the VerticalLogarithmicAxis class, and now a corresponding
+        HorizontalLogarithmicAxis class.  Additional demonstration
+        applications have been added.  Fixed the popup menu bug.
+
+0.8.1 : (5-Apr-2002) Localised resource bundles for French, German and
+        Spanish languages (thanks to Anthony Boulestreau, Thomas Meier
+        and Hans-Jurgen Greiner for the translations).  An area XY
+        plot and meter chart contributed by Hari.  Symbol charts
+        contributed by Anthony Boulestreau. An improved
+        CandleStickRenderer class from Sylvain Vieujot.  Updated
+        servlet code from Bryan Scott.  XYItemRenderers now have a
+        change listener mechanism and therefore do not have to be
+        immutable.  Additional demonstration applications for
+        individual chart types. Minor bug fixes.
+
+0.8.0 : (22-Mar-2002) All the category plots are now controlled
+        through the one class (CategoryPlot) with plug-in renderers.
+        Added a ResourceBundle for user interface items that require
+        localisation. Added a logarithmic axis class contributed by
+        Mike Duffy and some new JDBC and servlet code contributed by
+        Bryan Scott.  Updated the JCommon class library to improve
+        handling of time periods in different time zones.
+
+0.7.4 : (6-Mar-2002) Bug fixes in the JCommon Class Library. Various
+        Javadoc comment updates.  Some minor changes to the
+        code. Added new domain name (http://www.object-refinery.com)
+        in the source headers.
+
+0.7.3 : (14-Feb-2002) Bug fixes.
+
+0.7.2 : (8-Feb-2002) Integrated the WindPlot code from Achilleus
+        Mantzios. Added an optional background image for the
+        JFreeChart class, and another optional background image for
+        the Plot class.  Added alpha-transparency for the plot
+        foreground and background.  Added new pie chart label types
+        that show values.  Fixed a bug with the legend that results in
+        a loop at small chart sizes. Added some tooltip methods that
+        were missing from the previous version. Changed the Insets
+        class on chart titles to a new Spacer class that will allow
+        for relative or absolute insets (the plan is to eventually
+        replace all Insets in the JFreeChart classes).  Fixed a bug in
+        the setAutoRangeIncludesZero method of the NumberAxis class.
+        Added the instructions that were missing from the copies of
+        the GNU Lesser General Public Licence included with JFreeChart.
+
+0.7.1 : (25-Jan-2002) Added tooltips, crosshairs and zooming
+        functions, thanks to Jonathan Nash and Hans-Jurgen Greiner
+        for contributing the code that these features are based on.
+        Moved the combination charts into the package
+        com.jrefinery.chart.combination, made a number of other small
+        API changes and fixed some bugs.  Removed the Javadoc HTML
+        from the download to save space (you can regenerate it from
+        the source code if you need it).
+
+0.7.0 : (11-Dec-2001) New combination plots developed by Bill
+        Kelemen.  Added Wolfgang Irler's servlet demo to the standard
+        download.  The About window in the demo application now
+        includes a list of developers that have contributed to the
+        project.
+
+0.6.0 : (27-Nov-2001) New plots including scatter plot, stacked bar
+        charts and 3D bar charts.  Improved pie chart.  Data
+        interfaces and classes moved to the JCommon class library.
+        New properties to control spacing on bar charts.  New
+        auto-tick mechanism.  JFreeChartPanel now incorporates
+        buffering, and popup menu.  Javadocs revised.  Fixed numerous
+        bugs from version 0.5.6.  Demo application updated.
+
+----------------
+10.  CONTRIBUTORS
+----------------
+JFreeChart wouldn't be half the library that it is today without the
+contributions (large and small) that have been made by the developers listed 
+below:
+
+    - Eric Alexander
+    - Richard Atkinson
+    - David Basten
+    - David Berry
+    - Chris Boek
+    - Zoheb Borbora
+    - Anthony Boulestreau
+    - Jeremy Bowman
+    - Nicolas Brodu
+    - Jody Brownell
+    - David Browning
+    - Soren Caspersen
+    - Chuanhao Chiu
+    - Brian Cole
+    - Pascal Collet
+    - Martin Cordova
+    - Paolo Cova
+    - Mike Duffy
+    - Don Elliott
+    - Rune Fauske
+    - Jonathan Gabbai
+    - Serge V. Grachov
+    - Daniel Gredler
+    - Joao Guilherme Del Valle
+    - Hans-Jurgen Greiner
+    - Nick Guenther
+    - Aiman Han
+    - Cameron Hayne
+    - Jon Iles
+    - Wolfgang Irler
+    - Sergei Ivanov
+    - Adriaan Joubert
+    - Darren Jung
+    - Xun Kang
+    - Bill Kelemen
+    - Norbert Kiesel
+    - Gideon Krause
+    - Pierre-Marie Le Biot
+    - Arnaud Lelievre
+    - Wolfgang Lenhard
+    - David Li
+    - Yan Liu
+    - Tin Luu
+    - Craig MacFarlane
+    - Achilleus Mantzios
+    - Thomas Meier
+    - Jim Moore
+    - Jonathan Nash
+    - Barak Naveh
+    - David M. O'Donnell
+    - Krzysztof Paz
+    - Tomer Peretz
+    - Xavier Poinsard
+    - Andrzej Porebski
+    - Viktor Rajewski
+    - Eduardo Ramalho
+    - Michael Rauch
+    - Cameron Riley
+    - Klaus Rheinwald
+    - Dan Rivett
+    - Scott Sams
+    - Michel Santos
+    - Thierry Saura
+    - Andreas Schneider
+    - Jean-Luc SCHWAB
+    - Bryan Scott
+    - Tobias Selb
+    - Mofeed Shahin
+    - Pady Srinivasan
+    - Greg Steckman
+    - Roger Studner
+    - Gerald Struck
+    - Irv Thomae
+    - Eric Thomas
+    - Rich Unger
+    - Daniel van Enckevort
+    - Laurence Vanhelsuwe
+    - Sylvain Vieujot
+    - Jelai Wang
+    - Mark Watson
+    - Alex Weber
+    - Richard West
+    - Matthew Wright
+    - Benoit Xhenseval
+    - Christian W. Zuckschwerdt
+    - Hari 
+    - Sam (oldman)
+
+It is possible that I have missed someone on this list, if that
+applies to you, please e-mail me. 
+
+Dave Gilbert (david.gilbert@object-refinery.com)
+JFreeChart Project Leader
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar
new file mode 100644
index 0000000..023254b
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.md5 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.md5
new file mode 100644
index 0000000..8da119f
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.md5
@@ -0,0 +1 @@
+1d4ffb67504b21dca5fd78d078233e28  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.sha1 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.sha1
new file mode 100644
index 0000000..7e02f84
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar.sha1
@@ -0,0 +1 @@
+2c384b0a268e413c83c2b0658f73ce131d677577  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12-sources.jar
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar
new file mode 100644
index 0000000..ca4f04a
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.md5 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.md5
new file mode 100644
index 0000000..f970a91
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.md5
@@ -0,0 +1 @@
+99bc885bb5c68be1c09ed23c997df5ac  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12.jar
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.sha1 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.sha1
new file mode 100644
index 0000000..8583a49
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar.sha1
@@ -0,0 +1 @@
+737f02607d2f45bb1a589a85c63b4cd907e5e634  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12.jar
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom
new file mode 100644
index 0000000..0749d3f
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom
@@ -0,0 +1,59 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>jfree</groupId>
+    <artifactId>jcommon</artifactId>
+    <name>jcommon</name>
+    <version>1.0.12</version>
+    <organization>
+        <name>JFree.org</name>
+        <url>http://www.jfree.org/</url>
+    </organization>
+    <inceptionYear>2001</inceptionYear>
+    <description>
+        JCommon is a free general purpose Java class library that is used in several projects at www.jfree.org,
+        including JFreeChart and JFreeReport.
+    </description>
+    <url>http://www.jfree.org/jcommon/</url>
+    <scm>
+        <connection>scm:cvs:pserver:anonymous@jfreechart.cvs.sourceforge.net:/cvsroot/jfreechart:jcommon</connection>
+        <url>http://jfreechart.cvs.sourceforge.net/jfreechart/jcommon/</url>
+    </scm>
+    <licenses>
+        <license>
+            <name>GNU Lesser General Public Licence</name>
+            <url>http://www.gnu.org/licenses/lgpl.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.3</source>
+                    <target>1.3</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/PaintTest.java</exclude>
+                    </excludes>
+                    <!-- Force locale because of some tests in SerialDateTest.java -->
+                    <argLine>-Duser.language=en -Duser.region=GB</argLine>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.md5 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.md5
new file mode 100644
index 0000000..64d3e6f
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.md5
@@ -0,0 +1 @@
+a78ffce98f7e246d0990acca166d33c4  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12.pom
diff --git a/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.sha1 b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.sha1
new file mode 100644
index 0000000..5661592
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.pom.sha1
@@ -0,0 +1 @@
+ed0846359009f6b704484088128e4ddd256bae64  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jcommon/1.0.12/jcommon-1.0.12.pom
diff --git a/common/m2/repository/jfree/jcommon/maven-metadata.xml b/common/m2/repository/jfree/jcommon/maven-metadata.xml
new file mode 100644
index 0000000..1342887
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/maven-metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>jfree</groupId>
+  <artifactId>jcommon</artifactId>
+  <versioning>
+    <latest>1.0.16</latest>
+    <release>1.0.16</release>
+    <versions>
+      <version>1.0.16</version>
+    </versions>
+    <lastUpdated>20110926034415</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/common/m2/repository/jfree/jcommon/maven-metadata.xml.md5 b/common/m2/repository/jfree/jcommon/maven-metadata.xml.md5
new file mode 100644
index 0000000..b308155
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/maven-metadata.xml.md5
@@ -0,0 +1 @@
+78413d0f5be79bd89a13bb014e390bcb
\ No newline at end of file
diff --git a/common/m2/repository/jfree/jcommon/maven-metadata.xml.sha1 b/common/m2/repository/jfree/jcommon/maven-metadata.xml.sha1
new file mode 100644
index 0000000..6fd85bb
--- /dev/null
+++ b/common/m2/repository/jfree/jcommon/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+94a9aa4cb6d1d9b42ef216acd92acb91ad9af612
\ No newline at end of file
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/MODULE_LICENSE_LGPL b/common/m2/repository/jfree/jfreechart-swt/1.0.9/MODULE_LICENSE_LGPL
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/MODULE_LICENSE_LGPL
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/NOTICE b/common/m2/repository/jfree/jfreechart-swt/1.0.9/NOTICE
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/NOTICE
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/PREBUILT b/common/m2/repository/jfree/jfreechart-swt/1.0.9/PREBUILT
new file mode 100644
index 0000000..aaab1d6
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/PREBUILT
@@ -0,0 +1,6 @@
+The objects in this prebuilt directory can be rebuilt
+using the source archive
+
+jfreechart-1.0.9.zip
+
+hosted at <http://android.kernel.org/pub/>.
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/README.txt b/common/m2/repository/jfree/jfreechart-swt/1.0.9/README.txt
new file mode 100644
index 0000000..b8313bb
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/README.txt
@@ -0,0 +1,794 @@
+*******************************
+*  JFREECHART: Version 1.0.8  *
+*******************************
+
+23 November 2007
+
+(C)opyright 2000-2007, by Object Refinery Limited and Contributors.
+
+-----------------
+1.  INTRODUCTION
+-----------------
+JFreeChart is a free chart library for the Java(tm) platform.  It runs 
+on the Java 2 Platform (JDK 1.3 or later) and uses the Java 2D API for 
+drawing.
+
+JFreeChart is licensed under the terms of the GNU Lesser General
+Public Licence (LGPL).  A copy of the licence is included in the
+distribution.
+
+Please note that JFreeChart is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE.  Please refer to the licence for details.
+
+-------------------
+2.  LATEST VERSION
+-------------------
+The latest version of this class library can be obtained from:
+
+    http://www.jfree.org/jfreechart/
+
+If you have an comments, suggestions or bugs to report, please post a
+message in the JFreeChart forum.
+
+-----------------
+3.  DOCUMENTATION
+-----------------
+You can download installation instructions
+(jfreechart-1.0.8-install.pdf) from the JFreeChart home
+page or the project page on SourceForge.
+
+Further documentation for JFreeChart (the JFreeChart Developer Guide) is
+available to purchase from by Object Refinery Limited, a company owned and
+operated by David Gilbert (the original author of JFreeChart).  For more
+information, please see:
+
+    http://www.object-refinery.com/jfreechart/guide.html
+
+Sales of the JFreeChart Developer Guide are an important source of funding for
+the project.  Please help us to continue developing free software.
+
+API documentation files in HTML format are available on-line.  If you wish 
+to keep a local copy of the API files, you can regenerate them directly
+from the source code.  You can do this using the 'javadoc' or 'gjdoc' 
+utilities directly, or with the Ant script (build.xml) included in the
+distribution.
+
+-----------------
+4.  DEPENDENCIES
+-----------------
+JFreeChart has the following dependencies:
+
+(a)  JDK 1.3.1 or higher - JFreeChart requires the Java2D and Collections
+APIs, so it definitely won't work with JDK 1.1 (with a small amount of effort
+you can get it to compile and run with JDK 1.2).  If you are using JFreeChart 
+to create applets, this means that you cannot rely on the JVM integrated with
+Microsoft's Internet Explorer - your users will need to have the Java 2
+plug-in installed.  Most other browsers (e.g. Firefox, Mozilla, Netscape, 
+Konqueror) support JRE 1.4, 1.5 or 1.6.
+
+(b)  JCommon - version 1.0.0 or later.  The runtime jar file (version 1.0.12) 
+is included in the JFreeChart distribution.  You can obtain the complete
+source code for JCommon from:
+
+    http://www.jfree.org/jcommon/
+
+JCommon is licensed under the terms of the GNU Lesser General Public Licence.
+
+(c)  GNU JAXP (JDK 1.3 only) - a free implementation of the standard XML 
+processing APIs for Java.
+
+    http://www.gnu.org/software/classpathx/jaxp/
+
+Classes in the org.jfree.data.xml package require this library, or
+another JAXP v1.1 compliant parser.  The gnujaxp.jar file (from the
+gnujaxp-1.0beta1.zip distribution) is included with JFreeChart.  GNU
+JAXP is licensed under the terms of the GNU General Public License
+with an additional library exception.
+
+THIS LIBRARY IS ONLY REQUIRED BY JFREECHART IF YOU ARE USING JDK 1.3.
+
+(d)  servlet.jar - classes in the org.jfree.chart.servlet
+package require this file.  The JFreeChart distribution includes the 
+servlet.jar file distributed with Tomcat 4.1.31.  Applicable license 
+terms are published at:  
+
+    http://java.sun.com/products/servlet/LICENSE   
+
+(e)  JUnit - a unit testing framework (the junit.jar runtime file is
+included in the distribution).  JUnit is licensed under the terms
+of the IBM Common Public License.  You can find out more about JUnit
+and/or download the latest version from:
+
+    http://www.junit.org
+
+The JUnit tests included with JFreeChart have been created using JUnit
+4.3.1.
+
+-----------
+5.  SUPPORT
+-----------
+Support questions can be posted in the free support forum at
+
+    http://www.jfree.org/phpBB2/viewforum.php?f=3
+    
+We read all questions posted in the forum, and respond to as many as we can
+in the time available.  Unfortunately, there are too many questions to answer
+them all.
+    
+If you need commercial support for JFreeChart, this is offered by
+Object Refinery Limited:
+
+    http://www.object-refinery.com/jfreechart/support.html
+
+--------------------
+6.  ANT BUILD SCRIPT
+--------------------
+An Ant build script (build.xml) is included in the distribution.  This
+is the same script that is used to create the JFreeChart distribution.
+
+For more information about Ant:
+
+    http://ant.apache.org/
+
+Please note that you will need to obtain the servlet.jar file (see the
+DEPENDENCIES section above) before running the Ant script.
+
+------------------------
+7.  THE DEMO APPLICATION
+------------------------
+A demo application that shows a selection of the charts that can be
+generated is included in the JFreeChart distribution.   To run the
+demo (using JDK 1.3.1 or later), use the following command:
+
+    java -jar jfreechart-1.0.8-demo.jar
+
+The complete source code for the demo application is available for
+download when you purchase the JFreeChart Developer Guide.
+
+The demo application uses iText, a library for creating PDF documents.
+iText is licensed under the terms of the GNU Lesser General Public Licence
+and is available to download from:
+
+    http://www.lowagie.com/iText/
+
+---------------
+8.  LIMITATIONS
+---------------
+JFreeChart has some known limitations that will hopefully be addressed in 
+the future:
+
+    - with the XYPlot class, when the bounds of the range axis are calculated
+      automatically, all of the data is used, not just the subset that is 
+      visible on the chart;
+    - some renderers do not respect the series visibility flags yet;
+    - the chart property editors (accessible by right-clicking on the chart
+      panel) are horribly out of date and probably shouldn't be used;
+    - item labels (if displayed) are not taken into account for the 
+      automatically calculated axis range.  As a workaround, you can increase
+      the axis margins;
+    - tick labels on a DateAxis that uses a SegmentedTimeline can be 
+      problematic;
+    - there is no support for writing charts to JPEG format on JDK 1.3.  JPEG 
+      is not a good format for charts in any case, and it is usually better to 
+      use PNG format.
+    
+If there are other items that you think should be listed here,
+please post a bug report.
+
+-----------------
+9.  GNU CLASSPATH
+-----------------
+GNU Classpath is a project to create a free, clean-room implementation of the
+standard Java(tm) class libraries:
+
+http://www.gnu.org/software/classpath/
+
+JFreeChart should work quite well with free runtimes based on 
+GNU Classpath 0.92 or later.  We are grateful to all the GNU Classpath 
+developers that have made this possible.
+
+---------------
+10.  WHAT's NEW
+---------------
+A list of changes in recent versions:
+
+1.0.8 : (23-Nov-2007)
+        - primarily a bug fix release.  See the NEWS and ChangeLog files for a 
+          more detailed description of the changes in this release.
+
+1.0.7 : (14-Nov-2007)
+        - See the NEWS and ChangeLog files for a more detailed description of 
+          the changes in this release.
+
+1.0.6 : (15-Jun-2007) 
+        - the VectorRenderer and associated dataset classes have been promoted
+          to the standard API from the 'experimental' source tree.  See the
+          NEWS and ChangeLog files for a more detailed description of the 
+          changes in this release.
+          
+1.0.5 : (23-Mar-2007) 
+        - this release contains a new DeviationRenderer, enhancements to a 
+          number of existing classes and numerous bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.4 : (9-Feb-2007)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.3 : (17-Nov-2006) 
+        - this release contains a new DialPlot class (in 'experimental') that
+          will hopefully replace the MeterPlot class, once the API has been
+          polished a little, plus many other new features and bug fixes.  See
+          the NEWS and ChangeLog files for details.
+
+1.0.2 : (25-Aug-2006)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.1 : (27-Jan-2006)
+        - primarily a bug fix release, see the NEWS and ChangeLog files for
+          details.
+
+1.0.0 : (2-Dec-2005)
+        - the first stable release of the JFreeChart class library, all future
+          releases in the 1.0.x series will aim to maintain backward 
+          compatibility with this release;
+        - see the ChangeLog file for a detailed list of changes.
+
+1.0.0-rc3 : (28-Nov-2005)
+        - the third "release candidate" for version 1.0.0, this release
+          fixes some issues with the 1.0.0-rc2 release (mainly concerning
+          packaging of resource bundles for localisation).  
+        - if no significant problems are reported in the next few days,
+          the 1.0.0 "final" release will be posted on 2-Dec-2005.
+
+1.0.0-rc2 : (25-Nov-2005)
+            - the second "release candidate" for version 1.0.0.  If no problems
+              are reported, 1.0.0 "final" will be released on 2-Dec-2005.
+            - see the ChangeLog file for a detailed list of changes in this 
+              release.
+
+1.0.0-rc1 : (2-Jun-2005)
+            - this is a "release candidate" for version 1.0.0.  If no 
+              significant API problems are reported, this release will be 
+              re-released as version 1.0.0. 
+            - see CHANGELOG.txt for further details.
+
+1.0.0-pre2 : (10-Mar-2005)
+         - see CHANGELOG.txt for further details.
+
+1.0.0-pre1 : (29-Nov-2004)
+         - see CHANGELOG.txt for further details.
+ 
+0.9.21 : (9-Sep-2004) 
+         - added new axes: PeriodAxis and ModuloAxis.
+         - split org.jfree.data and org.jfree.chart.renderer into
+           subpackages for 'category' and 'xy' charts.
+         - Sun PNG encoder is now used, if available.
+         - a new demo application makes it easier to preview the 
+           chart types that JFreeChart can create.
+         - added a new series visibility flag to the AbstractRenderer
+           class.
+         - added support for GradientPaint in interval markers.
+         - see CHANGELOG.txt for further details.
+         
+0.9.20 : (7-Jun-2004) 
+         - primarily bug fixes, see CHANGELOG.txt for further details.
+
+0.9.19 : (28-May-2004)
+         - added methods to XYDataset that return double primitives;
+         - removed distinction between "primary" and "secondary" datasets,
+           renderers and axes;
+         - added fixed legend item options to CategoryPlot and XYPlot;
+         - legend changes by Barek Naveh;
+         - removed Log4j dependency;
+         - many, many bug fixes;
+         - see CHANGELOG.txt for further details.
+
+0.9.18 : (15-Apr-2004)
+         - new legend anchor options;
+         - fixed broken JPEG export;
+         - fixed title size problems;
+         - various other bug fixes;
+
+0.9.17 : (26-Mar-2004)
+         - pie chart enhancements for labelling, shading and multiple pie
+           charts (2D or 3D) on a single plot;
+         - new PolarPlot class added;
+         - XYSeries can now be sorted or unsorted;
+         - createBufferedImage() method can now scale charts;
+         - domain and range markers now support intervals;
+         - item labels are now supported by some XYItemRenderers;
+         - tooltip and item label generators now use MessageFormat class;
+         - added new XYBarDataset class;
+         - added transparency support to PNG export;
+         - numerous other small enhancements and bug fixes, see the
+           CHANGELOG.txt file for more details;
+
+0.9.16 : (09-Jan-2004)
+         - this release contains bug fixes and some minor feature
+           enhancements (title and category label wrapping, legend shape
+           scaling, enhanced performance for the DefaultTableXYDataset class);
+         - added Spanish localisation files;
+
+0.9.15 : (28-Nov-2003)
+         - the focus of this release is bug fixes - quite a number of issues
+           have been resolved, please check the bug database for details;
+         - added a new Wafer Map chart type;
+         - added a cyclic axis;
+         - added localisation files for _ru;
+
+0.9.14 : (17-Nov-2003) 
+         - implemented zooming for the FastScatterPlot class;
+         - added item label support for stacked bar charts, and new fall back
+           options for item labels that don't fit within bars;
+         - modified the CategoryAxis class to allow additional options for the
+           alignment and rotation of category labels;
+         - addition of the AxisState class, used in the drawing of axes to
+           eliminate a bug when multiple threads draw the same axis
+           simultaneously;
+         - provided additional attributes in the DateTickUnit class to improve
+           labelling on a segmented DateAxis;
+         - added support for GradientPaint in bar charts;
+         - updated the PNGEncoder;
+         - fixes for tick label positioning on axes;
+         - various Javadoc updates;
+         - numerous bug fixes;
+
+0.9.13 : (26-Sep-2003)
+         - various enhancements to the stacked area XY charts;
+         - added a completion indicator for the Gantt chart;
+         - range and domain markers can now be placed in the foreground or the
+           background;
+         - more fixes for cloning and serialization;
+         - fixed mouse event bug for combined charts;
+         - fixed bugs in the PngEncoder class;
+         - incorporated .properties files that were missing from the 0.9.12
+           distribution;
+
+0.9.12 : (11-Sep-2003)
+         - extended box-and-whisker plots to work with the CategoryPlot	class
+           as well as the XYPlot class (based on work by David Browning);
+         - added a new LayeredBarRenderer (by Arnaud Lelievre);
+         - added support for stacked area charts with the XYPlot class (thanks
+           to Richard Atkinson);
+         - improved HTML image map support (thanks to Richard Atkinson);
+         - added localized resources for the chart property editors (thanks to
+           Arnaud Lelievre).  Current translations include French and Portugese
+           (thanks to Eduardo Ramalho);
+         - added facility for setting all rendering hints;
+         - improved support for cloning and serialization;
+         - fixed a bug in the XYSeries class that prevented the TableXYDataset
+           from functioning correctly;
+         - improved date axis labelling with segmented time lines;
+         - fixed several bugs in the secondary dataset/axis/renderer code;
+         - fixed bugs in the JDBCCategoryDataset class;
+         - numerous other bug fixes;
+
+0.9.11 : (8-Aug-2003)
+         - added support for box-and-whisker plots, thanks to David Browning;
+         - lots of bug fixes;
+
+API changes in this release are minimal and have been implemented using
+deprecation, so code written against 0.9.10 should recompile.
+
+0.9.10 : (25-Jul-2003) 
+         - added support for multiple secondary axes, datasets and
+           renderers;
+         - minor feature enhancements and bug fixes;
+
+0.9.9 : (10-Jul-2003) PLEASE NOTE THAT MAJOR CHANGES HAVE BEEN MADE IN THIS
+RELEASE AND ONE OR TWO FEATURES MAY BE BROKEN.  PLEASE REPORT BUGS SO THEY CAN
+BE FIXED FOR THE NEXT RELEASE.
+
+        - merged the HorizontalCategoryPlot and VerticalCategoryPlot classes,
+          into the CategoryPlot class;
+        - merged the horizontal and vertical axis classes;
+        - merged the horizontal and vertical renderer classes;
+        - CategoryPlot and XYPlot now support both horizontal and vertical
+          orientation via the setOrientation(...) method;
+        - merged horizontal and vertical methods in the ChartFactory class;
+        - created new combined plot classes: CombinedDomainCategoryPlot,
+          CombinedRangeCategoryPlot, CombinedDomainXYPlot and
+          CombinedRangeXYPlot (these can all be drawn with a horizontal or
+          vertical orientation);
+        - Bill Kelemen has enhanced the DateAxis class to handle segmented
+          timelines.  This can be used, for example, to skip weekends for
+          daily stock price charts;
+        - Richard Atkinson has updated the ServletUtilities class;
+        - Bryan Scott has added an XYDatasetTableModel class for presenting
+          datasets in a JTable;
+        - modified XYPlot to allow renderers to use multiple passes through
+          the dataset;
+        - added new XYDifferenceRenderer;
+        - added support for colored bands between gridlines in XYPlot;
+        - added new XYDrawableAnnotation class;
+        - added a new attribute to control the order of dataset rendering in 
+          a CategoryPlot;
+        - extended the value label mechanism for the renderers, to allow
+          better (per series) control over label generation, positioning and
+          visibility;
+        - CategoryItemTooltipGenerator has been renamed
+          CategoryItemLabelGenerator, since it is now being used to generated
+          item labels as well as tooltips;
+        - there is now support for horizontal stacked 3D bar charts;
+        - added support for range markers against secondary axis in a 
+          CategoryPlot;
+        - added labels to domain and range markers;
+        - added a new HistogramDataset class (contributed by Jelai Wang) to
+          make it easier to create histograms with JFreeChart;
+        - moved the DrawingSupplier into the plot class, renderers now
+          reference the supplier from the plot (parent plot for combined and
+          overlaid charts).  This means that renderers now share a single
+          DrawingSupplier by default, which simplifies the creation of
+          combined charts;
+        - changed the ColorBarAxis classes that extended the NumberAxis class,
+          to a single ColorBar class that wraps a ValueAxis (may have broken
+          one or two things in the process);
+        - Barak Naveh has contributed new classes MatrixSeries and
+          MatrixSeriesCollection, along with demos:  BubblyBubblesDemo.java
+          and BubblyBubblesDemo2.java;
+        - the TextTitle class now has a background paint attribute;
+        - the StandardLegend class now generates LegendEntity objects if a
+          ChartRenderingInfo instance is supplied to the draw(...) method;
+        - extended the CategoryTextAnnotation class to take into account a
+          category anchor point.  See the SurveyResultsDemo.java application
+          for an example;
+        - included numerous bug fixes;
+
+0.9.8 : (24-Apr-2003)
+        - changed package naming from com.jrefinery.* to org.jfree.*;
+        - added new TimePeriodValuesCollection class;
+        - added MIME type code to ServletUtilities class;
+        - reversed the order of PieDataset and KeyedValuesDataset in 
+          the class hierarchy;
+        - reversed the order of CategoryDataset and KeyedValues2DDataset
+          in the class hierarchy;
+        - minor bug fixes;
+
+0.9.7 : (11-Apr-2003) 
+        - added a new ValueDataset interface and DefaultValueDataset
+          class, and changed the CompassPlot class to use this instead
+          of MeterDataset;
+        - added DataUtilities class, to support creation of Pareto
+          charts (new demo included);
+        - updated writeImageMap method as suggested by Xavier Poinsard
+          (see Feature Request 688079);
+        - implemented Serializable for most classes (this is likely to
+          require further testing);
+        - incorporated contour plot updates from David M. O'Donnell;
+        - added new CategoryTextAnnotation and XYLineAnnotation
+          classes;
+        - added new HorizontalCategoryAxis3D class contributed by
+          Klaus Rheinwald;
+
+        Bug fixes:
+        - added a workaround for JVM crash (a JDK bug) in pie charts
+          with small sections (see bug report 620031);
+        - fixed minor bug in HorizontalCategoryPlot constructor (see
+          bug report 702248);
+        - added code to ensure HorizontalNumberAxis3D is not drawn if
+          it is not visible (see bug report 702466);
+        - added small fix for suppressed chart change events (see bug
+          report 690865);
+        - added pieIndex parameter to tooltip and URL generators for
+          pie charts;
+        - fixed bug in getLastMillisecond() method for the Second
+          class and the getFirstMillisecond() method for the Year
+          class (picked up in JUnit tests);
+        - in TextTitle, changed width used for relative spacing to fix
+          bug 703050;
+
+0.9.6 : (17-Feb-2003) Bug fixes:
+        - fixed null pointer exception in DefaultCategoryDataset;
+        - fixed update problem for PaintTable, StrokeTable and
+          ShapeTable objects;
+        - added methods to control colors in PiePlot (these were
+          inadvertantly removed in the changes made for 0.9.5);
+        - fixed auto-range update problem for secondary axis;
+        - fixed missing category labels in the overlaid category plot;
+        - fixed constructors for symbolic axes;
+        - corrected error in Javadoc generation (Ant script);
+
+0.9.5 : (6-Feb-2003)  PLEASE NOTE THAT MAJOR CHANGES TO THE
+        JFREECHART API HAVE BEEN MADE IN THIS RELEASE!
+
+        - added support for secondary axes, datasets and renderers;
+        - added new data interfaces (Value, Values, Values2D,
+          KeyedValues and KeyedValues2D) and incorporated these into
+          the existing PieDataset and CategoryDataset interfaces.
+        - modified the CategoryDataset interface to be more
+          symmetrical, data is organised in rows and columns (as
+          before) but can now be accessed by row/column index or
+          row/column key.   
+        - added support for reading PieDatasets and CategoryDatasets
+          from XML files.
+        - created separate packages for the axes
+          (com.jrefinery.chart.axis), plots (com.jrefinery.chart.plot)
+          and renderers (com.jrefinery.chart.renderer).
+        - series attributes (paint, outline paint, stroke and shape)
+          are now controlled by the renderer classes using lookup
+          tables.  Introduced the DrawingSupplier interface (and
+          DefaultDrawingSupplier class) which is used to populate the
+          lookup tables from a common source (necessary to coordinate
+          complex combined charts).
+        - the chart legend can now display shapes corresponding to
+          series. 
+        - moved responsibility for category distribution to the
+          CategoryAxis class, which tidies up the code in the
+          CategoryPlot classes.  
+        - gridlines are now controlled by the CategoryPlot and XYPlot
+          classes, not the axes (included in this change is the
+          addition of gridlines for the CategoryPlot domain values).
+        - changed the list of titles in the JFreeChart class to a
+          title and a list of subtitles.  
+        - added new renderers for XYPlot (XYBubbleRenderer and
+          YIntervalRenderer).
+        - modified Gantt chart to display sub-tasks.
+        - added ContourPlot class (still experimental) by David
+          M. O'Donnell.
+        - introduced new MovingAverage class.
+        - ChartMouseEvent now includes source chart.
+        - numerous bug fixes.
+        - lots of Javadoc updates.
+
+0.9.4 : (18-Oct-2002)  Added a new stacked area chart (contributed by Dan
+        Rivett) and a compass plot (contributed by Bryan Scott).  Updated
+        the ThermometerPlot class. Added a new XYDotRenderer for scatter
+        plots. Modified combined and overlaid plots to use the series colors
+        specified in the sub plot rather than the parent plot (this makes it
+        easier to align the colors in the legend).  Added Regression class
+        for linear and power regressions.  BasicTimeSeries can now
+        automatically drop "old" data.  Some clean-up work in the code for
+        tooltips and the event listener mechanism.  Richard Atkinson has
+        incorporated some useful extensions for servlets/JSP developers.
+
+        Ran Checkstyle and corrected issues reported for most classes.
+        Checkstyle is a free utility that you can download from:
+
+            http://checkstyle.sourceforge.net
+
+        Fixed bugs and updated documentation.
+
+        API changes include:
+        - added tickMarkPaint to Axis constructor (also affects
+          subclasses);
+        - added getLegendItems() to Plot, and deprecated
+          getLegendItemLabels();
+        - added getLegendItem(int) to XYItemRenderer and
+          CategoryItemRenderer.
+        - most 'protected' member variables have been changed to
+          'private'.
+
+0.9.3 : (4-Sep-2002) Added multiple pie charts based on
+        CategoryDataset.  Updated logarithmic axes.  Improved URL
+        support for image map generation. Moved the com.jrefinery.data
+        package from JCommon to JFreeChart. Added simple framework for
+        chart annotations. Improved control over renderers. Duplicate
+        x-values now allowed in XYSeries. Optional category label
+        skipping in category axes. Added CategoriesPaint attribute to
+        AbstractCategoryItemRenderer.  Added new attributes to
+        MeterPlot class. Updated 3D pie chart to observe start angle
+        and direction, and also foreground alpha < 1.0. Improved
+        Javadoc comments. New demo applications, including:
+        AnnotationDemo1, EventFrequencyDemo, JDBCCategoryChartDemo,
+        JDBCPieChartDemo, JDBCXYChartDemo and MinMaxCategoryPlotDemo.
+        Bug fixes:
+        - negative percentages on PiePlot.
+        - added listener notification to setXXXAxis(...) methods.
+        - fixed DomainInfo method name clash.
+        - added DomainIsPointsInTime flag to TimeSeriesCollection to
+          give better control over auto range on axis for time series
+          charts.
+        - axis margins for date axes are no longer hard-coded.
+        - fix for ordering of categories in JdbcCategoryDataset.
+        - added check for null axis in mouse click handler.
+
+        The CVS repository at SourceForge has also been restructured
+        to match the distribution directory layout.
+
+0.9.2 : (28-Jun-2002) PiePlot now has startAngle and direction
+        attributes.  Added support for image map generation.  Added a
+        new Pie3DPlot class. Added label drawing code to bar
+        renderers. Added optional range markers to horizontal number
+        axis.  Added bar clipping to avoid PRExceptions in bar
+        charts.  JFreeChartDemo has been modified and now includes
+        examples of the dial and thermometer plots.
+        Bug fixes:
+        - auto range for VerticalNumberAxis when zero is forced to be
+          included in the range.
+        - fixed null pointer exception in StackedVerticalBarRenderer3D;
+        - Added get/set methods for min/max chart drawing dimensions
+          in ChartPanel;
+        - HorizontalIntervalBarRenderer now handles single category;
+        - verticalTickLabels now possible in HorizontalNumberAxis3D;
+        - removed unnecessary imports;
+
+0.9.1 : (14-Jun-2002) Bug fixes and Javadoc updates.
+        - fixed auto range calculation for category plots;
+        - fixed event notification for XYPlot;
+        - fixed auto axis range for Gantt charts;
+        - check for null popup menu in ChartPanel.mouseDragged;
+        - new checks for null info in renderers;
+        - range markers now drawn only if in visible axis range;
+
+0.9.0 : (7-Jun-2002) New plots including an area chart, a horizontal
+        3D bar chart, a Gantt chart and a thermometer chart.
+        Combination plots have been reworked to provide a
+        simpler framework, and extends to allow category plots to be
+        combined. There is now a facility to add a ChartMouseListener
+        to the ChartPanel (formerly JFreeChartPanel).  An interactive
+        zooming feature (experimental at this point) is now available
+        for XYPlots.  A new Polish translation has been added. Several
+        fixes have been applied to the default tool tip generators.  A
+        workaround has been added to fix the alignment between time
+        series charts and the date axis.  There are some improvements
+        to the VerticalLogarithmicAxis class, and now a corresponding
+        HorizontalLogarithmicAxis class.  Additional demonstration
+        applications have been added.  Fixed the popup menu bug.
+
+0.8.1 : (5-Apr-2002) Localised resource bundles for French, German and
+        Spanish languages (thanks to Anthony Boulestreau, Thomas Meier
+        and Hans-Jurgen Greiner for the translations).  An area XY
+        plot and meter chart contributed by Hari.  Symbol charts
+        contributed by Anthony Boulestreau. An improved
+        CandleStickRenderer class from Sylvain Vieujot.  Updated
+        servlet code from Bryan Scott.  XYItemRenderers now have a
+        change listener mechanism and therefore do not have to be
+        immutable.  Additional demonstration applications for
+        individual chart types. Minor bug fixes.
+
+0.8.0 : (22-Mar-2002) All the category plots are now controlled
+        through the one class (CategoryPlot) with plug-in renderers.
+        Added a ResourceBundle for user interface items that require
+        localisation. Added a logarithmic axis class contributed by
+        Mike Duffy and some new JDBC and servlet code contributed by
+        Bryan Scott.  Updated the JCommon class library to improve
+        handling of time periods in different time zones.
+
+0.7.4 : (6-Mar-2002) Bug fixes in the JCommon Class Library. Various
+        Javadoc comment updates.  Some minor changes to the
+        code. Added new domain name (http://www.object-refinery.com)
+        in the source headers.
+
+0.7.3 : (14-Feb-2002) Bug fixes.
+
+0.7.2 : (8-Feb-2002) Integrated the WindPlot code from Achilleus
+        Mantzios. Added an optional background image for the
+        JFreeChart class, and another optional background image for
+        the Plot class.  Added alpha-transparency for the plot
+        foreground and background.  Added new pie chart label types
+        that show values.  Fixed a bug with the legend that results in
+        a loop at small chart sizes. Added some tooltip methods that
+        were missing from the previous version. Changed the Insets
+        class on chart titles to a new Spacer class that will allow
+        for relative or absolute insets (the plan is to eventually
+        replace all Insets in the JFreeChart classes).  Fixed a bug in
+        the setAutoRangeIncludesZero method of the NumberAxis class.
+        Added the instructions that were missing from the copies of
+        the GNU Lesser General Public Licence included with JFreeChart.
+
+0.7.1 : (25-Jan-2002) Added tooltips, crosshairs and zooming
+        functions, thanks to Jonathan Nash and Hans-Jurgen Greiner
+        for contributing the code that these features are based on.
+        Moved the combination charts into the package
+        com.jrefinery.chart.combination, made a number of other small
+        API changes and fixed some bugs.  Removed the Javadoc HTML
+        from the download to save space (you can regenerate it from
+        the source code if you need it).
+
+0.7.0 : (11-Dec-2001) New combination plots developed by Bill
+        Kelemen.  Added Wolfgang Irler's servlet demo to the standard
+        download.  The About window in the demo application now
+        includes a list of developers that have contributed to the
+        project.
+
+0.6.0 : (27-Nov-2001) New plots including scatter plot, stacked bar
+        charts and 3D bar charts.  Improved pie chart.  Data
+        interfaces and classes moved to the JCommon class library.
+        New properties to control spacing on bar charts.  New
+        auto-tick mechanism.  JFreeChartPanel now incorporates
+        buffering, and popup menu.  Javadocs revised.  Fixed numerous
+        bugs from version 0.5.6.  Demo application updated.
+
+----------------
+10.  CONTRIBUTORS
+----------------
+JFreeChart wouldn't be half the library that it is today without the
+contributions (large and small) that have been made by the developers listed 
+below:
+
+    - Eric Alexander
+    - Richard Atkinson
+    - David Basten
+    - David Berry
+    - Chris Boek
+    - Zoheb Borbora
+    - Anthony Boulestreau
+    - Jeremy Bowman
+    - Nicolas Brodu
+    - Jody Brownell
+    - David Browning
+    - Soren Caspersen
+    - Chuanhao Chiu
+    - Brian Cole
+    - Pascal Collet
+    - Martin Cordova
+    - Paolo Cova
+    - Mike Duffy
+    - Don Elliott
+    - Rune Fauske
+    - Jonathan Gabbai
+    - Serge V. Grachov
+    - Daniel Gredler
+    - Joao Guilherme Del Valle
+    - Hans-Jurgen Greiner
+    - Nick Guenther
+    - Aiman Han
+    - Cameron Hayne
+    - Jon Iles
+    - Wolfgang Irler
+    - Sergei Ivanov
+    - Adriaan Joubert
+    - Darren Jung
+    - Xun Kang
+    - Bill Kelemen
+    - Norbert Kiesel
+    - Gideon Krause
+    - Pierre-Marie Le Biot
+    - Arnaud Lelievre
+    - Wolfgang Lenhard
+    - David Li
+    - Yan Liu
+    - Tin Luu
+    - Craig MacFarlane
+    - Achilleus Mantzios
+    - Thomas Meier
+    - Jim Moore
+    - Jonathan Nash
+    - Barak Naveh
+    - David M. O'Donnell
+    - Krzysztof Paz
+    - Tomer Peretz
+    - Xavier Poinsard
+    - Andrzej Porebski
+    - Viktor Rajewski
+    - Eduardo Ramalho
+    - Michael Rauch
+    - Cameron Riley
+    - Klaus Rheinwald
+    - Dan Rivett
+    - Scott Sams
+    - Michel Santos
+    - Thierry Saura
+    - Andreas Schneider
+    - Jean-Luc SCHWAB
+    - Bryan Scott
+    - Tobias Selb
+    - Mofeed Shahin
+    - Pady Srinivasan
+    - Greg Steckman
+    - Roger Studner
+    - Gerald Struck
+    - Irv Thomae
+    - Eric Thomas
+    - Rich Unger
+    - Daniel van Enckevort
+    - Laurence Vanhelsuwe
+    - Sylvain Vieujot
+    - Jelai Wang
+    - Mark Watson
+    - Alex Weber
+    - Richard West
+    - Matthew Wright
+    - Benoit Xhenseval
+    - Christian W. Zuckschwerdt
+    - Hari 
+    - Sam (oldman)
+
+It is possible that I have missed someone on this list, if that
+applies to you, please e-mail me. 
+
+Dave Gilbert (david.gilbert@object-refinery.com)
+JFreeChart Project Leader
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar
new file mode 100644
index 0000000..4228c39
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.md5 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.md5
new file mode 100644
index 0000000..3eb1d04
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.md5
@@ -0,0 +1 @@
+1c3da0cbe55c83bce34691143de3c2de  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.sha1 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.sha1
new file mode 100644
index 0000000..d1b5e60
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar.sha1
@@ -0,0 +1 @@
+7d211d50c86dfaf3fed3176caa231e8a455fadfe  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9-sources.jar
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar
new file mode 100644
index 0000000..e4e7ec0
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.md5 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.md5
new file mode 100644
index 0000000..184e08d
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.md5
@@ -0,0 +1 @@
+7431a54a8a9a064a6e2ee68a990df87d  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.sha1 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.sha1
new file mode 100644
index 0000000..096c3cc
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar.sha1
@@ -0,0 +1 @@
+b691589620b9da12ebd4ec77545fdcdb8e57c4a4  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom
new file mode 100644
index 0000000..eed1689
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom
@@ -0,0 +1,73 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>jfree</groupId>
+  <artifactId>jfreechart-swt</artifactId>
+  <name>jfreechart-swt</name>
+  <version>1.0.9</version>
+  <description>
+    JFreeChart is a class library, written in Java, for generating
+    charts. Utilising the Java2D APIs, it currently supports bar
+    charts, pie charts, line charts, XY-plots and time series plots.
+  </description>
+  <url>http://www.jfree.org/jfreechart/</url>
+  <inceptionYear>2001</inceptionYear>
+  <description>
+    JFreeChart is a class library, written in Java, for generating charts. Utilising the Java2D APIs, it currently
+    supports bar charts, pie charts, line charts, XY-plots and time series plots.
+  </description>
+  <scm>
+    <connection>scm:cvs:pserver:anonymous@jfreechart.cvs.sourceforge.net:/cvsroot/jfreechart:jfreechart</connection>
+    <url>http://jfreechart.cvs.sourceforge.net/jfreechart/jfreechart/</url>
+  </scm>
+  <licenses>
+    <license>
+      <name>GNU Lesser General Public Licence</name>
+      <url>http://www.gnu.org/licenses/lgpl.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <scm>
+    <connection>
+      scm:cvs:pserver:anonymous@jfreechart.cvs.sourceforge.net:/cvsroot/jfreechart:jfreechart
+    </connection>
+    <url>
+      http://jfreechart.cvs.sourceforge.net/jfreechart/jfreechart/
+    </url>
+  </scm>
+  <organization>
+    <name>JFree.org</name>
+    <url>http://www.jfree.org/</url>
+  </organization>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.4</source>
+          <target>1.4</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>jfree</groupId>
+      <artifactId>jfreechart</artifactId>
+      <version>1.0.9</version>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.swt</groupId>
+      <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
+      <version>3.2.1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+            <version>3.8.2</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.md5 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.md5
new file mode 100644
index 0000000..7b77d29
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.md5
@@ -0,0 +1 @@
+9494f1e2b9c90a5b5651dedfbb97f291  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom
diff --git a/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.sha1 b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.sha1
new file mode 100644
index 0000000..9797a52
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom.sha1
@@ -0,0 +1 @@
+802aeb5290f5c5c1031f98690a7cde4866314ebc  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.pom
diff --git a/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml
new file mode 100644
index 0000000..c7037f9
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>jfree</groupId>
+  <artifactId>jfreechart-swt</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0.3</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.md5 b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.md5
new file mode 100644
index 0000000..923f563
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.md5
@@ -0,0 +1 @@
+6bfabd04f811c60be395d002bba6117f  ./jfree/jfreechart-swt/maven-metadata.xml
diff --git a/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.sha1 b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.sha1
new file mode 100644
index 0000000..65bdeef
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart-swt/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+02ff995947f6a4bde365af335c5418150a2a5596  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart-swt/maven-metadata.xml
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/MODULE_LICENSE_LGPL b/common/m2/repository/jfree/jfreechart/1.0.9/MODULE_LICENSE_LGPL
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/MODULE_LICENSE_LGPL
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/NOTICE b/common/m2/repository/jfree/jfreechart/1.0.9/NOTICE
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/NOTICE
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/PREBUILT b/common/m2/repository/jfree/jfreechart/1.0.9/PREBUILT
new file mode 100644
index 0000000..aaab1d6
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/PREBUILT
@@ -0,0 +1,6 @@
+The objects in this prebuilt directory can be rebuilt
+using the source archive
+
+jfreechart-1.0.9.zip
+
+hosted at <http://android.kernel.org/pub/>.
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/README.txt b/common/m2/repository/jfree/jfreechart/1.0.9/README.txt
new file mode 100644
index 0000000..b8313bb
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/README.txt
@@ -0,0 +1,794 @@
+*******************************
+*  JFREECHART: Version 1.0.8  *
+*******************************
+
+23 November 2007
+
+(C)opyright 2000-2007, by Object Refinery Limited and Contributors.
+
+-----------------
+1.  INTRODUCTION
+-----------------
+JFreeChart is a free chart library for the Java(tm) platform.  It runs 
+on the Java 2 Platform (JDK 1.3 or later) and uses the Java 2D API for 
+drawing.
+
+JFreeChart is licensed under the terms of the GNU Lesser General
+Public Licence (LGPL).  A copy of the licence is included in the
+distribution.
+
+Please note that JFreeChart is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE.  Please refer to the licence for details.
+
+-------------------
+2.  LATEST VERSION
+-------------------
+The latest version of this class library can be obtained from:
+
+    http://www.jfree.org/jfreechart/
+
+If you have an comments, suggestions or bugs to report, please post a
+message in the JFreeChart forum.
+
+-----------------
+3.  DOCUMENTATION
+-----------------
+You can download installation instructions
+(jfreechart-1.0.8-install.pdf) from the JFreeChart home
+page or the project page on SourceForge.
+
+Further documentation for JFreeChart (the JFreeChart Developer Guide) is
+available to purchase from by Object Refinery Limited, a company owned and
+operated by David Gilbert (the original author of JFreeChart).  For more
+information, please see:
+
+    http://www.object-refinery.com/jfreechart/guide.html
+
+Sales of the JFreeChart Developer Guide are an important source of funding for
+the project.  Please help us to continue developing free software.
+
+API documentation files in HTML format are available on-line.  If you wish 
+to keep a local copy of the API files, you can regenerate them directly
+from the source code.  You can do this using the 'javadoc' or 'gjdoc' 
+utilities directly, or with the Ant script (build.xml) included in the
+distribution.
+
+-----------------
+4.  DEPENDENCIES
+-----------------
+JFreeChart has the following dependencies:
+
+(a)  JDK 1.3.1 or higher - JFreeChart requires the Java2D and Collections
+APIs, so it definitely won't work with JDK 1.1 (with a small amount of effort
+you can get it to compile and run with JDK 1.2).  If you are using JFreeChart 
+to create applets, this means that you cannot rely on the JVM integrated with
+Microsoft's Internet Explorer - your users will need to have the Java 2
+plug-in installed.  Most other browsers (e.g. Firefox, Mozilla, Netscape, 
+Konqueror) support JRE 1.4, 1.5 or 1.6.
+
+(b)  JCommon - version 1.0.0 or later.  The runtime jar file (version 1.0.12) 
+is included in the JFreeChart distribution.  You can obtain the complete
+source code for JCommon from:
+
+    http://www.jfree.org/jcommon/
+
+JCommon is licensed under the terms of the GNU Lesser General Public Licence.
+
+(c)  GNU JAXP (JDK 1.3 only) - a free implementation of the standard XML 
+processing APIs for Java.
+
+    http://www.gnu.org/software/classpathx/jaxp/
+
+Classes in the org.jfree.data.xml package require this library, or
+another JAXP v1.1 compliant parser.  The gnujaxp.jar file (from the
+gnujaxp-1.0beta1.zip distribution) is included with JFreeChart.  GNU
+JAXP is licensed under the terms of the GNU General Public License
+with an additional library exception.
+
+THIS LIBRARY IS ONLY REQUIRED BY JFREECHART IF YOU ARE USING JDK 1.3.
+
+(d)  servlet.jar - classes in the org.jfree.chart.servlet
+package require this file.  The JFreeChart distribution includes the 
+servlet.jar file distributed with Tomcat 4.1.31.  Applicable license 
+terms are published at:  
+
+    http://java.sun.com/products/servlet/LICENSE   
+
+(e)  JUnit - a unit testing framework (the junit.jar runtime file is
+included in the distribution).  JUnit is licensed under the terms
+of the IBM Common Public License.  You can find out more about JUnit
+and/or download the latest version from:
+
+    http://www.junit.org
+
+The JUnit tests included with JFreeChart have been created using JUnit
+4.3.1.
+
+-----------
+5.  SUPPORT
+-----------
+Support questions can be posted in the free support forum at
+
+    http://www.jfree.org/phpBB2/viewforum.php?f=3
+    
+We read all questions posted in the forum, and respond to as many as we can
+in the time available.  Unfortunately, there are too many questions to answer
+them all.
+    
+If you need commercial support for JFreeChart, this is offered by
+Object Refinery Limited:
+
+    http://www.object-refinery.com/jfreechart/support.html
+
+--------------------
+6.  ANT BUILD SCRIPT
+--------------------
+An Ant build script (build.xml) is included in the distribution.  This
+is the same script that is used to create the JFreeChart distribution.
+
+For more information about Ant:
+
+    http://ant.apache.org/
+
+Please note that you will need to obtain the servlet.jar file (see the
+DEPENDENCIES section above) before running the Ant script.
+
+------------------------
+7.  THE DEMO APPLICATION
+------------------------
+A demo application that shows a selection of the charts that can be
+generated is included in the JFreeChart distribution.   To run the
+demo (using JDK 1.3.1 or later), use the following command:
+
+    java -jar jfreechart-1.0.8-demo.jar
+
+The complete source code for the demo application is available for
+download when you purchase the JFreeChart Developer Guide.
+
+The demo application uses iText, a library for creating PDF documents.
+iText is licensed under the terms of the GNU Lesser General Public Licence
+and is available to download from:
+
+    http://www.lowagie.com/iText/
+
+---------------
+8.  LIMITATIONS
+---------------
+JFreeChart has some known limitations that will hopefully be addressed in 
+the future:
+
+    - with the XYPlot class, when the bounds of the range axis are calculated
+      automatically, all of the data is used, not just the subset that is 
+      visible on the chart;
+    - some renderers do not respect the series visibility flags yet;
+    - the chart property editors (accessible by right-clicking on the chart
+      panel) are horribly out of date and probably shouldn't be used;
+    - item labels (if displayed) are not taken into account for the 
+      automatically calculated axis range.  As a workaround, you can increase
+      the axis margins;
+    - tick labels on a DateAxis that uses a SegmentedTimeline can be 
+      problematic;
+    - there is no support for writing charts to JPEG format on JDK 1.3.  JPEG 
+      is not a good format for charts in any case, and it is usually better to 
+      use PNG format.
+    
+If there are other items that you think should be listed here,
+please post a bug report.
+
+-----------------
+9.  GNU CLASSPATH
+-----------------
+GNU Classpath is a project to create a free, clean-room implementation of the
+standard Java(tm) class libraries:
+
+http://www.gnu.org/software/classpath/
+
+JFreeChart should work quite well with free runtimes based on 
+GNU Classpath 0.92 or later.  We are grateful to all the GNU Classpath 
+developers that have made this possible.
+
+---------------
+10.  WHAT's NEW
+---------------
+A list of changes in recent versions:
+
+1.0.8 : (23-Nov-2007)
+        - primarily a bug fix release.  See the NEWS and ChangeLog files for a 
+          more detailed description of the changes in this release.
+
+1.0.7 : (14-Nov-2007)
+        - See the NEWS and ChangeLog files for a more detailed description of 
+          the changes in this release.
+
+1.0.6 : (15-Jun-2007) 
+        - the VectorRenderer and associated dataset classes have been promoted
+          to the standard API from the 'experimental' source tree.  See the
+          NEWS and ChangeLog files for a more detailed description of the 
+          changes in this release.
+          
+1.0.5 : (23-Mar-2007) 
+        - this release contains a new DeviationRenderer, enhancements to a 
+          number of existing classes and numerous bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.4 : (9-Feb-2007)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.3 : (17-Nov-2006) 
+        - this release contains a new DialPlot class (in 'experimental') that
+          will hopefully replace the MeterPlot class, once the API has been
+          polished a little, plus many other new features and bug fixes.  See
+          the NEWS and ChangeLog files for details.
+
+1.0.2 : (25-Aug-2006)
+        - this release contains both new features and bug fixes, see the NEWS 
+          and ChangeLog files for details.
+
+1.0.1 : (27-Jan-2006)
+        - primarily a bug fix release, see the NEWS and ChangeLog files for
+          details.
+
+1.0.0 : (2-Dec-2005)
+        - the first stable release of the JFreeChart class library, all future
+          releases in the 1.0.x series will aim to maintain backward 
+          compatibility with this release;
+        - see the ChangeLog file for a detailed list of changes.
+
+1.0.0-rc3 : (28-Nov-2005)
+        - the third "release candidate" for version 1.0.0, this release
+          fixes some issues with the 1.0.0-rc2 release (mainly concerning
+          packaging of resource bundles for localisation).  
+        - if no significant problems are reported in the next few days,
+          the 1.0.0 "final" release will be posted on 2-Dec-2005.
+
+1.0.0-rc2 : (25-Nov-2005)
+            - the second "release candidate" for version 1.0.0.  If no problems
+              are reported, 1.0.0 "final" will be released on 2-Dec-2005.
+            - see the ChangeLog file for a detailed list of changes in this 
+              release.
+
+1.0.0-rc1 : (2-Jun-2005)
+            - this is a "release candidate" for version 1.0.0.  If no 
+              significant API problems are reported, this release will be 
+              re-released as version 1.0.0. 
+            - see CHANGELOG.txt for further details.
+
+1.0.0-pre2 : (10-Mar-2005)
+         - see CHANGELOG.txt for further details.
+
+1.0.0-pre1 : (29-Nov-2004)
+         - see CHANGELOG.txt for further details.
+ 
+0.9.21 : (9-Sep-2004) 
+         - added new axes: PeriodAxis and ModuloAxis.
+         - split org.jfree.data and org.jfree.chart.renderer into
+           subpackages for 'category' and 'xy' charts.
+         - Sun PNG encoder is now used, if available.
+         - a new demo application makes it easier to preview the 
+           chart types that JFreeChart can create.
+         - added a new series visibility flag to the AbstractRenderer
+           class.
+         - added support for GradientPaint in interval markers.
+         - see CHANGELOG.txt for further details.
+         
+0.9.20 : (7-Jun-2004) 
+         - primarily bug fixes, see CHANGELOG.txt for further details.
+
+0.9.19 : (28-May-2004)
+         - added methods to XYDataset that return double primitives;
+         - removed distinction between "primary" and "secondary" datasets,
+           renderers and axes;
+         - added fixed legend item options to CategoryPlot and XYPlot;
+         - legend changes by Barek Naveh;
+         - removed Log4j dependency;
+         - many, many bug fixes;
+         - see CHANGELOG.txt for further details.
+
+0.9.18 : (15-Apr-2004)
+         - new legend anchor options;
+         - fixed broken JPEG export;
+         - fixed title size problems;
+         - various other bug fixes;
+
+0.9.17 : (26-Mar-2004)
+         - pie chart enhancements for labelling, shading and multiple pie
+           charts (2D or 3D) on a single plot;
+         - new PolarPlot class added;
+         - XYSeries can now be sorted or unsorted;
+         - createBufferedImage() method can now scale charts;
+         - domain and range markers now support intervals;
+         - item labels are now supported by some XYItemRenderers;
+         - tooltip and item label generators now use MessageFormat class;
+         - added new XYBarDataset class;
+         - added transparency support to PNG export;
+         - numerous other small enhancements and bug fixes, see the
+           CHANGELOG.txt file for more details;
+
+0.9.16 : (09-Jan-2004)
+         - this release contains bug fixes and some minor feature
+           enhancements (title and category label wrapping, legend shape
+           scaling, enhanced performance for the DefaultTableXYDataset class);
+         - added Spanish localisation files;
+
+0.9.15 : (28-Nov-2003)
+         - the focus of this release is bug fixes - quite a number of issues
+           have been resolved, please check the bug database for details;
+         - added a new Wafer Map chart type;
+         - added a cyclic axis;
+         - added localisation files for _ru;
+
+0.9.14 : (17-Nov-2003) 
+         - implemented zooming for the FastScatterPlot class;
+         - added item label support for stacked bar charts, and new fall back
+           options for item labels that don't fit within bars;
+         - modified the CategoryAxis class to allow additional options for the
+           alignment and rotation of category labels;
+         - addition of the AxisState class, used in the drawing of axes to
+           eliminate a bug when multiple threads draw the same axis
+           simultaneously;
+         - provided additional attributes in the DateTickUnit class to improve
+           labelling on a segmented DateAxis;
+         - added support for GradientPaint in bar charts;
+         - updated the PNGEncoder;
+         - fixes for tick label positioning on axes;
+         - various Javadoc updates;
+         - numerous bug fixes;
+
+0.9.13 : (26-Sep-2003)
+         - various enhancements to the stacked area XY charts;
+         - added a completion indicator for the Gantt chart;
+         - range and domain markers can now be placed in the foreground or the
+           background;
+         - more fixes for cloning and serialization;
+         - fixed mouse event bug for combined charts;
+         - fixed bugs in the PngEncoder class;
+         - incorporated .properties files that were missing from the 0.9.12
+           distribution;
+
+0.9.12 : (11-Sep-2003)
+         - extended box-and-whisker plots to work with the CategoryPlot	class
+           as well as the XYPlot class (based on work by David Browning);
+         - added a new LayeredBarRenderer (by Arnaud Lelievre);
+         - added support for stacked area charts with the XYPlot class (thanks
+           to Richard Atkinson);
+         - improved HTML image map support (thanks to Richard Atkinson);
+         - added localized resources for the chart property editors (thanks to
+           Arnaud Lelievre).  Current translations include French and Portugese
+           (thanks to Eduardo Ramalho);
+         - added facility for setting all rendering hints;
+         - improved support for cloning and serialization;
+         - fixed a bug in the XYSeries class that prevented the TableXYDataset
+           from functioning correctly;
+         - improved date axis labelling with segmented time lines;
+         - fixed several bugs in the secondary dataset/axis/renderer code;
+         - fixed bugs in the JDBCCategoryDataset class;
+         - numerous other bug fixes;
+
+0.9.11 : (8-Aug-2003)
+         - added support for box-and-whisker plots, thanks to David Browning;
+         - lots of bug fixes;
+
+API changes in this release are minimal and have been implemented using
+deprecation, so code written against 0.9.10 should recompile.
+
+0.9.10 : (25-Jul-2003) 
+         - added support for multiple secondary axes, datasets and
+           renderers;
+         - minor feature enhancements and bug fixes;
+
+0.9.9 : (10-Jul-2003) PLEASE NOTE THAT MAJOR CHANGES HAVE BEEN MADE IN THIS
+RELEASE AND ONE OR TWO FEATURES MAY BE BROKEN.  PLEASE REPORT BUGS SO THEY CAN
+BE FIXED FOR THE NEXT RELEASE.
+
+        - merged the HorizontalCategoryPlot and VerticalCategoryPlot classes,
+          into the CategoryPlot class;
+        - merged the horizontal and vertical axis classes;
+        - merged the horizontal and vertical renderer classes;
+        - CategoryPlot and XYPlot now support both horizontal and vertical
+          orientation via the setOrientation(...) method;
+        - merged horizontal and vertical methods in the ChartFactory class;
+        - created new combined plot classes: CombinedDomainCategoryPlot,
+          CombinedRangeCategoryPlot, CombinedDomainXYPlot and
+          CombinedRangeXYPlot (these can all be drawn with a horizontal or
+          vertical orientation);
+        - Bill Kelemen has enhanced the DateAxis class to handle segmented
+          timelines.  This can be used, for example, to skip weekends for
+          daily stock price charts;
+        - Richard Atkinson has updated the ServletUtilities class;
+        - Bryan Scott has added an XYDatasetTableModel class for presenting
+          datasets in a JTable;
+        - modified XYPlot to allow renderers to use multiple passes through
+          the dataset;
+        - added new XYDifferenceRenderer;
+        - added support for colored bands between gridlines in XYPlot;
+        - added new XYDrawableAnnotation class;
+        - added a new attribute to control the order of dataset rendering in 
+          a CategoryPlot;
+        - extended the value label mechanism for the renderers, to allow
+          better (per series) control over label generation, positioning and
+          visibility;
+        - CategoryItemTooltipGenerator has been renamed
+          CategoryItemLabelGenerator, since it is now being used to generated
+          item labels as well as tooltips;
+        - there is now support for horizontal stacked 3D bar charts;
+        - added support for range markers against secondary axis in a 
+          CategoryPlot;
+        - added labels to domain and range markers;
+        - added a new HistogramDataset class (contributed by Jelai Wang) to
+          make it easier to create histograms with JFreeChart;
+        - moved the DrawingSupplier into the plot class, renderers now
+          reference the supplier from the plot (parent plot for combined and
+          overlaid charts).  This means that renderers now share a single
+          DrawingSupplier by default, which simplifies the creation of
+          combined charts;
+        - changed the ColorBarAxis classes that extended the NumberAxis class,
+          to a single ColorBar class that wraps a ValueAxis (may have broken
+          one or two things in the process);
+        - Barak Naveh has contributed new classes MatrixSeries and
+          MatrixSeriesCollection, along with demos:  BubblyBubblesDemo.java
+          and BubblyBubblesDemo2.java;
+        - the TextTitle class now has a background paint attribute;
+        - the StandardLegend class now generates LegendEntity objects if a
+          ChartRenderingInfo instance is supplied to the draw(...) method;
+        - extended the CategoryTextAnnotation class to take into account a
+          category anchor point.  See the SurveyResultsDemo.java application
+          for an example;
+        - included numerous bug fixes;
+
+0.9.8 : (24-Apr-2003)
+        - changed package naming from com.jrefinery.* to org.jfree.*;
+        - added new TimePeriodValuesCollection class;
+        - added MIME type code to ServletUtilities class;
+        - reversed the order of PieDataset and KeyedValuesDataset in 
+          the class hierarchy;
+        - reversed the order of CategoryDataset and KeyedValues2DDataset
+          in the class hierarchy;
+        - minor bug fixes;
+
+0.9.7 : (11-Apr-2003) 
+        - added a new ValueDataset interface and DefaultValueDataset
+          class, and changed the CompassPlot class to use this instead
+          of MeterDataset;
+        - added DataUtilities class, to support creation of Pareto
+          charts (new demo included);
+        - updated writeImageMap method as suggested by Xavier Poinsard
+          (see Feature Request 688079);
+        - implemented Serializable for most classes (this is likely to
+          require further testing);
+        - incorporated contour plot updates from David M. O'Donnell;
+        - added new CategoryTextAnnotation and XYLineAnnotation
+          classes;
+        - added new HorizontalCategoryAxis3D class contributed by
+          Klaus Rheinwald;
+
+        Bug fixes:
+        - added a workaround for JVM crash (a JDK bug) in pie charts
+          with small sections (see bug report 620031);
+        - fixed minor bug in HorizontalCategoryPlot constructor (see
+          bug report 702248);
+        - added code to ensure HorizontalNumberAxis3D is not drawn if
+          it is not visible (see bug report 702466);
+        - added small fix for suppressed chart change events (see bug
+          report 690865);
+        - added pieIndex parameter to tooltip and URL generators for
+          pie charts;
+        - fixed bug in getLastMillisecond() method for the Second
+          class and the getFirstMillisecond() method for the Year
+          class (picked up in JUnit tests);
+        - in TextTitle, changed width used for relative spacing to fix
+          bug 703050;
+
+0.9.6 : (17-Feb-2003) Bug fixes:
+        - fixed null pointer exception in DefaultCategoryDataset;
+        - fixed update problem for PaintTable, StrokeTable and
+          ShapeTable objects;
+        - added methods to control colors in PiePlot (these were
+          inadvertantly removed in the changes made for 0.9.5);
+        - fixed auto-range update problem for secondary axis;
+        - fixed missing category labels in the overlaid category plot;
+        - fixed constructors for symbolic axes;
+        - corrected error in Javadoc generation (Ant script);
+
+0.9.5 : (6-Feb-2003)  PLEASE NOTE THAT MAJOR CHANGES TO THE
+        JFREECHART API HAVE BEEN MADE IN THIS RELEASE!
+
+        - added support for secondary axes, datasets and renderers;
+        - added new data interfaces (Value, Values, Values2D,
+          KeyedValues and KeyedValues2D) and incorporated these into
+          the existing PieDataset and CategoryDataset interfaces.
+        - modified the CategoryDataset interface to be more
+          symmetrical, data is organised in rows and columns (as
+          before) but can now be accessed by row/column index or
+          row/column key.   
+        - added support for reading PieDatasets and CategoryDatasets
+          from XML files.
+        - created separate packages for the axes
+          (com.jrefinery.chart.axis), plots (com.jrefinery.chart.plot)
+          and renderers (com.jrefinery.chart.renderer).
+        - series attributes (paint, outline paint, stroke and shape)
+          are now controlled by the renderer classes using lookup
+          tables.  Introduced the DrawingSupplier interface (and
+          DefaultDrawingSupplier class) which is used to populate the
+          lookup tables from a common source (necessary to coordinate
+          complex combined charts).
+        - the chart legend can now display shapes corresponding to
+          series. 
+        - moved responsibility for category distribution to the
+          CategoryAxis class, which tidies up the code in the
+          CategoryPlot classes.  
+        - gridlines are now controlled by the CategoryPlot and XYPlot
+          classes, not the axes (included in this change is the
+          addition of gridlines for the CategoryPlot domain values).
+        - changed the list of titles in the JFreeChart class to a
+          title and a list of subtitles.  
+        - added new renderers for XYPlot (XYBubbleRenderer and
+          YIntervalRenderer).
+        - modified Gantt chart to display sub-tasks.
+        - added ContourPlot class (still experimental) by David
+          M. O'Donnell.
+        - introduced new MovingAverage class.
+        - ChartMouseEvent now includes source chart.
+        - numerous bug fixes.
+        - lots of Javadoc updates.
+
+0.9.4 : (18-Oct-2002)  Added a new stacked area chart (contributed by Dan
+        Rivett) and a compass plot (contributed by Bryan Scott).  Updated
+        the ThermometerPlot class. Added a new XYDotRenderer for scatter
+        plots. Modified combined and overlaid plots to use the series colors
+        specified in the sub plot rather than the parent plot (this makes it
+        easier to align the colors in the legend).  Added Regression class
+        for linear and power regressions.  BasicTimeSeries can now
+        automatically drop "old" data.  Some clean-up work in the code for
+        tooltips and the event listener mechanism.  Richard Atkinson has
+        incorporated some useful extensions for servlets/JSP developers.
+
+        Ran Checkstyle and corrected issues reported for most classes.
+        Checkstyle is a free utility that you can download from:
+
+            http://checkstyle.sourceforge.net
+
+        Fixed bugs and updated documentation.
+
+        API changes include:
+        - added tickMarkPaint to Axis constructor (also affects
+          subclasses);
+        - added getLegendItems() to Plot, and deprecated
+          getLegendItemLabels();
+        - added getLegendItem(int) to XYItemRenderer and
+          CategoryItemRenderer.
+        - most 'protected' member variables have been changed to
+          'private'.
+
+0.9.3 : (4-Sep-2002) Added multiple pie charts based on
+        CategoryDataset.  Updated logarithmic axes.  Improved URL
+        support for image map generation. Moved the com.jrefinery.data
+        package from JCommon to JFreeChart. Added simple framework for
+        chart annotations. Improved control over renderers. Duplicate
+        x-values now allowed in XYSeries. Optional category label
+        skipping in category axes. Added CategoriesPaint attribute to
+        AbstractCategoryItemRenderer.  Added new attributes to
+        MeterPlot class. Updated 3D pie chart to observe start angle
+        and direction, and also foreground alpha < 1.0. Improved
+        Javadoc comments. New demo applications, including:
+        AnnotationDemo1, EventFrequencyDemo, JDBCCategoryChartDemo,
+        JDBCPieChartDemo, JDBCXYChartDemo and MinMaxCategoryPlotDemo.
+        Bug fixes:
+        - negative percentages on PiePlot.
+        - added listener notification to setXXXAxis(...) methods.
+        - fixed DomainInfo method name clash.
+        - added DomainIsPointsInTime flag to TimeSeriesCollection to
+          give better control over auto range on axis for time series
+          charts.
+        - axis margins for date axes are no longer hard-coded.
+        - fix for ordering of categories in JdbcCategoryDataset.
+        - added check for null axis in mouse click handler.
+
+        The CVS repository at SourceForge has also been restructured
+        to match the distribution directory layout.
+
+0.9.2 : (28-Jun-2002) PiePlot now has startAngle and direction
+        attributes.  Added support for image map generation.  Added a
+        new Pie3DPlot class. Added label drawing code to bar
+        renderers. Added optional range markers to horizontal number
+        axis.  Added bar clipping to avoid PRExceptions in bar
+        charts.  JFreeChartDemo has been modified and now includes
+        examples of the dial and thermometer plots.
+        Bug fixes:
+        - auto range for VerticalNumberAxis when zero is forced to be
+          included in the range.
+        - fixed null pointer exception in StackedVerticalBarRenderer3D;
+        - Added get/set methods for min/max chart drawing dimensions
+          in ChartPanel;
+        - HorizontalIntervalBarRenderer now handles single category;
+        - verticalTickLabels now possible in HorizontalNumberAxis3D;
+        - removed unnecessary imports;
+
+0.9.1 : (14-Jun-2002) Bug fixes and Javadoc updates.
+        - fixed auto range calculation for category plots;
+        - fixed event notification for XYPlot;
+        - fixed auto axis range for Gantt charts;
+        - check for null popup menu in ChartPanel.mouseDragged;
+        - new checks for null info in renderers;
+        - range markers now drawn only if in visible axis range;
+
+0.9.0 : (7-Jun-2002) New plots including an area chart, a horizontal
+        3D bar chart, a Gantt chart and a thermometer chart.
+        Combination plots have been reworked to provide a
+        simpler framework, and extends to allow category plots to be
+        combined. There is now a facility to add a ChartMouseListener
+        to the ChartPanel (formerly JFreeChartPanel).  An interactive
+        zooming feature (experimental at this point) is now available
+        for XYPlots.  A new Polish translation has been added. Several
+        fixes have been applied to the default tool tip generators.  A
+        workaround has been added to fix the alignment between time
+        series charts and the date axis.  There are some improvements
+        to the VerticalLogarithmicAxis class, and now a corresponding
+        HorizontalLogarithmicAxis class.  Additional demonstration
+        applications have been added.  Fixed the popup menu bug.
+
+0.8.1 : (5-Apr-2002) Localised resource bundles for French, German and
+        Spanish languages (thanks to Anthony Boulestreau, Thomas Meier
+        and Hans-Jurgen Greiner for the translations).  An area XY
+        plot and meter chart contributed by Hari.  Symbol charts
+        contributed by Anthony Boulestreau. An improved
+        CandleStickRenderer class from Sylvain Vieujot.  Updated
+        servlet code from Bryan Scott.  XYItemRenderers now have a
+        change listener mechanism and therefore do not have to be
+        immutable.  Additional demonstration applications for
+        individual chart types. Minor bug fixes.
+
+0.8.0 : (22-Mar-2002) All the category plots are now controlled
+        through the one class (CategoryPlot) with plug-in renderers.
+        Added a ResourceBundle for user interface items that require
+        localisation. Added a logarithmic axis class contributed by
+        Mike Duffy and some new JDBC and servlet code contributed by
+        Bryan Scott.  Updated the JCommon class library to improve
+        handling of time periods in different time zones.
+
+0.7.4 : (6-Mar-2002) Bug fixes in the JCommon Class Library. Various
+        Javadoc comment updates.  Some minor changes to the
+        code. Added new domain name (http://www.object-refinery.com)
+        in the source headers.
+
+0.7.3 : (14-Feb-2002) Bug fixes.
+
+0.7.2 : (8-Feb-2002) Integrated the WindPlot code from Achilleus
+        Mantzios. Added an optional background image for the
+        JFreeChart class, and another optional background image for
+        the Plot class.  Added alpha-transparency for the plot
+        foreground and background.  Added new pie chart label types
+        that show values.  Fixed a bug with the legend that results in
+        a loop at small chart sizes. Added some tooltip methods that
+        were missing from the previous version. Changed the Insets
+        class on chart titles to a new Spacer class that will allow
+        for relative or absolute insets (the plan is to eventually
+        replace all Insets in the JFreeChart classes).  Fixed a bug in
+        the setAutoRangeIncludesZero method of the NumberAxis class.
+        Added the instructions that were missing from the copies of
+        the GNU Lesser General Public Licence included with JFreeChart.
+
+0.7.1 : (25-Jan-2002) Added tooltips, crosshairs and zooming
+        functions, thanks to Jonathan Nash and Hans-Jurgen Greiner
+        for contributing the code that these features are based on.
+        Moved the combination charts into the package
+        com.jrefinery.chart.combination, made a number of other small
+        API changes and fixed some bugs.  Removed the Javadoc HTML
+        from the download to save space (you can regenerate it from
+        the source code if you need it).
+
+0.7.0 : (11-Dec-2001) New combination plots developed by Bill
+        Kelemen.  Added Wolfgang Irler's servlet demo to the standard
+        download.  The About window in the demo application now
+        includes a list of developers that have contributed to the
+        project.
+
+0.6.0 : (27-Nov-2001) New plots including scatter plot, stacked bar
+        charts and 3D bar charts.  Improved pie chart.  Data
+        interfaces and classes moved to the JCommon class library.
+        New properties to control spacing on bar charts.  New
+        auto-tick mechanism.  JFreeChartPanel now incorporates
+        buffering, and popup menu.  Javadocs revised.  Fixed numerous
+        bugs from version 0.5.6.  Demo application updated.
+
+----------------
+10.  CONTRIBUTORS
+----------------
+JFreeChart wouldn't be half the library that it is today without the
+contributions (large and small) that have been made by the developers listed 
+below:
+
+    - Eric Alexander
+    - Richard Atkinson
+    - David Basten
+    - David Berry
+    - Chris Boek
+    - Zoheb Borbora
+    - Anthony Boulestreau
+    - Jeremy Bowman
+    - Nicolas Brodu
+    - Jody Brownell
+    - David Browning
+    - Soren Caspersen
+    - Chuanhao Chiu
+    - Brian Cole
+    - Pascal Collet
+    - Martin Cordova
+    - Paolo Cova
+    - Mike Duffy
+    - Don Elliott
+    - Rune Fauske
+    - Jonathan Gabbai
+    - Serge V. Grachov
+    - Daniel Gredler
+    - Joao Guilherme Del Valle
+    - Hans-Jurgen Greiner
+    - Nick Guenther
+    - Aiman Han
+    - Cameron Hayne
+    - Jon Iles
+    - Wolfgang Irler
+    - Sergei Ivanov
+    - Adriaan Joubert
+    - Darren Jung
+    - Xun Kang
+    - Bill Kelemen
+    - Norbert Kiesel
+    - Gideon Krause
+    - Pierre-Marie Le Biot
+    - Arnaud Lelievre
+    - Wolfgang Lenhard
+    - David Li
+    - Yan Liu
+    - Tin Luu
+    - Craig MacFarlane
+    - Achilleus Mantzios
+    - Thomas Meier
+    - Jim Moore
+    - Jonathan Nash
+    - Barak Naveh
+    - David M. O'Donnell
+    - Krzysztof Paz
+    - Tomer Peretz
+    - Xavier Poinsard
+    - Andrzej Porebski
+    - Viktor Rajewski
+    - Eduardo Ramalho
+    - Michael Rauch
+    - Cameron Riley
+    - Klaus Rheinwald
+    - Dan Rivett
+    - Scott Sams
+    - Michel Santos
+    - Thierry Saura
+    - Andreas Schneider
+    - Jean-Luc SCHWAB
+    - Bryan Scott
+    - Tobias Selb
+    - Mofeed Shahin
+    - Pady Srinivasan
+    - Greg Steckman
+    - Roger Studner
+    - Gerald Struck
+    - Irv Thomae
+    - Eric Thomas
+    - Rich Unger
+    - Daniel van Enckevort
+    - Laurence Vanhelsuwe
+    - Sylvain Vieujot
+    - Jelai Wang
+    - Mark Watson
+    - Alex Weber
+    - Richard West
+    - Matthew Wright
+    - Benoit Xhenseval
+    - Christian W. Zuckschwerdt
+    - Hari 
+    - Sam (oldman)
+
+It is possible that I have missed someone on this list, if that
+applies to you, please e-mail me. 
+
+Dave Gilbert (david.gilbert@object-refinery.com)
+JFreeChart Project Leader
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar
new file mode 100644
index 0000000..77d025d
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.md5 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.md5
new file mode 100644
index 0000000..1955db9
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.md5
@@ -0,0 +1 @@
+f6261c2c005eacb7459ae0c3a8a4fea1  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.sha1 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.sha1
new file mode 100644
index 0000000..a0ffe1e
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar.sha1
@@ -0,0 +1 @@
+6a8015db1d2506b9b7fea68950deef3407c47fa5  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9-sources.jar
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar
new file mode 100644
index 0000000..d1e2b74
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar
Binary files differ
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.md5 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.md5
new file mode 100644
index 0000000..d70bb2d
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.md5
@@ -0,0 +1 @@
+e40fdcd9dcf52833f3a9b2e63f1f438c  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.sha1 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.sha1
new file mode 100644
index 0000000..9138a84
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar.sha1
@@ -0,0 +1 @@
+6e522aa603bf7ac69da59edcf519b335490e93a6  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom
new file mode 100644
index 0000000..4fb050a
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom
@@ -0,0 +1,70 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>jfree</groupId>
+    <artifactId>jfreechart</artifactId>
+    <name>jfreechart</name>
+    <version>1.0.9</version>
+    <url>http://www.jfree.org/jfreechart/</url>
+    <organization>
+        <name>JFree.org</name>
+        <url>http://www.jfree.org/</url>
+    </organization>
+    <inceptionYear>2001</inceptionYear>
+    <description>
+        JFreeChart is a class library, written in Java, for generating charts. Utilising the Java2D APIs, it currently
+        supports bar charts, pie charts, line charts, XY-plots and time series plots.
+    </description>
+    <scm>
+        <connection>scm:cvs:pserver:anonymous@jfreechart.cvs.sourceforge.net:/cvsroot/jfreechart:jfreechart</connection>
+        <url>http://jfreechart.cvs.sourceforge.net/jfreechart/jfreechart/</url>
+    </scm>
+    <licenses>
+        <license>
+            <name>GNU Lesser General Public Licence</name>
+            <url>http://www.gnu.org/licenses/lgpl.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+        <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.3</source>
+                    <target>1.3</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <includes>
+                        <include>**/JFreeChartTestSuite.java</include>
+                    </includes>
+                    <!-- Force locale because of some tests in WeekTests.java -->
+                    <argLine>-Duser.language=en -Duser.region=GB</argLine>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>jfree</groupId>
+            <artifactId>jcommon</artifactId>
+            <version>1.0.12</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.3</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.md5 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.md5
new file mode 100644
index 0000000..d5b94c5
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.md5
@@ -0,0 +1 @@
+10e352b89825e6125a18ef114bf55d8f  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom
diff --git a/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.sha1 b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.sha1
new file mode 100644
index 0000000..938c3d5
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom.sha1
@@ -0,0 +1 @@
+e3a365386e742e66a5a915b55d106fcc83375b43  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/1.0.9/jfreechart-1.0.9.pom
diff --git a/common/m2/repository/jfree/jfreechart/maven-metadata.xml b/common/m2/repository/jfree/jfreechart/maven-metadata.xml
new file mode 100644
index 0000000..51fd07b
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/maven-metadata.xml
@@ -0,0 +1,13 @@
+<metadata>
+  <groupId>jfree</groupId>
+  <artifactId>jfreechart</artifactId>
+  <version>0.9.21</version>
+  <versioning>
+    <versions>
+      <version>0.9.21</version>
+      <version>1.0.0-rc1</version>
+      <version>1.0.0</version>
+      <version>1.0.1</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/common/m2/repository/jfree/jfreechart/maven-metadata.xml.md5 b/common/m2/repository/jfree/jfreechart/maven-metadata.xml.md5
new file mode 100644
index 0000000..4604a60
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/maven-metadata.xml.md5
@@ -0,0 +1 @@
+fbb4e620ee38c52c8427cb2bf7e1a00d  ./jfree/jfreechart/maven-metadata.xml
diff --git a/common/m2/repository/jfree/jfreechart/maven-metadata.xml.sha1 b/common/m2/repository/jfree/jfreechart/maven-metadata.xml.sha1
new file mode 100644
index 0000000..038d6d0
--- /dev/null
+++ b/common/m2/repository/jfree/jfreechart/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+e4a87624ac10649c1641aa28de6b3fefed8d9d49  /home/maven/repository-staging/to-ibiblio/maven2/jfree/jfreechart/maven-metadata.xml
