   This is the LDF Metadata Exchange Utilities Manual edition 1.1 for
the LDF Metadata Exchange Utilities 1.1.  It contains text from the IWF
Metadata Harvester User and Reference Manual II (Scantest), edition 1.0
for the IWF Metadata Harvester 1.0.  This manual was last updated on
11 February 2007.  The LDF Metadata Exchange Utilities are a package
for metadata exchange.  The author is Laurence D. Finston.

   The following copyright notice applies to the contents of this manual
up to and including January 31, 2007:

   Copyright (C) 2006, 2007 IWF Wissen und Medien gGmbH

   The following copyright notice applies to all changes and additions
to this manual starting on February 1, 2007:

   Copyright (C) 2007 Laurence D. Finston

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.2 or any later version published by the Free Software
     Foundation; with no Invariant Sections, no Front-Cover Texts, and
     no Back-Cover Texts.  A copy of the license is included in the
     section entitled "GNU Free Documentation License".

1 Introduction
**************

2 Utility Types
***************

2.1 Mutex_Type
==============

 `struct Mutex_Type' is declared in `nonwin.web'.

2.1.1 Functions
---------------

 -- Public functions: int Lock (`void')
 -- : int Unlock (`void')
     These functions currently return 0 immediately.

3 Global Variables
******************

 -- Global variables: Mutex_Type cerr_mutex
 -- : Mutex_Type cout_mutex
 -- : Mutex_Type time_mutex
 -- : Mutex_Type tex_mutex
     These variables are declared in `main.web'.  They are used in the
     GNU/Linux version of Scantest.

 -- Global variables: CMutex log_strm_mutex
 -- : CMutex cerr_mutex
 -- : CMutex cout_mutex
     These variables are declared in `scantest.web'.  They are used in
     the
 Microsoft Windows of Scantest.

 -- Global variable: `unsigned short' tex_file_ctr
     This variable is declared in `main.web'.
 It is used in the
     GNU/Linux version of Scantest.

 -- Global variable: string tex_filename_str
     This variable is declared in `main.web'.
 It is used in the
     GNU/Linux version of Scantest.

 -- Global variable: string copyright_tex_str
     This variable is declared in `main.web'.
 It is used in the
     GNU/Linux version of Scantest.

 -- Global variable: ofstream tex_file_strm
     This variable is declared in `main.web'.
 It is used in the
     GNU/Linux version of Scantest.

 -- Global variables: ifstream in_strm
 -- : ofstream log_strm
     These variables are declared `scantest.web'.
 They are used in
     the Microsoft Windows version of Scantest.

4 Global Functions
******************

4.1 Main Function for GNU Linux
===============================

 -- Function: int main (`int' `argc', `char*' ARGV[])
     The "main function" used in the GNU/Linux version of Scantest.  It
     is the "entry point"
 of the program.

4.2 Main function for Microsoft Windows
=======================================

 -- Function: int _tmain (`int' ARGC,
          `TCHAR*' ARGV[],
          `TCHAR*' ENVP[])
     The "main function" used in the Microsoft Windows version of
     Scantest.
 It is the "entry point" of the program.

4.3 Other Functions
===================

 -- Function: void yyerror (`const char*' s)

5 Date_Time_Type
****************

 Class `Date_Time_Type' is declared in `dttmtype.web'.
 Ctangling
`dttmtype.web' generates `dttmtype.h'.
 `Date_Time_Node' is a synonym
for `Date_Time_Type*'.
 `class Query_Type' is a `friend' of
`Date_Time_Type'.

5.1 Data Members
================

 -- Private variables: short* year_range_begin
 -- : short* year_range_end
 -- : short* year
 -- : unsigned short* month
 -- : unsigned short* day
 -- : unsigned short* hour
 -- : unsigned short* minute
 -- : float* second

5.2 Functions
=============

5.2.1 Constructor and Destructor
--------------------------------

 -- Constructor: void Date_Time_Type (`void')

 -- Destructor: void ~Date_Time_Type (`void')

5.2.2 Operators
---------------

 -- Assignment operator: Date_Time_Node Date_Time_Type::operator=
          (`const Date_Time_Type&')

5.2.3 Showing
-------------

 -- Member Function: int show (`string')

5.2.4 Output
------------

 -- Output operator: ostream& operator<< (`ostream&', `Date_Time_Type&')

6 Datasource_Type
*****************

 Class `Datasource_Type' is declared in `dtsrctyp.web'.
 Ctangling
`dtsrctyp.web' generates `dtsrctyp.h'.
 `Datasource_Node' is a synonym
for `Datasource_Type*'.

6.1 Data Members
================

 -- Private variables: unsigned short type
 -- : string name
 -- : void* value
 -- : Scanner_Node scanner_node

 -- Private static variable: map<unsigned short, string>
datasource_type_map

 -- Public static constants: unsigned short DATASOURCE_TYPE_NULL_TYPE
 -- : unsigned short DBT_TYPE
 -- : unsigned short GBV_GVK_TYPE
 -- : unsigned short TIMMS_TYPE
 -- : unsigned short DATASOURCE_FILE_TYPE

6.2 Functions
=============

6.2.1 Constructors and Setting Functions
----------------------------------------

 -- Constructor: void Datasource_Type (`void')

 -- Member Function: int set (`unsigned short' datasource_type,
          `Scanner_Node' sscanner_node)

6.2.2 Destructor
----------------

 -- Destructor: void ~Datasource_Type (`void')

6.2.3 Operators
---------------

 -- Assignment Operator: Datasource_Node operator= (`const
          Datasource_Type&')

6.2.4 Initializing Maps
-----------------------

 -- Static Function: int initialize_type_maps (`void')

6.2.5 Showing
-------------

 -- Function: int show (`string', `Scanner_Node')

 1

7 Id_Type
*********

 `struct' `Id_Type' is declared in `idtype.web'.
 Ctangling
`idtype.web' generates `idtype.h'.
 `Id_Node' is a synonym for
`Id_Type*'.
 `class Scanner_Type' is a `friend' of
 `Id_Type'.

7.1 Data Members
================

 -- Public variables: string name
 -- : void* value
 -- : unsigned short type
 -- : unsigned short subtype
 -- : Scanner_Node scanner_node
 -- : Id_Node up
 -- : Id_Node left
 -- : Id_Node right

 -- Public static variable: static map<unsigned short, string>
subtype_map

 -- Public static constants: unsigned short TEX_STRING_TYPE
 -- : unsigned short SQL_STRING_TYPE
 -- : unsigned short PQF_STRING_TYPE

7.2 Functions
=============

7.2.1 Constructors
------------------

 -- Constructor: void Id_Type (`void')

7.2.2 Destructor
----------------

 -- Destructor: void ~Id_Type (`void')

7.2.3 Initialize Maps
---------------------

 -- Member Function: int initialize_subtype_map (`Scanner_Node')

7.2.4 Showing
-------------

 -- Member Function: int show (`string')

8 Query_Type
************

 Class `Query_Type' is declared in `querytyp.web'.
 Ctangling
`querytyp.web' generates `querytyp.h'.
 `Query_Node' is a synonym for
`Query_Type*'.

8.1 Data Members
================

 -- Private Variables: unsigned short query_type
 -- : unsigned short field_type
 -- : unsigned short value_type
 -- : vector<unsigned short> target_types
 -- : Id_Node id_node
 -- : bool negated
 -- : string name
 -- : void* value
 -- : Query_Node up
 -- : Query_Node and_node
 -- : Query_Node or_node
 -- : Query_Node xor_node
 -- : unsigned short match_value
 -- : Scanner_Node scanner_node
 -- : unsigned short query_ctr

 -- Private Static Variables: map<unsigned short, string> query_type_map
 -- : map<unsigned short, string> field_type_map
 -- : map<unsigned short, string> value_type_map
 -- : map<unsigned short, string> target_type_map
 -- : map<unsigned short, string> match_value_map

 -- Public Static Constants: unsigned short QUERY_TYPE_NULL_TYPE
 -- : unsigned short TOP_TYPE
 -- : unsigned short AND_TYPE
 -- : unsigned short OR_TYPE
 -- : unsigned short XOR_TYPE
 -- : unsigned short ACCESS_NUMBER_FIELD
 -- : unsigned short AUTHOR_FIELD
 -- : unsigned short BIBLIOGRAPHIC_TYPE_FIELD
 -- : unsigned short CALL_NUMBER_FIELD
 -- : unsigned short CLASSIFICATION_FIELD
 -- : unsigned short COMPANY_FIELD
 -- : unsigned short CONTENT_SUMMARY_FIELD
 -- : unsigned short CONTRIBUTOR_FIELD
 -- : unsigned short CREATOR_FIELD
 -- : unsigned short DATABASE_PROVIDER_FIELD
 -- : unsigned short DESCRIPTION_FIELD
 -- : unsigned short EXEMPLAR_PRODUCTION_NUMBER_FIELD
 -- : unsigned short IDENTIFIER_FIELD
 -- : unsigned short INSTITUTION_FIELD
 -- : unsigned short LANGUAGE_FIELD
 -- : unsigned short MAIN_CANONICAL_TITLE_FIELD
 -- : unsigned short PERMUTATION_PATTERN_FIELD
 -- : unsigned short PHYSICAL_DESCRIPTION_FIELD
 -- : unsigned short PERSON_FIELD
 -- : unsigned short PUBLISHER_FIELD
 -- : unsigned short RECORD_FIELD
 -- : unsigned short REMOTE_ACCESS_FIELD
 -- : unsigned short RIGHTS_FIELD
 -- : unsigned short SOURCE_FIELD
 -- : unsigned short SUBJECT_FIELD
 -- : unsigned short SUPERORDINATE_ENTITIES_FIELD
 -- : unsigned short TITLE_FIELD
 -- : unsigned short TYPE_FIELD
 -- : unsigned short AUTHOR_SURNAME_FIELD
 -- : unsigned short AUTHOR_GIVEN_NAME_FIELD
 -- : unsigned short AUTHOR_PREFIX_FIELD
 -- : unsigned short CONTRIBUTOR_SURNAME_FIELD
 -- : unsigned short CONTRIBUTOR_GIVEN_NAME_FIELD
 -- : unsigned short CONTRIBUTOR_PREFIX_FIELD
 -- : unsigned short RECORD_ID_FIELD
 -- : unsigned short RECORD_ELN_ORIGINAL_ENTRY_FIELD
 -- : unsigned short RECORD_ELN_MOST_RECENT_CHANGE_FIELD
 -- : unsigned short RECORD_ELN_STATUS_CHANGE_FIELD
 -- : unsigned short RECORD_IDENTIFICATION_NUMBER_FIELD
 -- : unsigned short RECORD_DATE_ORIGINAL_ENTRY_FIELD
 -- : unsigned short RECORD_DATE_MOST_RECENT_CHANGE_FIELD
 -- : unsigned short RECORD_DATE_STATUS_CHANGE_FIELD
 -- : unsigned short RECORD_SOURCE_ID_FIELD
 -- : unsigned short RECORD_YEAR_APPEARANCE_BEGIN_FIELD
 -- : unsigned short RECORD_YEAR_APPEARANCE_END_FIELD
 -- : unsigned short RECORD_YEAR_APPEARANCE_RAK_WB_FIELD
 -- : unsigned short RECORD_YEAR_APPEARANCE_ORIGINAL_FIELD
 -- : unsigned short INT_TYPE
 -- : unsigned short FLOAT_TYPE
 -- : unsigned short QUERY_TYPE_STRING_TYPE
 -- : unsigned short DATE_TIME_TYPE
 -- : unsigned short LOCAL_DATABASE_TARGET
 -- : unsigned short LOCAL_SERVER_TARGET
 -- : unsigned short REMOTE_DATABASE_TARGET
 -- : unsigned short REMOTE_SERVER_TARGET
 -- : unsigned short CONTAINS_VALUE
 -- : unsigned short FREETEXT_VALUE
 -- : unsigned short LIKE_VALUE

 -- Public Static Variables: bitset<QUERY_TYPE_BITSET_SIZE> NULL_BITSET
 -- : bitset<QUERY_TYPE_BITSET_SIZE> ACCESS_NUMBER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> AUTHOR_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> AUTHOR_SURNAME_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> AUTHOR_GIVEN_NAME_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> AUTHOR_PREFIX_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> BIBLIOGRAPHIC_TYPE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CALL_NUMBER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CLASSIFICATION_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> COMPANY_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CONTENT_SUMMARY_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CONTRIBUTOR_SURNAME_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CONTRIBUTOR_GIVEN_NAME_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CONTRIBUTOR_PREFIX_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CREATOR_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> CONTRIBUTOR_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> DATABASE_PROVIDER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> DESCRIPTION_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> EXEMPLAR_PRODUCTION_NUMBER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> IDENTIFIER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> INSTITUTION_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> LANGUAGE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> MAIN_CANONICAL_TITLE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> PERMUTATION_PATTERN_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> PERSON_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> PHYSICAL_DESCRIPTION_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> PUBLISHER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_ID_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_ELN_ORIGINAL_ENTRY_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_ELN_MOST_RECENT_CHANGE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_ELN_STATUS_CHANGE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_IDENTIFICATION_NUMBER_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_DATE_ORIGINAL_ENTRY_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_DATE_MOST_RECENT_CHANGE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_DATE_STATUS_CHANGE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_SOURCE_ID_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_YEAR_APPEARANCE_BEGIN_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_YEAR_APPEARANCE_END_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RECORD_YEAR_APPEARANCE_RAK_WB_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE>
RECORD_YEAR_APPEARANCE_ORIGINAL_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> REMOTE_ACCESS_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> RIGHTS_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> SOURCE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> SUBJECT_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> SUPERORDINATE_ENTITIES_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> TITLE_FLAG
 -- : bitset<QUERY_TYPE_BITSET_SIZE> TYPE_FLAG

8.2 Functions
=============

8.2.1 Constructors and Setting Functions
----------------------------------------

 -- Constructor: void Query_Type (`void')

 -- Setting Function: int Query_Type::set (`unsigned short' qquery_type,
          `unsigned short' ffield_type,
          `unsigned short' vvalue_type,
          `unsigned short' target_type,
          `bool' nnegated,
          `void*' vvalue,
          `Query_Node' uup,
          `Query_Node' aand_node,
          `Query_Node' oor_node,
          `Query_Node' xxor_node,
          `Scanner_Node' sscanner_node)

8.2.2 Destructor
----------------

 -- Destructor: void ~Query_Type (`void')

8.2.3 Operators
---------------

 -- Assignment Operator: Query_Node operator= (`const Query_Type&')

8.2.4 Initializing and Flags Maps
---------------------------------

 -- Static Member Function: int initialize_type_maps (`void')

 -- Static Member Function: int initialize_flags (`void')

8.2.5 Set Field Specifier
-------------------------

 -- Member Function: int set_field_specifier (`void*' V,
          `bool' TRAVERSE,
          `Scanner_Node' `sscanner_node')

8.2.6 Generate Strings
----------------------

 -- Member functions: string generate_tex_string (`Scanner_Node'
          SCANNER_NODE,
          `stringstream*' TEX_STRM)
 -- : int generate_sql_string (`Scanner_Node' SCANNER_NODE,
          `int' DATABASE_TYPE,
          `stringstream*' SQL_STRM,
          `stringstream*' SELECT_STRM,
          `stringstream*' FROM_STRM,
          `stringstream*' WHERE_STRM_0,
          `stringstream*' WHERE_STRM_1,
          `bool*' FIRST_SELECT,
          `bool*' FIRST_FROM,
          `bool*' FIRST_WHERE,
          `bitset<QUERY_TYPE_BITSET_SIZE>*' FIELD_FLAGS,
          `string*' RETURN_STR)

8.2.7 Showing Query_Type
------------------------

 -- Member Function: int show (`string', `Scanner_Node')

9 Token_Type
************

 `struct Token_Type' is declared in `scnrtype.web'.

9.1 Data Members
================

 -- Public data members: `unsigned int' type
 -- : `YYSTYPE' value

9.2 Functions
=============

9.2.0.1 Constructors
....................

 -- Default constructor: `void' Token_Type (`void')
 -- Constructor: `void' Token_Type (`unsigned int' TTYPE, `YYSTYPE'
          VVALUE)

10 Scanner_Type
***************

 Class `Scanner_Type' is declared in `scnrtype.web'.

10.1 Data Members
=================

 -- Private variables: `char' in_filename[128]
 -- : char log_filename[128]
 -- : ifstream in_strm
 -- : `map<string, Id_Type*>' id_map
 -- : `stack<Token_Type>' token_stack
 -- : `vector<float>' float_vector

 -- Public variables: ofstream log_strm

10.2 Functions
==============

10.2.1 Constructor
------------------

 -- Default constructor: void Scanner_Type (void)

10.2.2 Destructor
-----------------

 -- Destructor: void ~Scanner_Type (void)

10.2.2.1 Initializing Maps
..........................

 -- Function: int initialize_id_map (`void')

10.3 Other functions
====================

 -- Function: Id_Node lookup (`char*' NAME,
          `bool' CREATE,
          `unsigned int' type)

11 Namespace Scan_Parse
***********************

 `namespace Scan_Parse' is declared in `scanner.web'.
 Ctangling
`scanner.web' generates `scanner.h'.

 Unless otherwise stated,
the variables and datatypes described in
 this chapter are all
declared within the namespace
 `Scan_Parse'.

11.1 Keyword_Type
=================

 `struct Keyword_Type' is declared in `scanner.web'.

 -- Member variables: string name
 -- : int value
 -- : string value_name

11.2 Constants
==============

 -- extern constants: unsigned int NULL_STATE
 -- : unsigned int COLLECTING_ID
 -- : unsigned int COLLECTING_STRING
 -- : unsigned int COLLECTING_INTEGER
 -- : unsigned int COLLECTING_FLOAT

11.3 Variables
==============

 -- Variables: `map<string, Keyword_Type*>' keyword_map
 -- : `map<unsigned int, string>' token_map

11.4 Functions
==============

11.4.1 Map Functions
--------------------

 -- Function: int initialize_maps (`void')

 -- Function: int show_keyword_map (`Scanner_Type*')

11.4.2 Parser Rule Functions
----------------------------

 The functions described in this section are defined in
`prsrfncs.web'.

11.4.2.1 Functions for Variables
................................

 -- Function: `void*' variable_func (`void*' V, `char*' NAME)

11.4.2.2 Functions for Declarations
...................................

 -- Function: Id_Node declare_variable_func (`void*' V,
          `const unsigned short' TYPE,
          `char*' NAME)

11.4.2.3 Functions for Assignments
..................................

 -- Function: `void*' query_assignment_func_0 (`void*' V,
          `void*' OBJECT,
          `unsigned int' ASSIGNMENT_TYPE,
          `unsigned int' ARG_0,
          `unsigned int' ARG_1,
          `void*' VALUE,
          `bool' NEGATE)

 -- Function: int query_assignment_func_1 (`Scanner_Node' SCANNER_NODE,
          `Id_Node&' CURR_ID_NODE,
          `void*&' FIELD_SPECIFIER,
          `int' ASSIGNMENT_OPERATOR,
          `int' NEGATION_OPTIONAL,
          `int' MATCH_TERM_OPTIONAL,
          `void*&' V,
          `int' TYPE)

 -- Function: int datetime_assignment_func_0 (`void*' V,
          `Date_Time_Node&' CURR_DATE_TIME_NODE,
          `int' SPECIFIER,
          `int' OP,
          `void*' VAL,
          `int' TYPE)

 -- Function: int datetime_assignment_func_1 (`void*' V,
          `Date_Time_Node&' D,
          `int' OP,
          `void*&' VEC)

11.4.2.4 Functions for Queries Scan_Parse
.........................................

 -- Function: int start_local_database_query_func (`void*')

 -- Function: int end_query_func (`void*')

11.4.3 The Scanning Function `yylex'
------------------------------------

 `yylex' is the "scanner" or "scanning function" that reads code
in the Scantest language from plain-text "input files" and passes
"tokens" to
 the "parser" or "parsing function" `yyparse'.
 See
Parser.

 -- Global function: int yylex (`YYSTYPE*' VALUE, `void*' PARAMETER)

12 Parser
*********

 "Tokens" are also known as "terminal symbols".  They are
the
 basic building blocks of the Scantest language.  Tokens are
returned
 to the function `yyparse' by the function `yylex'.
 See
The Scanning Function `yylex'.

 -- Global function: int yyparse (`void*' YYPARSE_PARAM)
     This function is generated by GNU Bison from the "parser input
     files":

          Main parser file (`parser.w')

          Variables (`variabls.w')

          Declarations (`declrtns.w')

          Assignments (`assign.w')

          `datasource' expressions (`dtsrcexp.w')

          `datetime' expressions (`dttmexp.w')

          `query' expressions (`queryexp.w')

          `string' expressions (`strings.w')

          Commands (`commands.w')

 -- Union declaration for YYSTYPE: `int' int_value
 -- : `float' float_value
 -- : `char' `string_value[2048]'
 -- : `void*' pointer_value
     `YYSTYPE' is the type of the "semantic value" associated with
 a
     symbol or a rule.  `YYSTYPE' can be a simple type or a
 "union".
     In Scantest, it is a `union'.  Each of the tokens
 and
     non-terminal symbols described below has a semantic value whose
     type
 is one of the members of this `union'.

12.1 Punctuation
================

 -- Tokens: `int_value' AT_SYMBOL
 -- : `int_value' COMMA
 -- : `int_value' COLON
 -- : `int_value' HYPHEN
 -- : `int_value' UNDERLINE
 -- : `int_value' PERCENT
 -- : `int_value' PERIOD
 -- : `int_value' SEMI_COLON
 -- : `int_value' OPEN_PARENTHESIS
 -- : `int_value' CLOSE_PARENTHESIS
 -- : `int_value' OPEN_BRACKET
 -- : `int_value' CLOSE_BRACKET

12.2 General
============

 -- Token: `int_value' CLEAR

 -- Pseudo-Token: No semantic value EMPTY
     `EMPTY' is a pseudo-token that represents the absence of a symbol
     on
 the right-hand side of a parser rule.

12.3 Grouping
=============

 -- Tokens: `int_value' START
 -- : `int_value' END

12.4 Operators
==============

12.4.1 Arithmetical Operators
-----------------------------

 -- Tokens: `int_value' PLUS
 -- : `int_value' MINUS
 -- : `int_value' TIMES
 -- : `int_value' DIVIDE

12.4.2 Boolean Operators
------------------------

 -- Tokens: `int_value' XOR
 -- : `int_value' NOT
 -- : `int_value' AND_NOT
 -- : `int_value' OR_NOT
 -- : `int_value' XOR_NOT

 -- Non-terminal Symbols: `int_value' and_or_and_not
 -- : `int_value' or_or_or_not
 -- : `int_value' xor_or_xor_not

12.5 Control
============

12.5.1 Termination
------------------

 -- Tokens: `int_value' TERMINATE

12.5.2 Conditionals
-------------------

 -- Tokens: `int_value' IF
 -- : `int_value' ELSE
 -- : `int_value' ELIF
 -- : `int_value' FI

12.5.3 Loops
------------

 -- Tokens: `int_value' FOR
 -- : `int_value' DO
 -- : `int_value' WHILE
 -- : `int_value' AND
 -- : `int_value' OR

12.6 Start Symbol
=================

 <program>  ->  <statement list>  TERMINATE

12.7 Statements
===============

 -- Non-terminal Symbols: (No semantic value) statement_list
 -- : (No semantic value) statement

 <statement list>  ->  EMPTY

    |  <statement list>  <statement>

 <statement>  ->  <declaration> SEMI_COLON

    |  <assignment> SEMI_COLON

    |  <command>    SEMI_COLON

12.8 Data Types
===============

 -- Tokens: `string_value' STRING
 -- : `int_value' INTEGER
 -- : `float_value' FLOAT

12.9 Variables
==============

 -- Tokens: `int_value' VARIABLE
 -- : `string_value' VARIABLE_TEXT_SEGMENT
 -- : `pointer_value' NULL_TYPE
 -- : `pointer_value' DATASOURCE_TYPE
 -- : `pointer_value' DATETIME_TYPE
 -- : `pointer_value' QUERY_TYPE
 -- : `pointer_value' STRING_TYPE

 -- Non-terminal Symbols: `pointer_value' variable_name
 -- : `string_value' variable_segment_list
 -- : `float_value' subscript
 -- : `pointer_value' query_variable
 -- : `pointer_value' datasource_variable
 -- : `pointer_value' string_variable
 -- : `pointer_value' datetime_variable

 <variable_name>  ->  <variable_segment_list>

 <variable_segment_list>  ->  VARIABLE_TEXT_SEGMENT

    |  <variable_segment_list>  VARIABLE_TEXT_SEGMENT

    |  <variable_segment_list>  <subscript>

 <subscript>  ->  INTEGER

    |  FLOAT

    |  OPEN_BRACKET INTEGER CLOSE_BRACKET

    |  OPEN_BRACKET FLOAT CLOSE_BRACKET

 <query_variable>  ->  VARIABLE QUERY_TYPE

    |  <variable_name>  QUERY_TYPE

 <datasource_variable>  ->  VARIABLE DATASOURCE_TYPE

    |  <variable_name>  DATASOURCE_TYPE

 <string_variable>  ->  VARIABLE STRING_TYPE

    |  <variable_name>  STRING_TYPE

 <datetime_variable>  ->  VARIABLE DATETIME_TYPE

    |  <variable_name>  DATETIME_TYPE

12.10 Declarations
==================

 -- Tokens: `int_value' DATASOURCE_DECLARATOR
 -- : `int_value' DATETIME_DECLARATOR
 -- : `int_value' STRING_DECLARATOR
 -- : `int_value' QUERY_DECLARATOR

 -- Non-terminal Symbols: `int_value' declaration
 -- : `int_value' query_declaration
 -- : `int_value' datasource_declaration
 -- : `int_value' string_declaration
 -- : `int_value' datetime_declaration
 -- : `string_value' variable_declaration_segment_list
 -- : `int_value' subscript_placeholder

 <declaration>  ->   <query declaration>

    |  <string declaration>

    |  <datasource declaration>

    |  <datetime declaration>

 <variable declaration segment list>  ->  VARIABLE_TEXT_SEGMENT

    |  <variable declaration segment list>  VARIABLE_TEXT_SEGMENT

    |  <variable_declaration_segment_list>  <subscript_placeholder>

 <subscript_placeholder>  ->  OPEN_BRACKET CLOSE_BRACKET

 <query_declaration>  ->  QUERY_DECLARATOR
<variable_declaration_segment_list>

 <datasource_declaration>  ->  DATASOURCE_DECLARATOR
<variable_declaration_segment_list>

 <string_declaration>  ->  STRING_DECLARATOR
<variable_declaration_segment_list>

 <datetime_declaration>  ->  DATETIME_DECLARATOR
<variable_declaration_segment_list>

12.11 Assignments
=================

 -- Tokens: `int_value' ASSIGN
 -- : `int_value' PLUS_ASSIGN
 -- : `int_value' MINUS_ASSIGN
 -- : `int_value' TIMES_ASSIGN
 -- : `int_value' DIVIDE_ASSIGN
 -- : `int_value' AND_ASSIGN
 -- : `int_value' OR_ASSIGN
 -- : `int_value' XOR_ASSIGN
 -- : `int_value' NOT_ASSIGN

 -- Non-terminal Symbols: `int_value' assignment
 -- : `int_value' negation_optional
 -- : `int_value' assign_or_plus_assign
 -- : `int_value' assignment_operator
 -- : `pointer_value' query_assignment
 -- : `pointer_value' datasource_assignment
 -- : `string_value' string_assignment
 -- : `pointer_value' datetime_assignment

 <negation_optional>  ->  EMPTY

    |  NOT

 <match_term_optional>  ->  EMPTY

    |  CONTAINS

    |  FREETEXT

    |  LIKE

 <assign_or_plus_assign>  ->  ASSIGN

    |  PLUS_ASSIGN

 <assignment_operator>  ->  ASSIGN

    |  PLUS_ASSIGN

    |  OR_ASSIGN

    |  XOR_ASSIGN

    |  NOT_ASSIGN

 <assignment>  ->  <query_assignment>

    |  <datasource_assignment>

    |  <string_assignment>

    |  <datetime_assignment>

 <field_specifier>  ->  <field_designator>  <field_qualifier_list>

 <field_designator>  ->  ACCESS_NUMBER

    |  AUTHOR

    |  BIBLIOGRAPHIC_TYPE

    |  CALL_NUMBER

    |  CLASSIFICATION

    |  COMPANY

    |  CONTENT_SUMMARY

    |  CONTRIBUTOR

    |  CREATOR

    |  DATABASE_PROVIDER

    |  DESCRIPTION

    |  EXEMPLAR_PRODUCTION_NUMBER

    |  IDENTIFIER

    |  INSTITUTION

    |  LANGUAGE

    |  MAIN_CANONICAL_TITLE

    |  PERMUTATION_PATTERN

    |  PERSON

    |  PHYSICAL_DESCRIPTION

    |  PUBLISHER

    |  RECORD

    |  REMOTE_ACCESS

    |  RIGHTS

    |  SOURCE

    |  SUBJECT

    |  SUPERORDINATE_ENTITIES

    |  TITLE

    |  TYPE

 <field_qualifier_list>  ->  EMPTY

 <field_qualifier_list>  ->  <field_qualifier_list>  PERIOD
<field_qualifier>

 <field_qualifier>  ->  ID

    |  SURNAME

    |  GIVEN_NAME

    |  PREFIX

    |  ELN_ORIGINAL_ENTRY

    |  ELN_MOST_RECENT_CHANGE

    |  ELN_STATUS_CHANGE

    |  IDENTIFICATION_NUMBER

    |  DATE_ORIGINAL_ENTRY

    |  DATE_MOST_RECENT_CHANGE

    |  DATE_STATUS_CHANGE

    |  SOURCE_ID

    |  YEAR_APPEARANCE_BEGIN

    |  YEAR_APPEARANCE_END

    |  YEAR_APPEARANCE_RAK_WB

    |  YEAR_APPEARANCE_ORIGINAL

 <datasource_assignment>  ->  <datasource_variable>  ASSIGN
<datasource_expression>

    |  <datasource_variable>  ASSIGN DBT

    |  <datasource_variable>  ASSIGN GBV_GVK

    |  <datasource_variable>  ASSIGN TIMMS

    |  <datasource_variable>  ASSIGN DATASOURCE_FILE

 <string_assignment>  ->  <string_variable>  ASSIGN
<string_expression>

    |  <string_variable>  ASSIGN TEX <query_expression>

    |  <string_variable>  ASSIGN SQL OAI <query_expression>

    |  <string_variable>  ASSIGN SQL PICA <query_expression>

 <datetime_assignment>  ->  <datetime_variable>  ASSIGN
<datetime_expression>

    |  <datetime_variable>  COLON <datetime_specifier>
<assignment_operator>  INTEGER

    |  <datetime_variable>  COLON <datetime_specifier>
<assignment_operator>  FLOAT

 <datetime_specifier>  ->  YEAR_RANGE_BEGIN

    |  YEAR_RANGE_END

    |  YEAR

    |  MONTH

    |  DAY

    |  HOUR

    |  MINUTE

    |  SECOND

 <query_assignment>  ->  <query_variable>  ASSIGN
<query_expression>

    |  <query_variable>  <assign_or_plus_assign>  LOCAL DATABASE

    |  <query_variable>  <assign_or_plus_assign>  LOCAL SERVER

    |  <query_variable>  <assign_or_plus_assign>  REMOTE DATABASE

    |  <query_variable>  <assign_or_plus_assign>  REMOTE SERVER

    |  <query_variable>  COLON <field_specifier>
<assignment_operator>

               <negation_optional>  <match_term_optional>
<query_expression>

    |  <query_variable>  COLON <field_specifier>
<assignment_operator>

               <negation_optional>  <match_term_optional>
<datetime_expression>

    |  <query_variable>  COLON <field_specifier>
<assignment_operator>

               <negation_optional>  <match_term_optional>
<query_expression>

    |  <query_variable>  COLON <field_specifier>
<assignment_operator>

               <negation_optional>
 <match_term_optional>
<datetime_expression>

12.12 Commands
==============

 -- Non-terminal Symbols: `int_value' command

 <message_or_errmessage>  ->  MESSAGE

    |  ERRMESSAGE

 <command>  ->  <message_or_errmessage>  STRING

    |  PAUSE

    |  SHOW <query_variable>

    |  SHOW <datasource_variable>

    |  SHOW <datetime_variable>

    |  SHOW <string_expression>

    |  OUTPUT TEX <string_expression>

12.13 Datasource Expressions
============================

 -- Tokens: `int_value' DATASOURCE_FILE
 -- : `int_value' LOCAL
 -- : `int_value' REMOTE
 -- : `int_value' DATABASE
 -- : `int_value' SERVER
 -- : `int_value' DBT
 -- : `int_value' GBV_GVK
 -- : `int_value' TIMMS

 -- Non-terminal Symbols: `pointer_value' datasource_primary
 -- : `pointer_value' datasource_secondary
 -- : `pointer_value' datasource_tertiary
 -- : `pointer_value' datasource_expression

 <datasource_primary>  ->  <datasource_variable>

    |  OPEN_PARENTHESIS datasource_expression CLOSE_PARENTHESIS

 <datasource_secondary>  ->  datasource_primary

 <datasource_tertiary>   ->  <datasource_secondary>

 <datasource_expression>  ->  <datasource_tertiary>

12.14 Datetime Expressions
==========================

 -- Tokens: `int_value' YEAR_RANGE_BEGIN
 -- : `int_value' YEAR_RANGE_END
 -- : `int_value' YEAR
 -- : `int_value' MONTH
 -- : `int_value' DAY
 -- : `int_value' HOUR
 -- : `int_value' MINUTE
 -- : `int_value' SECOND

 -- Non-terminal Symbols: `int_value' datetime_specifier
 -- : `pointer_value' datetime_primary
 -- : `pointer_value' datetime_secondary
 -- : `pointer_value' datetime_tertiary
 -- : `pointer_value' datetime_expression
 -- : `pointer_value' datetime_element_list

 <datetime_primary>  ->  <datetime_variable>

    |  OPEN_PARENTHESIS <datetime_expression>  CLOSE_PARENTHESIS

    |  <datetime_element_list>

 <datetime_secondary>  ->  <datetime_primary>

 <datetime_tertiary>  ->  <datetime_secondary>

 <datetime_expression>  ->  <datetime_tertiary>

 <datetime_element_list>  ->  INTEGER COLON

    |  FLOAT COLON

    |  <datetime_element_list>  INTEGER COLON

    |  <datetime_element_list>  FLOAT COLON

12.15 Query Expressions
=======================

 -- Tokens: `int_value' CONTAINS
 -- : `int_value' FREETEXT
 -- : `int_value' LIKE

 -- Non-terminal Symbols: `int_value' match_term_optional
 -- : `pointer_value' query_primary
 -- : `pointer_value' query_secondary
 -- : `pointer_value' query_tertiary
 -- : `pointer_value' query_expression

 <query_primary>  ->  <query_variable>

    |  OPEN_PARENTHESIS <query_expression>  CLOSE_PARENTHESIS

    |  STRING

    |  INTEGER

    |  FLOAT

 <query_secondary>  ->  <query_primary>

    |  <query_secondary>  <and_or_and_not>  <query_primary>

 <query_tertiary>  ->  <query_secondary>

    |  <query_tertiary>  <xor_or_xor_not>  <query_secondary>

 <query_expression>  ->  <query_tertiary>

    |  <query_expression>  <or_or_or_not>  <query_tertiary>

 <and_or_and_not>  ->  AND

    |  AND_NOT

 <or_or_or_not>  ->  OR

    |  OR_NOT

 <xor_or_xor_not>  ->  XOR

    |  ->  XOR_NOT

12.16 String Expressions
========================

 -- Tokens: `int_value' OAI
 -- : `int_value' PICA
 -- : `int_value' TEX
 -- : `int_value' SQL

 -- Non-terminal Symbols: `string_value' string_primary
 -- : `string_value' string_secondary
 -- : `string_value' string_tertiary
 -- : `string_value' string_expression

 string_primary ->  string_variable
 string_primary ->  STRING
string_primary ->  OPEN_PARENTHESIS string_expression
CLOSE_PARENTHESIS
 string_secondary ->  string_primary
string_tertiary ->  string_secondary
 string_expression ->
string_tertiary
 <string_primary>  ->  <string_variable>

    |  STRING

    |  OPEN_PARENTHESIS <string_expression>  CLOSE_PARENTHESIS

 <string_secondary>  ->  <string_primary>

 <string_tertiary>  ->  <string_secondary>

 <string_expression>  ->  <string_tertiary>

12.17 Output
============

 -- Tokens: `int_value' OUTPUT
 -- : `int_value' MESSAGE
 -- : `int_value' ERRMESSAGE
 -- : `int_value' PAUSE
 -- : `int_value' SHOW

 -- Non-terminal Symbols: `int_value' message_or_errmessage

12.18 Database Tables and Columns
=================================

12.18.1 General
---------------

 -- Tokens: `int_value' ID
 -- : `int_value' ELN_ORIGINAL_ENTRY
 -- : `int_value' ELN_MOST_RECENT_CHANGE
 -- : `int_value' ELN_STATUS_CHANGE
 -- : `int_value' IDENTIFICATION_NUMBER
 -- : `int_value' DATE_ORIGINAL_ENTRY
 -- : `int_value' DATE_MOST_RECENT_CHANGE
 -- : `int_value' DATE_STATUS_CHANGE
 -- : `int_value' SOURCE_ID
 -- : `int_value' YEAR_APPEARANCE_BEGIN
 -- : `int_value' YEAR_APPEARANCE_END
 -- : `int_value' YEAR_APPEARANCE_RAK_WB
 -- : `int_value' YEAR_APPEARANCE_ORIGINAL

 -- Non-terminal Symbols: `pointer_value' field_specifier
 -- : `int_value' field_designator
 -- : `pointer_value' field_qualifier_list
 -- : `int_value' field_qualifier

12.18.2 Names
-------------

 -- Tokens: `int_value' GIVEN_NAME
 -- : `int_value' PREFIX
 -- : `int_value' SURNAME

12.18.3 Access_Number
---------------------

 -- Tokens: `int_value' ACCESS_NUMBER

12.18.4 Author
--------------

 -- Tokens: `int_value' AUTHOR
 -- : `int_value' AUTHOR_GIVEN_NAME
 -- : `int_value' AUTHOR_PREFIX
 -- : `int_value' AUTHOR_SURNAME

12.18.5 Bibliographic_Type
--------------------------

 -- Tokens: `int_value' BIBLIOGRAPHIC_TYPE

12.18.6 Call_Number
-------------------

 -- Tokens: `int_value' CALL_NUMBER

12.18.7 Classification
----------------------

 -- Tokens: `int_value' CLASSIFICATION

12.18.8 Company
---------------

 -- Tokens: `int_value' COMPANY

12.18.9 Content_Summary
-----------------------

 -- Tokens: `int_value' CONTENT_SUMMARY

12.18.10 Contributor
--------------------

 -- Tokens: `int_value' CONTRIBUTOR
 -- : `int_value' CONTRIBUTOR_GIVEN_NAME
 -- : `int_value' CONTRIBUTOR_PREFIX
 -- : `int_value' CONTRIBUTOR_SURNAME

12.18.11 Creator
----------------

 -- Tokens: `int_value' CREATOR

12.18.12 Database_Provider
--------------------------

 -- Tokens: `int_value' DATABASE_PROVIDER

12.18.13 Description
--------------------

 -- Tokens: `int_value' DESCRIPTION

12.18.14 Exemplar_Production_Number
-----------------------------------

 -- Tokens: `int_value' EXEMPLAR_PRODUCTION_NUMBER

12.18.15 Identifier
-------------------

 -- Tokens: `int_value' IDENTIFIER

12.18.16 Institution
--------------------

 -- Tokens: `int_value' INSTITUTION

12.18.17 Language
-----------------

 -- Tokens: `int_value' LANGUAGE

12.18.18 Main_Canonical_Title
-----------------------------

 -- Tokens: `int_value' MAIN_CANONICAL_TITLE

12.18.19 Permutation_Pattern
----------------------------

 -- Tokens: `int_value' PERMUTATION_PATTERN

12.18.20 Person
---------------

 -- Tokens: `int_value' PERSON

12.18.21 Physical_Description
-----------------------------

 -- Tokens: `int_value' PHYSICAL_DESCRIPTION

12.18.22 Publisher
------------------

 -- Tokens: `int_value' PUBLISHER

12.18.23 Records
----------------

 -- Tokens: `int_value' RECORD

12.18.24 Remote_Access
----------------------

 -- Tokens: `int_value' REMOTE_ACCESS

12.18.25 Rights
---------------

 -- Tokens: `int_value' RIGHTS

12.18.26 Source
---------------

 -- Tokens: `int_value' SOURCE

12.18.27 Subject
----------------

 -- Tokens: `int_value' SUBJECT

12.18.28 Superordinate_Entities
-------------------------------

 -- Tokens: `int_value' SUPERORDINATE_ENTITIES

12.18.29 Title
--------------

 -- Tokens: `int_value' TITLE

12.18.30 Type
-------------

 -- Tokens: `int_value' TYPE

Glossary
********

Abbreviations
*************

Bibliography
************

Appendix A GNU Free Documentation License
*****************************************

                       Version 1.2, November 2002

     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

  0. PREAMBLE

 The purpose of this License is to make a manual,
     textbook, or other
 functional and useful document "free" in the
     sense of freedom: to
 assure everyone the effective freedom to
     copy and redistribute it,
 with or without modifying it, either
     commercially or noncommercially.
 Secondarily, this License
     preserves for the author and publisher a way
 to get credit for
     their work, while not being considered responsible
 for
     modifications made by others.

 This License is a kind of
     "copyleft", which means that derivative
 works of the document
     must themselves be free in the same sense.  It
 complements the
     GNU General Public License, which is a copyleft
 license designed
     for free software.

 We have designed this License in order to
     use it for manuals for free
 software, because free software
     needs free documentation: a free
 program should come with
     manuals providing the same freedoms that the
 software does.  But
     this License is not limited to software manuals;
 it can be used
     for any textual work, regardless of subject matter or
 whether it
     is published as a printed book.  We recommend this License
     principally for works whose purpose is instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

 This License applies to any
     manual or other work, in any medium, that
 contains a notice
     placed by the copyright holder saying it can be
 distributed
     under the terms of this License.  Such a notice grants a
     world-wide, royalty-free license, unlimited in duration, to use
     that
 work under the conditions stated herein.  The "Document",
     below,
 refers to any such manual or work.  Any member of the
     public is a
 licensee, and is addressed as "you".  You accept the
     license if you
 copy, modify or distribute the work in a way
     requiring permission
 under copyright law.

 A "Modified
     Version" of the Document means any work containing the
 Document
     or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

 A
     "Secondary Section" is a named appendix or a front-matter section
     of the Document that deals exclusively with the relationship of
     the
 publishers or authors of the Document to the Document's
     overall
 subject (or to related matters) and contains nothing
     that could fall
 directly within that overall subject.  (Thus, if
     the Document is in
 part a textbook of mathematics, a Secondary
     Section may not explain
 any mathematics.)  The relationship
     could be a matter of historical
 connection with the subject or
     with related matters, or of legal,
 commercial, philosophical,
     ethical or political position regarding
 them.

 The
     "Invariant Sections" are certain Secondary Sections whose titles
     are designated, as being those of Invariant Sections, in the
     notice
 that says that the Document is released under this
     License.  If a
 section does not fit the above definition of
     Secondary then it is not
 allowed to be designated as Invariant.
     The Document may contain zero
 Invariant Sections.  If the
     Document does not identify any Invariant
 Sections then there are
     none.

 The "Cover Texts" are certain short passages of text
     that are listed,
 as Front-Cover Texts or Back-Cover Texts, in
     the notice that says that
 the Document is released under this
     License.  A Front-Cover Text may
 be at most 5 words, and a
     Back-Cover Text may be at most 25 words.

 A "Transparent" copy
     of the Document means a machine-readable copy,
 represented in a
     format whose specification is available to the
 general public,
     that is suitable for revising the document
 straightforwardly
     with generic text editors or (for images composed of
 pixels)
     generic paint programs or (for drawings) some widely available
     drawing editor, and that is suitable for input to text formatters
     or
 for automatic translation to a variety of formats suitable
     for input
 to text formatters.  A copy made in an otherwise
     Transparent file
 format whose markup, or absence of markup, has
     been arranged to thwart
 or discourage subsequent modification by
     readers is not Transparent.
 An image format is not Transparent
     if used for any substantial amount
 of text.  A copy that is not
     "Transparent" is called "Opaque".

 Examples of suitable
     formats for Transparent copies include plain
 ASCII without
     markup, Texinfo input format, LaTeX input
 format, SGML or XML
     using a publicly available
 DTD, and standard-conforming simple
     HTML,
 PostScript or PDF designed for human modification.
     Examples
 of transparent image formats include PNG, XCF and
     JPG.  Opaque formats include proprietary formats that can be
     read and edited only by proprietary word processors, SGML or
 XML
     for which the DTD and/or processing tools are
 not generally
     available, and the machine-generated HTML,
 PostScript or PDF
     produced by some word processors for
 output purposes only.

     The "Title Page" means, for a printed book, the title page
     itself,
 plus such following pages as are needed to hold,
     legibly, the material
 this License requires to appear in the
     title page.  For works in
 formats which do not have any title
     page as such, "Title Page" means
 the text near the most
     prominent appearance of the work's title,
 preceding the
     beginning of the body of the text.

 A section "Entitled XYZ"
     means a named subunit of the Document whose
 title either is
     precisely XYZ or contains XYZ in parentheses following
 text that
     translates XYZ in another language.  (Here XYZ stands for a
     specific section name mentioned below, such as
     "Acknowledgements",
 "Dedications", "Endorsements", or
     "History".)  To "Preserve the Title"
 of such a section when you
     modify the Document means that it remains a
 section "Entitled
     XYZ" according to this definition.

 The Document may include
     Warranty Disclaimers next to the notice which
 states that this
     License applies to the Document.  These Warranty
 Disclaimers are
     considered to be included by reference in this
 License, but only
     as regards disclaiming warranties: any other
 implication that
     these Warranty Disclaimers may have is void and has
 no effect on
     the meaning of this License.

  2. VERBATIM COPYING

 You may copy and distribute the Document in
     any medium, either
 commercially or noncommercially, provided
     that this License, the
 copyright notices, and the license notice
     saying this License applies
 to the Document are reproduced in
     all copies, and that you add no other
 conditions whatsoever to
     those of this License.  You may not use
 technical measures to
     obstruct or control the reading or further
 copying of the copies
     you make or distribute.  However, you may accept
 compensation in
     exchange for copies.  If you distribute a large enough
 number of
     copies you must also follow the conditions in section 3.

 You
     may also lend copies, under the same conditions stated above, and
     you may publicly display copies.

  3. COPYING IN QUANTITY

 If you publish printed copies (or copies
     in media that commonly have
 printed covers) of the Document,
     numbering more than 100, and the
 Document's license notice
     requires Cover Texts, you must enclose the
 copies in covers that
     carry, clearly and legibly, all these Cover
 Texts: Front-Cover
     Texts on the front cover, and Back-Cover Texts on
 the back
     cover.  Both covers must also clearly and legibly identify
 you
     as the publisher of these copies.  The front cover must present
     the full title with all words of the title equally prominent and
     visible.  You may add other material on the covers in addition.
     Copying with changes limited to the covers, as long as they
     preserve
 the title of the Document and satisfy these conditions,
     can be treated
 as verbatim copying in other respects.

 If
     the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto
     adjacent
 pages.

 If you publish or distribute Opaque copies
     of the Document numbering
 more than 100, you must either include
     a machine-readable Transparent
 copy along with each Opaque copy,
     or state in or with each Opaque copy
 a computer-network location
     from which the general network-using
 public has access to
     download using public-standard network protocols
 a complete
     Transparent copy of the Document, free of added material.
 If you
     use the latter option, you must take reasonably prudent steps,
     when you begin distribution of Opaque copies in quantity, to
     ensure
 that this Transparent copy will remain thus accessible at
     the stated
 location until at least one year after the last time
     you distribute an
 Opaque copy (directly or through your agents
     or retailers) of that
 edition to the public.

 It is
     requested, but not required, that you contact the authors of the
     Document well before redistributing any large number of copies, to
     give
 them a chance to provide you with an updated version of the
     Document.

  4. MODIFICATIONS

 You may copy and distribute a Modified Version
     of the Document under
 the conditions of sections 2 and 3 above,
     provided that you release
 the Modified Version under precisely
     this License, with the Modified
 Version filling the role of the
     Document, thus licensing distribution
 and modification of the
     Modified Version to whoever possesses a copy
 of it.  In
     addition, you must do these things in the Modified Version:

       A. Use in the Title Page (and on the covers, if any) a title
          distinct
 from that of the Document, and from those of
          previous versions
 (which should, if there were any, be
          listed in the History section
 of the Document).  You may
          use the same title as a previous version
 if the original
          publisher of that version gives permission.

       B. List on the Title Page, as authors, one or more persons or
          entities
 responsible for authorship of the modifications in
          the Modified
 Version, together with at least five of the
          principal authors of the
 Document (all of its principal
          authors, if it has fewer than five),
 unless they release
          you from this requirement.

       C. State on the Title page the name of the publisher of the
          Modified Version, as the publisher.

       D. Preserve all the copyright notices of the Document.

       E. Add an appropriate copyright notice for your modifications
          adjacent to the other copyright notices.

       F. Include, immediately after the copyright notices, a license
          notice
 giving the public permission to use the Modified
          Version under the
 terms of this License, in the form shown
          in the Addendum below.

       G. Preserve in that license notice the full lists of Invariant
          Sections
 and required Cover Texts given in the Document's
          license notice.

       H. Include an unaltered copy of this License.

       I. Preserve the section Entitled "History", Preserve its Title,
          and add
 to it an item stating at least the title, year, new
          authors, and
 publisher of the Modified Version as given on
          the Title Page.  If
 there is no section Entitled "History"
          in the Document, create one
 stating the title, year,
          authors, and publisher of the Document as
 given on its
          Title Page, then add an item describing the Modified
          Version as stated in the previous sentence.

       J. Preserve the network location, if any, given in the Document
          for
 public access to a Transparent copy of the Document,
          and likewise
 the network locations given in the Document
          for previous versions
 it was based on.  These may be placed
          in the "History" section.
 You may omit a network location
          for a work that was published at
 least four years before
          the Document itself, or if the original
 publisher of the
          version it refers to gives permission.

       K. For any section Entitled "Acknowledgements" or "Dedications",
          Preserve
 the Title of the section, and preserve in the
          section all the
 substance and tone of each of the
          contributor acknowledgements and/or
 dedications given
          therein.

       L. Preserve all the Invariant Sections of the Document,
          unaltered in their text and in their titles.  Section
          numbers
 or the equivalent are not considered part of the
          section titles.

       M. Delete any section Entitled "Endorsements".  Such a section
          may not be included in the Modified Version.

       N. Do not retitle any existing section to be Entitled
          "Endorsements" or
 to conflict in title with any Invariant
          Section.

       O. Preserve any Warranty Disclaimers.

 If the Modified Version includes new front-matter sections
     or
 appendices that qualify as Secondary Sections and contain no
     material
 copied from the Document, you may at your option
     designate some or all
 of these sections as invariant.  To do
     this, add their titles to the
 list of Invariant Sections in the
     Modified Version's license notice.
 These titles must be distinct
     from any other section titles.

 You may add a section Entitled
     "Endorsements", provided it contains
 nothing but endorsements of
     your Modified Version by various
 parties--for example,
     statements of peer review or that the text has
 been approved by
     an organization as the authoritative definition of a
 standard.

 You may add a passage of up to five words as a Front-Cover
     Text, and a
 passage of up to 25 words as a Back-Cover Text, to
     the end of the list
 of Cover Texts in the Modified Version.
     Only one passage of
 Front-Cover Text and one of Back-Cover Text
     may be added by (or
 through arrangements made by) any one
     entity.  If the Document already
 includes a cover text for the
     same cover, previously added by you or
 by arrangement made by
     the same entity you are acting on behalf of,
 you may not add
     another; but you may replace the old one, on explicit
 permission
     from the previous publisher that added the old one.

 The
     author(s) and publisher(s) of the Document do not by this License
     give permission to use their names for publicity for or to assert
     or
 imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

 You may combine the Document with other
     documents released under this
 License, under the terms defined
     in section 4 above for modified
 versions, provided that you
     include in the combination all of the
 Invariant Sections of all
     of the original documents, unmodified, and
 list them all as
     Invariant Sections of your combined work in its
 license notice,
     and that you preserve all their Warranty Disclaimers.

 The
     combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a
     single
 copy.  If there are multiple Invariant Sections with the
     same name but
 different contents, make the title of each such
     section unique by
 adding at the end of it, in parentheses, the
     name of the original
 author or publisher of that section if
     known, or else a unique number.
 Make the same adjustment to the
     section titles in the list of
 Invariant Sections in the license
     notice of the combined work.

 In the combination, you must
     combine any sections Entitled "History"
 in the various original
     documents, forming one section Entitled
 "History"; likewise
     combine any sections Entitled "Acknowledgements",
 and any
     sections Entitled "Dedications".  You must delete all
 sections
     Entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

 You may make a collection consisting
     of the Document and other documents
 released under this License,
     and replace the individual copies of this
 License in the various
     documents with a single copy that is included in
 the collection,
     provided that you follow the rules of this License for
 verbatim
     copying of each of the documents in all other respects.

 You
     may extract a single document from such a collection, and
     distribute
 it individually under this License, provided you
     insert a copy of this
 License into the extracted document, and
     follow this License in all
 other respects regarding verbatim
     copying of that document.

  7. AGGREGATION WITH INDEPENDENT WORKS

 A compilation of the
     Document or its derivatives with other separate
 and independent
     documents or works, in or on a volume of a storage or
     distribution medium, is called an "aggregate" if the copyright
     resulting from the compilation is not used to limit the legal
     rights
 of the compilation's users beyond what the individual
     works permit.
 When the Document is included in an aggregate,
     this License does not
 apply to the other works in the aggregate
     which are not themselves
 derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half
     of
 the entire aggregate, the Document's Cover Texts may be
     placed on
 covers that bracket the Document within the aggregate,
     or the
 electronic equivalent of covers if the Document is in
     electronic form.
 Otherwise they must appear on printed covers
     that bracket the whole
 aggregate.

  8. TRANSLATION

 Translation is considered a kind of modification,
     so you may
 distribute translations of the Document under the
     terms of section 4.
 Replacing Invariant Sections with
     translations requires special
 permission from their copyright
     holders, but you may include
 translations of some or all
     Invariant Sections in addition to the
 original versions of these
     Invariant Sections.  You may include a
 translation of this
     License, and all the license notices in the
 Document, and any
     Warranty Disclaimers, provided that you also include
 the
     original English version of this License and the original
     versions
 of those notices and disclaimers.  In case of a
     disagreement between
 the translation and the original version of
     this License or a notice
 or disclaimer, the original version
     will prevail.

 If a section in the Document is Entitled
     "Acknowledgements",
 "Dedications", or "History", the requirement
     (section 4) to Preserve
 its Title (section 1) will typically
     require changing the actual
 title.

  9. TERMINATION

 You may not copy, modify, sublicense, or
     distribute the Document except
 as expressly provided for under
     this License.  Any other attempt to
 copy, modify, sublicense or
     distribute the Document 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.

 10. FUTURE REVISIONS OF THIS LICENSE

 The Free Software Foundation
     may publish new, revised versions
 of the GNU Free Documentation
     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.  See
     `http://www.gnu.org/copyleft/'.

 Each version of the License
     is given a distinguishing version number.
 If the Document
     specifies that a particular numbered version of this
 License "or
     any later version" applies to it, you have the option of
     following the terms and conditions either of that specified
     version or
 of any later version that has been published (not as
     a draft) by the
 Free Software Foundation.  If the Document does
     not specify a version
 number of this License, you may choose any
     version ever published (not
 as a draft) by the Free Software
     Foundation.

A.0.1 ADDENDUM: How to use this License for your documents
----------------------------------------------------------

 To use this License in a document you have written, include a copy
of
 the License in the document and put the following copyright and
license notices just after the title page:

       Copyright (C)  YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.2
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

 If you have Invariant Sections, Front-Cover Texts and
Back-Cover Texts,
 replace the "with...Texts." line with this:

         with the Invariant Sections being LIST THEIR TITLES, with
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
         being LIST.

 If you have Invariant Sections without Cover Texts, or some
other
 combination of the three, merge those two alternatives to suit
the
 situation.

 If your document contains nontrivial examples of
program code, we
 recommend releasing these examples in parallel under
your choice of
 free software license, such as the GNU General Public
License,
 to permit their use in free software.

Appendix B GNU General Public License
*************************************

                         Version 2, June 1991

     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

Preamble
========

   The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

   When we speak of free software, we are
referring to freedom, 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 or use pieces of it
 in new free programs; and that you
know you can do these things.

   To protect your rights, we need to
make restrictions that forbid
 anyone to deny you these rights or to
ask you to surrender the rights.
 These restrictions translate to
certain responsibilities for you if you
 distribute copies of the
software, or if you modify it.

   For example, if you distribute
copies of such a program, whether
 gratis or for a fee, you must give
the recipients all the rights that
 you have.  You must make sure that
they, too, receive or can get the
 source code.  And you must show
them these terms so they know their
 rights.

   We protect your
rights with two steps: (1) copyright the software, and
 (2) offer you
this license which gives you legal permission to copy,
 distribute
and/or modify the software.

   Also, for each author's protection
and ours, we want to make certain
 that everyone understands that
there is no warranty for this free
 software.  If the software is
modified by someone else and passed on, we
 want its recipients to
know that what they have is not the original, so
 that any problems
introduced by others will not reflect on the original
 authors'
reputations.

   Finally, any free program is threatened constantly
by software
 patents.  We wish to avoid the danger that redistributors
of a free
 program will individually obtain patent licenses, in effect
making the
 program proprietary.  To prevent this, we have made it
clear that any
 patent must be licensed for everyone's free use or not
licensed at all.

   The precise terms and conditions for copying,
distribution and
 modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
===============================================================

  0. This License applies to any program or other work which contains
     a notice placed by the copyright holder saying it may be
     distributed
 under the terms of this General Public License.  The
     "Program", below,
 refers to any such program or work, and a
     "work based on the Program"
 means either the Program or any
     derivative work under copyright law:
 that is to say, a work
     containing the Program or a portion of it,
 either verbatim or
     with modifications and/or translated into another
 language.
     (Hereinafter, translation is included without limitation in
 the
     term "modification".)  Each licensee is addressed as "you".

     Activities other than copying, distribution and modification are
     not
 covered by this License; they are outside its scope.  The
     act of
 running the Program is not restricted, and the output
     from the Program
 is covered only if its contents constitute a
     work based on the
 Program (independent of having been made by
     running the Program).
 Whether that is true depends on what the
     Program does.

  1. You may copy and distribute verbatim copies of the Program's
     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 give any other recipients of the
     Program a copy of this License
 along with the Program.

 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 Program or any portion
     of it, thus forming a work based on the Program, 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. You must cause the modified files to carry prominent notices
          stating that you changed the files and the date of any
          change.

       b. You must cause any work that you distribute or publish, that
          in
 whole or in part contains or is derived from the Program
          or any
 part thereof, to be licensed as a whole at no charge
          to all third
 parties under the terms of this License.

       c. If the modified program normally reads commands
          interactively
 when run, you must cause it, when started
          running for such
 interactive use in the most ordinary way,
          to print or display an
 announcement including an
          appropriate copyright notice and a
 notice that there is no
          warranty (or else, saying that you provide
 a warranty) and
          that users may redistribute the program under
 these
          conditions, and telling the user how to view a copy of this
          License.  (Exception: if the Program itself is interactive
          but
 does not normally print such an announcement, your work
          based on
 the Program is not required to print an
          announcement.)

 These requirements apply to the modified work as a whole.
     If
 identifiable sections of that work are not derived from the
     Program,
 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 Program, 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
     Program.

 In addition, mere aggregation of another work not
     based on the Program
 with the Program (or with a work based on
     the Program) on a volume of
 a storage or distribution medium
     does not bring the other work under
 the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
     under Section 2) in object code or executable form under the terms
     of
 Sections 1 and 2 above provided that you also do one of the
     following:

       a. 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; or,

       b. Accompany it with a written offer, valid for at least three
          years, to give any third party, for a charge no more than
          your
 cost of physically performing source distribution, a
          complete
 machine-readable copy of the corresponding source
          code, to be
 distributed under the terms of Sections 1 and 2
          above on a medium
 customarily used for software
          interchange; or,

       c. Accompany it with the information you received as to the
          offer
 to distribute corresponding source code.  (This
          alternative is
 allowed only for noncommercial distribution
          and only if you
 received the program in object code or
          executable form with such
 an offer, in accord with
          Subsection b above.)

 The source code for a work means the preferred form of the
     work for
 making modifications to it.  For an executable work,
     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 executable.  However, as a
 special exception, the source
     code 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.

 If distribution of executable or
     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 counts as
 distribution of the source code,
     even though third parties are not
 compelled to copy the source
     along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense or distribute the Program
     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.

  5. 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 Program or its derivative works.  These
     actions are
 prohibited by law if you do not accept this License.
     Therefore, by
 modifying or distributing the Program (or any
     work based on the
 Program), you indicate your acceptance of this
     License to do so, and
 all its terms and conditions for copying,
     distributing or modifying
 the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
     Program), the recipient automatically receives a license from the
     original licensor to copy, distribute or modify the Program
     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 to
 this License.

  7. 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 Program at all.  For example, if a patent
 license
     would not permit royalty-free redistribution of the Program 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 Program.

 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.

  8. If the distribution and/or use of the Program is restricted in
     certain countries either by patents or by copyrighted interfaces,
     the
 original copyright holder who places the Program 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.

  9. The Free Software Foundation may publish revised and/or new
     versions
 of the 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
     Program
 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
     Program does not specify a version number of
 this License, you
     may choose any version ever published by the Free Software
     Foundation.

 10. If you wish to incorporate parts of the Program into other free
     programs whose distribution conditions are different, 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

 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
     WARRANTY
 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
     LAW.  EXCEPT WHEN
 OTHERWISE STATED IN WRITING THE COPYRIGHT
     HOLDERS AND/OR OTHER PARTIES
 PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU.  SHOULD THE
     PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
     SERVICING,
 REPAIR OR CORRECTION.

 12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH
     ANY OTHER
 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
     ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.

                       END OF TERMS AND CONDITIONS

Appendix: How to Apply These Terms to Your New Programs
=======================================================

   If you develop a new program, and you want it to be of the
greatest
 possible use to the public, the best way to achieve this is
to make it
 free software which everyone can redistribute and change
under these terms.

   To do so, attach the following notices to the
program.  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 PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
     Copyright (C) YYYY  NAME OF AUTHOR

     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.

     This program 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 General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

 Also add information on how to contact you by electronic and
paper mail.

 If the program is interactive, make it output a short
notice like this
 when it starts in an interactive mode:

     Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.

 The hypothetical commands `show w' and `show c' should show
 the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than `show w' and
`show c'; they could even be mouse-clicks or menu items--whatever
suits your program.

 You should also get your employer (if you work
as a programmer) or your
 school, if any, to sign a "copyright
disclaimer" for the program, if
 necessary.  Here is a sample; alter
the names:

     Yoyodyne, Inc., hereby disclaims all copyright interest in the program
     `Gnomovision' (which makes passes at compilers) written by James Hacker.

     SIGNATURE OF TY COON, 1 April 1989
     Ty Coon, President of Vice

 This General Public License does not permit incorporating your
program into
 proprietary programs.  If your program is a subroutine
library, you may
 consider it more useful to permit linking
proprietary applications with the
 library.  If this is what you want
to do, use the GNU Lesser General
 Public License instead of this
License.