####################################################################

Copyright (C) 2002 The Regents of the University of California.
Copyright (C) 2008 coresystems GmbH

Produced at the Lawrence Livermore National Laboratory.
Written by David S. Peterson <dsp@llnl.gov>.
UCRL-CODE-2003-012
All rights reserved.

SPDX-License-Identifier: GPL-2.0-only

This work was produced at the University of California, Lawrence Livermore
National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48)
between the U.S. Department of Energy (DOE) and The Regents of the
University of California (University) for the operation of UC LLNL.
The rights of the Federal Government are reserved under Contract 48 subject
to the restrictions agreed upon by the DOE and University as allowed under
DOE Acquisition Letter 97-1.

#############################################################################

OUR NOTICE AND TERMS AND CONDITIONS OF THE GNU GENERAL PUBLIC LICENSE

Our Preamble Notice
-------------------

A.  This notice is required to be provided under our contract with the U.S.
    Department of Energy (DOE).  This work was produced at the University of
    California, Lawrence Livermore National Laboratory under Contract No.
    W-7405-ENG-48 with the DOE.

B.  Neither the United States Government nor the University of California nor
    any of their employees, makes any warranty, express or implied, or
    assumes any liability or responsibility for the accuracy, completeness,
    or usefulness of any information, apparatus, product, or process
    disclosed, or represents that its use would not infringe privately-owned
    rights.

C.  Also, reference herein to any specific commercial products, process, or
    services by trade name, trademark, manufacturer or otherwise does not
    necessarily constitute or imply its endorsement, recommendation, or
    favoring by the United States Government or the University of California.
    The views and opinions of authors expressed herein do not necessarily
    state or reflect those of the United States Government or the University
    of California, and shall not be used for advertising or product
    endorsement purposes.  The precise terms and conditions for copying,
    distribution and modification follows.

GNU Terms and Conditions for Copying, Distribution, and Modification
--------------------------------------------------------------------

The precise terms and conditions of the GNU General Public License
(version 2, dated June 1991) are contained in the file COPYING which is
included in this software distribution.
