Sun Microsystems, Inc.
Binary Code License Agreement

READ THE TERMS OF THIS AGREEMENT AND ANY PROVIDED SUPPLEMENTAL LICENSE
TERMS (COLLECTIVELY "AGREEMENT") CAREFULLY BEFORE OPENING THE SOFTWARE
MEDIA PACKAGE.  BY OPENING THE SOFTWARE MEDIA PACKAGE, YOU AGREE TO
THE TERMS OF THIS AGREEMENT.  IF YOU ARE ACCESSING THE SOFTWARE
ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESE TERMS BY SELECTING
THE "ACCEPT" BUTTON AT THE END OF THIS AGREEMENT.  IF YOU DO NOT AGREE
TO ALL THESE TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR PLACE
OF PURCHASE FOR A REFUND OR, IF THE SOFTWARE IS ACCESSED
ELECTRONICALLY, SELECT THE "DECLINE" BUTTON AT THE END OF THIS
AGREEMENT.

1.  LICENSE TO USE.
  Sun grants you a non-exclusive and non-transferable license for the
  internal use only of the accompanying software and documentation and
  any error corrections provided by Sun (collectively "Software"), by
  the number of users and the class of computer hardware for which the
  corresponding fee has been paid.

2.  RESTRICTIONS.
  Software is confidential and copyrighted. Title to Software and all
  associated intellectual property rights is retained by Sun and/or
  its licensors.  Except as specifically authorized in any
  Supplemental License Terms, you may not make copies of Software,
  other than a single copy of Software for archival purposes.  Unless
  enforcement is prohibited by applicable law, you may not modify,
  decompile, or reverse engineer Software.  Licensee acknowledges that
  Software is not designed or intended for use in the design,
  construction, operation or maintenance of any nuclear facility. Sun
  Microsystems, Inc. disclaims any express or implied warranty of
  fitness for such uses.   No right, title or interest in or to any
  trademark, service mark, logo or trade name of Sun or its licensors
  is granted under this Agreement.

3.  LIMITED WARRANTY.
  Sun warrants to you that for a period of ninety (90) days from the
  date of purchase, as evidenced by a copy of the receipt, the media on
  which Software is furnished (if any) will be free of defects in
  materials and workmanship under normal use.  Except for the foregoing,
  Software is provided "AS IS".  Your exclusive remedy and Sun's entire
  liability under this limited warranty will be at Sun's option to
  replace Software media or refund the fee paid for Software.

4.  DISCLAIMER OF WARRANTY.
  UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS,
  REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE
  DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.

5.  LIMITATION OF LIABILITY.
  TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS
  LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
  SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
  HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
  OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN
  HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  In no event
  will Sun's liability to you, whether in contract, tort (including
  negligence), or otherwise, exceed the amount paid by you for
  Software under this Agreement.  The foregoing limitations will apply
  even if the above stated warranty fails of its essential purpose.

6.  Termination.
  This Agreement is effective until terminated.  You may terminate this
  Agreement at any time by destroying all copies of Software.  This
  Agreement will terminate immediately without notice from Sun if you
  fail to comply with any provision of this Agreement.  Upon
  Termination, you must destroy all copies of Software.

7.  Export Regulations.
  All Software and technical data delivered under this Agreement are
  subject to US export control laws and may be subject to export or
  import regulations in other countries.  You agree to comply strictly
  with all such laws and regulations and acknowledge that you have the
  responsibility to obtain such licenses to export, re-export, or
  import as may be required after delivery to you.

8.  U.S. Government Restricted Rights.
  If Software is being acquired by or on behalf of the U.S. Government
  or by a U.S. Government prime contractor or subcontractor (at any
  tier), then the Government's rights in Software and accompanying
  documentation will be only as set forth in this Agreement; this is
  in accordance with 48 CFR 227.7201 through 227.7202-4 (for
  Department of Defense (DOD) acquisitions) and with 48 CFR 2.101 and
  12.212 (for non-DOD acquisitions).

9.  Governing Law.
  Any action related to this Agreement will be governed by California
  law and controlling U.S. federal law.  No choice of law rules of any
  jurisdiction will apply.

10. Severability.
  If any provision of this Agreement is held to be unenforceable, this
  Agreement will remain in effect with the provision omitted, unless
  omission would frustrate the intent of the parties, in which case
  this Agreement will immediately terminate.

11. Integration.
  This Agreement is the entire agreement between you
  and Sun relating to its subject matter.  It supersedes all prior
  or contemporaneous oral or written communications, proposals,
  representations and warranties and prevails over any conflicting
  or additional terms of any quote, order, acknowledgment, or other
  communication between the parties relating to its subject matter
  during the term of this Agreement.  No modification of this
  Agreement will be binding, unless in writing and signed by an
  authorized representative of each party.

For inquiries please contact:
Sun Microsystems, Inc.
4150 Network Circle
Santa Clara, California 95054.


DEVELOPMENT TOOLS

JVMSTAT 3.0

SUPPLEMENTAL LICENSE TERMS

These supplemental license terms ("Supplemental Terms") add to or
modify the terms of the Binary Code License Agreement (collectively,
the "Agreement"). Capitalized terms not defined in these Supplemental
Terms shall have the same meanings ascribed to them in the
Agreement. These Supplemental Terms shall supersede any inconsistent
or conflicting terms in the Binary Code License Agreement, or in any
license contained within the Software.

A. Software Internal Use and Development License Grant.
  Subject to the terms and conditions of this Agreement, including,
  but not limited to Section B (Java Technology Restrictions) of these
  Supplemental Terms, Sun grants you a non-exclusive, non-transferable,
  limited license to reproduce internally and use internally the binary
  form of the Software complete and unmodified for the sole purpose of
  designing, developing and testing your Java applets and applications
  intended to run on the Java platform ("Programs").

B. Java Technology Restrictions.
  You may not create, modify, or change the behavior of, or authorize your
  licensees to create, modify, or change the behavior of, classes,
  interfaces, or subpackages that are in any way identified as "java",
  "javax", "sun" or similar convention as specified by Sun in any naming
  convention designation.

C. Trademarks and Logos.
  You acknowledge and agree as between you and Sun that Sun owns the
  SUN, SOLARIS, JAVA, JINI, FORTE, and iPLANET trademarks and all SUN,
  SOLARIS, JAVA, JINI, FORTE, and iPLANET-related trademarks, service
  marks, logos and other brand designations ("Sun Marks"), and you agree
  to comply with the Sun Trademark and Logo Usage Requirements currently
  located at http://www.sun.com/policies/trademarks. Any use you make of
  the Sun Marks inures to Sun's benefit.

D. Source Code.
  Software may contain source code that is provided solely for reference
  purposes pursuant to the terms of this Agreement.  Source code may not
  be redistributed unless expressly provided for in this Agreement.

E. Termination for Infringement.
  Either party may terminate this Agreement immediately should any
  Software become, or in either party's opinion be likely to become, the
  subject of a claim of infringement of any intellectual property right.

For inquiries please contact:
Sun Microsystems, Inc.
4150 Network Circle, Santa Clara
California 95054

(LFI#143715/Form ID#011801)
