summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2012-07-01 15:02:09 +0200
committerBruno Haible <bruno@clisp.org>2012-07-01 15:40:30 +0200
commit95f922bb7ecdc4c198e50c8a1b756bddf8576aa5 (patch)
treea3776200e82912ad6fb215e7ca8a99b3cbf2f0a1
parent3641ce506224f63f47648ebd12ae02401ed1a9a6 (diff)
downloadgperf-95f922bb7ecdc4c198e50c8a1b756bddf8576aa5.tar.gz
Remove distributed built files from version control.
-rw-r--r--ChangeLog12
-rw-r--r--doc/.gitignore12
-rw-r--r--doc/gperf.dvibin134248 -> 0 bytes
-rw-r--r--doc/gperf.html2482
-rw-r--r--doc/gperf.info2096
-rw-r--r--doc/gperf.pdfbin243013 -> 0 bytes
-rw-r--r--doc/gperf.ps6348
-rw-r--r--doc/gperf_1.html825
-rw-r--r--doc/gperf_10.html135
-rw-r--r--doc/gperf_2.html49
-rw-r--r--doc/gperf_3.html42
-rw-r--r--doc/gperf_4.html99
-rw-r--r--doc/gperf_5.html720
-rw-r--r--doc/gperf_6.html502
-rw-r--r--doc/gperf_7.html57
-rw-r--r--doc/gperf_8.html46
-rw-r--r--doc/gperf_9.html96
-rw-r--r--doc/gperf_toc.html59
18 files changed, 24 insertions, 13556 deletions
diff --git a/ChangeLog b/ChangeLog
index 4989f91..ce3d948 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2012-07-01 Bruno Haible <bruno@clisp.org>
+ Remove distributed built files from version control.
+ * doc/.gitignore: New file.
+ * doc/gperf.info: Remove file.
+ * doc/gperf.dvi: Remove file.
+ * doc/gperf.ps: Remove file.
+ * doc/gperf.pdf: Remove file.
+ * doc/gperf.html: Remove file.
+ * doc/gperf_toc.html, doc/gperf_[0-9].html, doc/gperf_[0-9][0-9].html:
+ Remove files.
+
+2012-07-01 Bruno Haible <bruno@clisp.org>
+
Allow editor backup files in git checkouts.
* .gitignore: New file.
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 0000000..c84fac8
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,12 @@
+# Files generated by "make", using makeinfo, texi2html, perl
+# and therefore distributed (i.e. kept by "make distclean").
+# Same as DISTRIBUTED_BUILT_FILES in Makefile.in.
+/gperf.info
+/gperf.dvi
+/gperf.ps
+/gperf.pdf
+/gperf.html
+/gperf_toc.html
+/gperf_[0-9].html
+/gperf_[0-9][0-9].html
+
diff --git a/doc/gperf.dvi b/doc/gperf.dvi
deleted file mode 100644
index 46a0696..0000000
--- a/doc/gperf.dvi
+++ /dev/null
Binary files differ
diff --git a/doc/gperf.html b/doc/gperf.html
deleted file mode 100644
index bc964f9..0000000
--- a/doc/gperf.html
+++ /dev/null
@@ -1,2482 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator</TITLE>
-</HEAD>
-<BODY>
-<H1>User's Guide to <CODE>gperf</CODE> 3.1</H1>
-<H2>The GNU Perfect Hash Function Generator</H2>
-<H2>Edition 3.1, 20 December 2009</H2>
-<ADDRESS>Douglas C. Schmidt</ADDRESS>
-<ADDRESS>Bruno Haible</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="gperf.html#SEC1">GNU GENERAL PUBLIC LICENSE</A>
-<LI><A NAME="TOC2" HREF="gperf.html#SEC2">Contributors to GNU <CODE>gperf</CODE> Utility</A>
-<LI><A NAME="TOC3" HREF="gperf.html#SEC3">2 Introduction</A>
-<LI><A NAME="TOC4" HREF="gperf.html#SEC4">3 Static search structures and GNU <CODE>gperf</CODE></A>
-<LI><A NAME="TOC5" HREF="gperf.html#SEC5">4 High-Level Description of GNU <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC6" HREF="gperf.html#SEC6">4.1 Input Format to <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC7" HREF="gperf.html#SEC7">4.1.1 Declarations</A>
-<UL>
-<LI><A NAME="TOC8" HREF="gperf.html#SEC8">4.1.1.1 User-supplied <CODE>struct</CODE></A>
-<LI><A NAME="TOC9" HREF="gperf.html#SEC9">4.1.1.2 Gperf Declarations</A>
-<LI><A NAME="TOC10" HREF="gperf.html#SEC10">4.1.1.3 C Code Inclusion</A>
-</UL>
-<LI><A NAME="TOC11" HREF="gperf.html#SEC11">4.1.2 Format for Keyword Entries</A>
-<LI><A NAME="TOC12" HREF="gperf.html#SEC12">4.1.3 Including Additional C Functions</A>
-<LI><A NAME="TOC13" HREF="gperf.html#SEC13">4.1.4 Where to place directives for GNU <CODE>indent</CODE>.</A>
-</UL>
-<LI><A NAME="TOC14" HREF="gperf.html#SEC14">4.2 Output Format for Generated C Code with <CODE>gperf</CODE></A>
-<LI><A NAME="TOC15" HREF="gperf.html#SEC15">4.3 Use of NUL bytes</A>
-<LI><A NAME="TOC16" HREF="gperf.html#SEC16">4.4 The Copyright of the Output</A>
-</UL>
-<LI><A NAME="TOC17" HREF="gperf.html#SEC17">5 Invoking <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC18" HREF="gperf.html#SEC18">5.1 Specifying the Location of the Output File</A>
-<LI><A NAME="TOC19" HREF="gperf.html#SEC19">5.2 Options that affect Interpretation of the Input File</A>
-<LI><A NAME="TOC20" HREF="gperf.html#SEC20">5.3 Options to specify the Language for the Output Code</A>
-<LI><A NAME="TOC21" HREF="gperf.html#SEC21">5.4 Options for fine tuning Details in the Output Code</A>
-<LI><A NAME="TOC22" HREF="gperf.html#SEC22">5.5 Options for changing the Algorithms employed by <CODE>gperf</CODE></A>
-<LI><A NAME="TOC23" HREF="gperf.html#SEC23">5.6 Informative Output</A>
-</UL>
-<LI><A NAME="TOC24" HREF="gperf.html#SEC24">6 Known Bugs and Limitations with <CODE>gperf</CODE></A>
-<LI><A NAME="TOC25" HREF="gperf.html#SEC25">7 Things Still Left to Do</A>
-<LI><A NAME="TOC26" HREF="gperf.html#SEC26">8 Bibliography</A>
-<LI><A NAME="TOC27" HREF="gperf.html#SEC27">Concept Index</A>
-</UL>
-<P><HR><P>
-
-<P>
-Copyright (C) 1989-2009 Free Software Foundation, Inc.
-
-</P>
-
-<P>
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-</P>
-<P>
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled “GNU General Public License” is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
-</P>
-<P>
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled “GNU General Public License” may be
-included in a translation approved by the author instead of in the
-original English.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="gperf.html#TOC1">GNU GENERAL PUBLIC LICENSE</A></H1>
-<P>
-Version 3, 29 June 2007
-
-</P>
-
-
-<PRE>
-Copyright (C) 2007 Free Software Foundation, Inc. <A HREF="http://fsf.org/">http://fsf.org/</A>
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-</PRE>
-
-
-<H2>1.0 Preamble</H2>
-
-<P>
-The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-</P>
-<P>
-The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom
-to share and change all versions of a program--to make sure it remains
-free software for all its users. We, the Free Software Foundation,
-use the GNU General Public License for most of our software; it
-applies also to any other work released this way by its authors. You
-can apply it to your programs, too.
-
-</P>
-<P>
-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
-them 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.
-
-</P>
-<P>
-To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you
-have certain responsibilities if you distribute copies of the
-software, or if you modify it: responsibilities to respect the freedom
-of others.
-
-</P>
-<P>
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. 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.
-
-</P>
-<P>
-Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-</P>
-<P>
-For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-</P>
-<P>
-Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the
-manufacturer can do so. This is fundamentally incompatible with the
-aim of protecting users' freedom to change the software. The
-systematic pattern of such abuse occurs in the area of products for
-individuals to use, which is precisely where it is most unacceptable.
-Therefore, we have designed this version of the GPL to prohibit the
-practice for those products. If such problems arise substantially in
-other domains, we stand ready to extend this provision to those
-domains in future versions of the GPL, as needed to protect the
-freedom of users.
-
-</P>
-<P>
-Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish
-to avoid the special danger that patents applied to a free program
-could make it effectively proprietary. To prevent this, the GPL
-assures that patents cannot be used to render the program non-free.
-
-</P>
-<P>
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-</P>
-
-<H2>1.1 TERMS AND CONDITIONS</H2>
-
-
-<OL>
-<LI>Definitions.
-
-“This License” refers to version 3 of the GNU General Public License.
-
-“Copyright” also means copyright-like laws that apply to other kinds
-of works, such as semiconductor masks.
-
-“The Program” refers to any copyrightable work licensed under this
-License. Each licensee is addressed as “you”. “Licensees” and
-“recipients” may be individuals or organizations.
-
-To “modify” a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of
-an exact copy. The resulting work is called a “modified version” of
-the earlier work or a work “based on” the earlier work.
-
-A “covered work” means either the unmodified Program or a work based
-on the Program.
-
-To “propagate” a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-To “convey” a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user
-through a computer network, with no transfer of a copy, is not
-conveying.
-
-An interactive user interface displays “Appropriate Legal Notices” to
-the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-<LI>Source Code.
-
-The “source code” for a work means the preferred form of the work for
-making modifications to it. “Object code” means any non-source form
-of a work.
-
-A “Standard Interface” means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-The “System Libraries” of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-“Major Component”, in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-The “Corresponding Source” for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-The Corresponding Source need not include anything that users can
-regenerate automatically from other parts of the Corresponding Source.
-
-The Corresponding Source for a work in source code form is that same
-work.
-
-<LI>Basic Permissions.
-
-All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-You may make, run and propagate covered works that you do not convey,
-without conditions so long as your license otherwise remains in force.
-You may convey covered works to others for the sole purpose of having
-them make modifications exclusively for you, or provide you with
-facilities for running those works, provided that you comply with the
-terms of this License in conveying all material for which you do not
-control copyright. Those thus making or running the covered works for
-you must do so exclusively on your behalf, under your direction and
-control, on terms that prohibit them from making any copies of your
-copyrighted material outside their relationship with you.
-
-Conveying under any other circumstances is permitted solely under the
-conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-<LI>Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such
-circumvention is effected by exercising rights under this License with
-respect to the covered work, and you disclaim any intention to limit
-operation or modification of the work as a means of enforcing, against
-the work's users, your or third parties' legal rights to forbid
-circumvention of technological measures.
-
-<LI>Conveying Verbatim Copies.
-
-You may convey 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;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-<LI>Conveying Modified Source Versions.
-
-You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these
-conditions:
-
-
-<OL>
-<LI>
-
-The work must carry prominent notices stating that you modified it,
-and giving a relevant date.
-
-<LI>
-
-The work must carry prominent notices stating that it is released
-under this License and any conditions added under section 7. This
-requirement modifies the requirement in section 4 to “keep intact all
-notices”.
-
-<LI>
-
-You must license the entire work, as a whole, under this License to
-anyone who comes into possession of a copy. This License will
-therefore apply, along with any applicable section 7 additional terms,
-to the whole of the work, and all its parts, regardless of how they
-are packaged. This License gives no permission to license the work in
-any other way, but it does not invalidate such permission if you have
-separately received it.
-
-<LI>
-
-If the work has interactive user interfaces, each must display
-Appropriate Legal Notices; however, if the Program has interactive
-interfaces that do not display Appropriate Legal Notices, your work
-need not make them do so.
-</OL>
-
-A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-“aggregate” if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-<LI>Conveying Non-Source Forms.
-
-You may convey a covered work in object code form under the terms of
-sections 4 and 5, provided that you also convey the machine-readable
-Corresponding Source under the terms of this License, in one of these
-ways:
-
-
-<OL>
-<LI>
-
-Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by the
-Corresponding Source fixed on a durable physical medium customarily
-used for software interchange.
-
-<LI>
-
-Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by a written
-offer, valid for at least three years and valid for as long as you
-offer spare parts or customer support for that product model, to give
-anyone who possesses the object code either (1) a copy of the
-Corresponding Source for all the software in the product that is
-covered by this License, on a durable physical medium customarily used
-for software interchange, for a price no more than your reasonable
-cost of physically performing this conveying of source, or (2) access
-to copy the Corresponding Source from a network server at no charge.
-
-<LI>
-
-Convey individual copies of the object code with a copy of the written
-offer to provide the Corresponding Source. This alternative is
-allowed only occasionally and noncommercially, and only if you
-received the object code with such an offer, in accord with subsection
-6b.
-
-<LI>
-
-Convey the object code by offering access from a designated place
-(gratis or for a charge), and offer equivalent access to the
-Corresponding Source in the same way through the same place at no
-further charge. You need not require recipients to copy the
-Corresponding Source along with the object code. If the place to copy
-the object code is a network server, the Corresponding Source may be
-on a different server (operated by you or a third party) that supports
-equivalent copying facilities, provided you maintain clear directions
-next to the object code saying where to find the Corresponding Source.
-Regardless of what server hosts the Corresponding Source, you remain
-obligated to ensure that it is available for as long as needed to
-satisfy these requirements.
-
-<LI>
-
-Convey the object code using peer-to-peer transmission, provided you
-inform other peers where the object code and Corresponding Source of
-the work are being offered to the general public at no charge under
-subsection 6d.
-
-</OL>
-
-A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-A “User Product” is either (1) a “consumer product”, which means any
-tangible personal property which is normally used for personal,
-family, or household purposes, or (2) anything designed or sold for
-incorporation into a dwelling. In determining whether a product is a
-consumer product, doubtful cases shall be resolved in favor of
-coverage. For a particular product received by a particular user,
-“normally used” refers to a typical or common use of that class of
-product, regardless of the status of the particular user or of the way
-in which the particular user actually uses, or expects or is expected
-to use, the product. A product is a consumer product regardless of
-whether the product has substantial commercial, industrial or
-non-consumer uses, unless such uses represent the only significant
-mode of use of the product.
-
-“Installation Information” for a User Product means any methods,
-procedures, authorization keys, or other information required to
-install and execute modified versions of a covered work in that User
-Product from a modified version of its Corresponding Source. The
-information must suffice to ensure that the continued functioning of
-the modified object code is in no case prevented or interfered with
-solely because modification has been made.
-
-If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or
-updates for a work that has been modified or installed by the
-recipient, or for the User Product in which it has been modified or
-installed. Access to a network may be denied when the modification
-itself materially and adversely affects the operation of the network
-or violates the rules and protocols for communication across the
-network.
-
-Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-<LI>Additional Terms.
-
-“Additional permissions” are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders
-of that material) supplement the terms of this License with terms:
-
-
-<OL>
-<LI>
-
-Disclaiming warranty or limiting liability differently from the terms
-of sections 15 and 16 of this License; or
-
-<LI>
-
-Requiring preservation of specified reasonable legal notices or author
-attributions in that material or in the Appropriate Legal Notices
-displayed by works containing it; or
-
-<LI>
-
-Prohibiting misrepresentation of the origin of that material, or
-requiring that modified versions of such material be marked in
-reasonable ways as different from the original version; or
-
-<LI>
-
-Limiting the use for publicity purposes of names of licensors or
-authors of the material; or
-
-<LI>
-
-Declining to grant rights under trademark law for use of some trade
-names, trademarks, or service marks; or
-
-<LI>
-
-Requiring indemnification of licensors and authors of that material by
-anyone who conveys the material (or modified versions of it) with
-contractual assumptions of liability to the recipient, for any
-liability that these contractual assumptions directly impose on those
-licensors and authors.
-</OL>
-
-All other non-permissive additional terms are considered “further
-restrictions” within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions; the
-above requirements apply either way.
-
-<LI>Termination.
-
-You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-<LI>Acceptance Not Required for Having Copies.
-
-You are not required to accept this License in order to receive or run
-a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-<LI>Automatic Licensing of Downstream Recipients.
-
-Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
-An “entity transaction” is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-<LI>Patents.
-
-A “contributor” is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's “contributor version”.
-
-A contributor's “essential patent claims” are all patent claims owned
-or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, “control” includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-In the following three paragraphs, a “patent license” is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To “grant” such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. “Knowingly relying” means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-A patent license is “discriminatory” if it does not include within the
-scope of its coverage, prohibits the exercise of, or is conditioned on
-the non-exercise of one or more of the rights that are specifically
-granted under this License. You may not convey a covered work if you
-are a party to an arrangement with a third party that is in the
-business of distributing software, under which you make payment to the
-third party based on the extent of your activity of conveying the
-work, and under which the third party grants, to any of the parties
-who would receive the covered work from you, a discriminatory patent
-license (a) in connection with copies of the covered work conveyed by
-you (or copies made from those copies), or (b) primarily for and in
-connection with specific products or compilations that contain the
-covered work, unless you entered into that arrangement, or that patent
-license was granted, prior to 28 March 2007.
-
-Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-<LI>No Surrender of Others' Freedom.
-
-If 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 convey
-a covered work so as to satisfy simultaneously your obligations under
-this License and any other pertinent obligations, then as a
-consequence you may not convey it at all. For example, if you agree
-to terms that obligate you to collect a royalty for further conveying
-from those to whom you convey the Program, the only way you could
-satisfy both those terms and this License would be to refrain entirely
-from conveying the Program.
-
-<LI>Use with the GNU Affero General Public License.
-
-Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-<LI>Revised Versions of this License.
-
-The Free Software Foundation may publish revised and/or new versions
-of the GNU 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 that a certain numbered version of the GNU General Public
-License “or any later version” applies to it, you have the option of
-following the terms and conditions either of that numbered version or
-of any later version published by the Free Software Foundation. If
-the Program does not specify a version number of the GNU General
-Public License, you may choose any version ever published by the Free
-Software Foundation.
-
-If the Program specifies that a proxy can decide which future versions
-of the GNU General Public License can be used, that proxy's public
-statement of acceptance of a version permanently authorizes you to
-choose that version for the Program.
-
-Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-<LI>Disclaimer of Warranty.
-
-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.
-
-<LI>Limitation of Liability.
-
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
-CONVEYS 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.
-
-<LI>Interpretation of Sections 15 and 16.
-
-If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-</OL>
-
-
-<H2>1.2 END OF TERMS AND CONDITIONS</H2>
-
-
-<H2>1.3 How to Apply These Terms to Your New Programs</H2>
-
-<P>
-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.
-
-</P>
-<P>
-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
-state the exclusion of warranty; and each file should have at least
-the “copyright” line and a pointer to where the full notice is found.
-
-</P>
-
-<PRE>
-<VAR>one line to give the program's name and a brief idea of what it does.</VAR>
-Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
-
-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 3 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, see <A HREF="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</A>.
-</PRE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-</P>
-<P>
-If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-</P>
-
-<PRE>
-<VAR>program</VAR> Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
-This program comes with ABSOLUTELY NO WARRANTY; for details type <SAMP>&lsquo;show w&rsquo;</SAMP>.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type <SAMP>&lsquo;show c&rsquo;</SAMP> for details.
-</PRE>
-
-<P>
-The hypothetical commands <SAMP>&lsquo;show w&rsquo;</SAMP> and <SAMP>&lsquo;show c&rsquo;</SAMP> should show
-the appropriate parts of the General Public License. Of course, your
-program's commands might be different; for a GUI interface, you would
-use an “about box”.
-
-</P>
-<P>
-You should also get your employer (if you work as a programmer) or school,
-if any, to sign a “copyright disclaimer” for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<A HREF="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</A>.
-
-</P>
-<P>
-The GNU 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. But
-first, please read <A HREF="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</A>.
-
-</P>
-
-
-<H1><A NAME="SEC2" HREF="gperf.html#TOC2">Contributors to GNU <CODE>gperf</CODE> Utility</A></H1>
-
-
-<UL>
-<LI>
-
-<A NAME="IDX1"></A>
-The GNU <CODE>gperf</CODE> perfect hash function generator utility was
-written in GNU C++ by Douglas C. Schmidt. The general
-idea for the perfect hash function generator was inspired by Keith
-Bostic's algorithm written in C, and distributed to net.sources around
-1984. The current program is a heavily modified, enhanced, and extended
-implementation of Keith's basic idea, created at the University of
-California, Irvine. Bugs, patches, and suggestions should be reported
-to <CODE>&#60;bug-gnu-gperf@gnu.org&#62;</CODE>.
-
-<LI>
-
-Special thanks is extended to Michael Tiemann and Doug Lea, for
-providing a useful compiler, and for giving me a forum to exhibit my
-creation.
-
-In addition, Adam de Boor and Nels Olson provided many tips and insights
-that greatly helped improve the quality and functionality of <CODE>gperf</CODE>.
-
-<LI>
-
-Bruno Haible enhanced and optimized the search algorithm. He also rewrote
-the input routines and the output routines for better reliability, and
-added a testsuite.
-</UL>
-
-
-
-<H1><A NAME="SEC3" HREF="gperf.html#TOC3">2 Introduction</A></H1>
-
-<P>
-<CODE>gperf</CODE> is a perfect hash function generator written in C++. It
-transforms an <VAR>n</VAR> element user-specified keyword set <VAR>W</VAR> into a
-perfect hash function <VAR>F</VAR>. <VAR>F</VAR> uniquely maps keywords in
-<VAR>W</VAR> onto the range 0..<VAR>k</VAR>, where <VAR>k</VAR> &#62;= <VAR>n-1</VAR>. If <VAR>k</VAR>
-= <VAR>n-1</VAR> then <VAR>F</VAR> is a <EM>minimal</EM> perfect hash function.
-<CODE>gperf</CODE> generates a 0..<VAR>k</VAR> element static lookup table and a
-pair of C functions. These functions determine whether a given
-character string <VAR>s</VAR> occurs in <VAR>W</VAR>, using at most one probe into
-the lookup table.
-
-</P>
-<P>
-<CODE>gperf</CODE> currently generates the reserved keyword recognizer for
-lexical analyzers in several production and research compilers and
-language processing tools, including GNU C, GNU C++, GNU Java, GNU Pascal,
-GNU Modula 3, and GNU indent. Complete C++ source code for <CODE>gperf</CODE> is
-available from <CODE>http://ftp.gnu.org/pub/gnu/gperf/</CODE>.
-A paper describing <CODE>gperf</CODE>'s design and implementation in greater
-detail is available in the Second USENIX C++ Conference proceedings
-or from <CODE>http://www.cs.wustl.edu/~schmidt/resume.html</CODE>.
-
-</P>
-
-
-<H1><A NAME="SEC4" HREF="gperf.html#TOC4">3 Static search structures and GNU <CODE>gperf</CODE></A></H1>
-<P>
-<A NAME="IDX2"></A>
-
-</P>
-<P>
-A <EM>static search structure</EM> is an Abstract Data Type with certain
-fundamental operations, e.g., <EM>initialize</EM>, <EM>insert</EM>,
-and <EM>retrieve</EM>. Conceptually, all insertions occur before any
-retrievals. In practice, <CODE>gperf</CODE> generates a <EM>static</EM> array
-containing search set keywords and any associated attributes specified
-by the user. Thus, there is essentially no execution-time cost for the
-insertions. It is a useful data structure for representing <EM>static
-search sets</EM>. Static search sets occur frequently in software system
-applications. Typical static search sets include compiler reserved
-words, assembler instruction opcodes, and built-in shell interpreter
-commands. Search set members, called <EM>keywords</EM>, are inserted into
-the structure only once, usually during program initialization, and are
-not generally modified at run-time.
-
-</P>
-<P>
-Numerous static search structure implementations exist, e.g.,
-arrays, linked lists, binary search trees, digital search tries, and
-hash tables. Different approaches offer trade-offs between space
-utilization and search time efficiency. For example, an <VAR>n</VAR> element
-sorted array is space efficient, though the average-case time
-complexity for retrieval operations using binary search is
-proportional to log <VAR>n</VAR>. Conversely, hash table implementations
-often locate a table entry in constant time, but typically impose
-additional memory overhead and exhibit poor worst case performance.
-
-</P>
-<P>
-<A NAME="IDX3"></A>
-<EM>Minimal perfect hash functions</EM> provide an optimal solution for a
-particular class of static search sets. A minimal perfect hash
-function is defined by two properties:
-
-</P>
-
-<UL>
-<LI>
-
-It allows keyword recognition in a static search set using at most
-<EM>one</EM> probe into the hash table. This represents the “perfect”
-property.
-<LI>
-
-The actual memory allocated to store the keywords is precisely large
-enough for the keyword set, and <EM>no larger</EM>. This is the
-“minimal” property.
-</UL>
-
-<P>
-For most applications it is far easier to generate <EM>perfect</EM> hash
-functions than <EM>minimal perfect</EM> hash functions. Moreover,
-non-minimal perfect hash functions frequently execute faster than
-minimal ones in practice. This phenomena occurs since searching a
-sparse keyword table increases the probability of locating a “null”
-entry, thereby reducing string comparisons. <CODE>gperf</CODE>'s default
-behavior generates <EM>near-minimal</EM> perfect hash functions for
-keyword sets. However, <CODE>gperf</CODE> provides many options that permit
-user control over the degree of minimality and perfection.
-
-</P>
-<P>
-Static search sets often exhibit relative stability over time. For
-example, Ada's 63 reserved words have remained constant for nearly a
-decade. It is therefore frequently worthwhile to expend concerted
-effort building an optimal search structure <EM>once</EM>, if it
-subsequently receives heavy use multiple times. <CODE>gperf</CODE> removes
-the drudgery associated with constructing time- and space-efficient
-search structures by hand. It has proven a useful and practical tool
-for serious programming projects. Output from <CODE>gperf</CODE> is currently
-used in several production and research compilers, including GNU C, GNU
-C++, GNU Java, GNU Pascal, and GNU Modula 3. The latter two compilers are
-not yet part of the official GNU distribution. Each compiler utilizes
-<CODE>gperf</CODE> to automatically generate static search structures that
-efficiently identify their respective reserved keywords.
-
-</P>
-
-
-<H1><A NAME="SEC5" HREF="gperf.html#TOC5">4 High-Level Description of GNU <CODE>gperf</CODE></A></H1>
-
-<P>
-The perfect hash function generator <CODE>gperf</CODE> reads a set of
-“keywords” from an input file (or from the standard input by
-default). It attempts to derive a perfect hashing function that
-recognizes a member of the <EM>static keyword set</EM> with at most a
-single probe into the lookup table. If <CODE>gperf</CODE> succeeds in
-generating such a function it produces a pair of C source code routines
-that perform hashing and table lookup recognition. All generated C code
-is directed to the standard output. Command-line options described
-below allow you to modify the input and output format to <CODE>gperf</CODE>.
-
-</P>
-<P>
-By default, <CODE>gperf</CODE> attempts to produce time-efficient code, with
-less emphasis on efficient space utilization. However, several options
-exist that permit trading-off execution time for storage space and vice
-versa. In particular, expanding the generated table size produces a
-sparse search structure, generally yielding faster searches.
-Conversely, you can direct <CODE>gperf</CODE> to utilize a C <CODE>switch</CODE>
-statement scheme that minimizes data space storage size. Furthermore,
-using a C <CODE>switch</CODE> may actually speed up the keyword retrieval time
-somewhat. Actual results depend on your C compiler, of course.
-
-</P>
-<P>
-In general, <CODE>gperf</CODE> assigns values to the bytes it is using
-for hashing until some set of values gives each keyword a unique value.
-A helpful heuristic is that the larger the hash value range, the easier
-it is for <CODE>gperf</CODE> to find and generate a perfect hash function.
-Experimentation is the key to getting the most from <CODE>gperf</CODE>.
-
-</P>
-
-
-<H2><A NAME="SEC6" HREF="gperf.html#TOC6">4.1 Input Format to <CODE>gperf</CODE></A></H2>
-<P>
-<A NAME="IDX4"></A>
-<A NAME="IDX5"></A>
-<A NAME="IDX6"></A>
-<A NAME="IDX7"></A>
-You can control the input file format by varying certain command-line
-arguments, in particular the <SAMP>&lsquo;-t&rsquo;</SAMP> option. The input's appearance
-is similar to GNU utilities <CODE>flex</CODE> and <CODE>bison</CODE> (or UNIX
-utilities <CODE>lex</CODE> and <CODE>yacc</CODE>). Here's an outline of the general
-format:
-
-</P>
-
-<PRE>
-declarations
-%%
-keywords
-%%
-functions
-</PRE>
-
-<P>
-<EM>Unlike</EM> <CODE>flex</CODE> or <CODE>bison</CODE>, the declarations section and
-the functions section are optional. The following sections describe the
-input format for each section.
-
-</P>
-
-<P>
-It is possible to omit the declaration section entirely, if the <SAMP>&lsquo;-t&rsquo;</SAMP>
-option is not given. In this case the input file begins directly with the
-first keyword line, e.g.:
-
-</P>
-
-<PRE>
-january
-february
-march
-april
-...
-</PRE>
-
-
-
-<H3><A NAME="SEC7" HREF="gperf.html#TOC7">4.1.1 Declarations</A></H3>
-
-<P>
-The keyword input file optionally contains a section for including
-arbitrary C declarations and definitions, <CODE>gperf</CODE> declarations that
-act like command-line options, as well as for providing a user-supplied
-<CODE>struct</CODE>.
-
-</P>
-
-
-
-<H4><A NAME="SEC8" HREF="gperf.html#TOC8">4.1.1.1 User-supplied <CODE>struct</CODE></A></H4>
-
-<P>
-If the <SAMP>&lsquo;-t&rsquo;</SAMP> option (or, equivalently, the <SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration)
-<EM>is</EM> enabled, you <EM>must</EM> provide a C <CODE>struct</CODE> as the last
-component in the declaration section from the input file. The first
-field in this struct must be of type <CODE>char *</CODE> or <CODE>const char *</CODE>
-if the <SAMP>&lsquo;-P&rsquo;</SAMP> option is not given, or of type <CODE>int</CODE> if the option
-<SAMP>&lsquo;-P&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%pic&rsquo;</SAMP> declaration) is enabled.
-This first field must be called <SAMP>&lsquo;name&rsquo;</SAMP>, although it is possible to modify
-its name with the <SAMP>&lsquo;-K&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%define slot-name&rsquo;</SAMP> declaration) described below.
-
-</P>
-<P>
-Here is a simple example, using months of the year and their attributes as
-input:
-
-</P>
-
-<PRE>
-struct month { char *name; int number; int days; int leap_days; };
-%%
-january, 1, 31, 31
-february, 2, 28, 29
-march, 3, 31, 31
-april, 4, 30, 30
-may, 5, 31, 31
-june, 6, 30, 30
-july, 7, 31, 31
-august, 8, 31, 31
-september, 9, 30, 30
-october, 10, 31, 31
-november, 11, 30, 30
-december, 12, 31, 31
-</PRE>
-
-<P>
-<A NAME="IDX8"></A>
-Separating the <CODE>struct</CODE> declaration from the list of keywords and
-other fields are a pair of consecutive percent signs, <SAMP>&lsquo;%%&rsquo;</SAMP>,
-appearing left justified in the first column, as in the UNIX utility
-<CODE>lex</CODE>.
-
-</P>
-<P>
-If the <CODE>struct</CODE> has already been declared in an include file, it can
-be mentioned in an abbreviated form, like this:
-
-</P>
-
-<PRE>
-struct month;
-%%
-january, 1, 31, 31
-...
-</PRE>
-
-
-
-<H4><A NAME="SEC9" HREF="gperf.html#TOC9">4.1.1.2 Gperf Declarations</A></H4>
-
-<P>
-The declaration section can contain <CODE>gperf</CODE> declarations. They
-influence the way <CODE>gperf</CODE> works, like command line options do.
-In fact, every such declaration is equivalent to a command line option.
-There are three forms of declarations:
-
-</P>
-
-<OL>
-<LI>
-
-Declarations without argument, like <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>.
-
-<LI>
-
-Declarations with an argument, like <SAMP>&lsquo;%switch=<VAR>count</VAR>&rsquo;</SAMP>.
-
-<LI>
-
-Declarations of names of entities in the output file, like
-<SAMP>&lsquo;%define lookup-function-name <VAR>name</VAR>&rsquo;</SAMP>.
-</OL>
-
-<P>
-When a declaration is given both in the input file and as a command line
-option, the command-line option's value prevails.
-
-</P>
-<P>
-The following <CODE>gperf</CODE> declarations are available.
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;%delimiters=<VAR>delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX9"></A>
-Allows you to provide a string containing delimiters used to
-separate keywords from their attributes. The default is ",". This
-option is essential if you want to use keywords that have embedded
-commas or newlines.
-
-<DT><SAMP>&lsquo;%struct-type&rsquo;</SAMP>
-<DD>
-<A NAME="IDX10"></A>
-Allows you to include a <CODE>struct</CODE> type declaration for generated
-code; see above for an example.
-
-<DT><SAMP>&lsquo;%ignore-case&rsquo;</SAMP>
-<DD>
-<A NAME="IDX11"></A>
-Consider upper and lower case ASCII characters as equivalent. The string
-comparison will use a case insignificant character comparison. Note that
-locale dependent case mappings are ignored.
-
-<DT><SAMP>&lsquo;%language=<VAR>language-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX12"></A>
-Instructs <CODE>gperf</CODE> to generate code in the language specified by the
-option's argument. Languages handled are currently:
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;KR-C&rsquo;</SAMP>
-<DD>
-Old-style K&#38;R C. This language is understood by old-style C compilers and
-ANSI C compilers, but ANSI C compilers may flag warnings (or even errors)
-because of lacking <SAMP>&lsquo;const&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;C&rsquo;</SAMP>
-<DD>
-Common C. This language is understood by ANSI C compilers, and also by
-old-style C compilers, provided that you <CODE>#define const</CODE> to empty
-for compilers which don't know about this keyword.
-
-<DT><SAMP>&lsquo;ANSI-C&rsquo;</SAMP>
-<DD>
-ANSI C. This language is understood by ANSI C (C89, ISO C90) compilers,
-ISO C99 compilers, and C++ compilers.
-
-<DT><SAMP>&lsquo;C++&rsquo;</SAMP>
-<DD>
-C++. This language is understood by C++ compilers.
-</DL>
-
-The default is ANSI-C.
-
-<DT><SAMP>&lsquo;%define slot-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX13"></A>
-This declaration is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-By default, the program assumes the structure component identifier for
-the keyword is <SAMP>&lsquo;name&rsquo;</SAMP>. This option allows an arbitrary choice of
-identifier for this component, although it still must occur as the first
-field in your supplied <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;%define initializer-suffix <VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX14"></A>
-This declaration is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-It permits to specify initializers for the structure members following
-<VAR>slot-name</VAR> in empty hash table entries. The list of initializers
-should start with a comma. By default, the emitted code will
-zero-initialize structure members following <VAR>slot-name</VAR>.
-
-<DT><SAMP>&lsquo;%define hash-function-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX15"></A>
-Allows you to specify the name for the generated hash function. Default
-name is <SAMP>&lsquo;hash&rsquo;</SAMP>. This option permits the use of two hash tables in
-the same file.
-
-<DT><SAMP>&lsquo;%define lookup-function-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX16"></A>
-Allows you to specify the name for the generated lookup function.
-Default name is <SAMP>&lsquo;in_word_set&rsquo;</SAMP>. This option permits multiple
-generated hash functions to be used in the same application.
-
-<DT><SAMP>&lsquo;%define class-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX17"></A>
-This option is only useful when option <SAMP>&lsquo;-L C++&rsquo;</SAMP> (or, equivalently,
-the <SAMP>&lsquo;%language=C++&rsquo;</SAMP> declaration) has been given. It
-allows you to specify the name of generated C++ class. Default name is
-<CODE>Perfect_Hash</CODE>.
-
-<DT><SAMP>&lsquo;%7bit&rsquo;</SAMP>
-<DD>
-<A NAME="IDX18"></A>
-This option specifies that all strings that will be passed as arguments
-to the generated hash function and the generated lookup function will
-solely consist of 7-bit ASCII characters (bytes in the range 0..127).
-(Note that the ANSI C functions <CODE>isalnum</CODE> and <CODE>isgraph</CODE> do
-<EM>not</EM> guarantee that a byte is in this range. Only an explicit
-test like <SAMP>&lsquo;c &#62;= 'A' &#38;&#38; c &#60;= 'Z'&rsquo;</SAMP> guarantees this.)
-
-<DT><SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>
-<DD>
-<A NAME="IDX19"></A>
-Compare keyword lengths before trying a string comparison. This option
-is mandatory for binary comparisons (see section <A HREF="gperf.html#SEC15">4.3 Use of NUL bytes</A>). It also might
-cut down on the number of string comparisons made during the lookup, since
-keywords with different lengths are never compared via <CODE>strcmp</CODE>.
-However, using <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP> might greatly increase the size of the
-generated C code if the lookup table range is large (which implies that
-the switch option <SAMP>&lsquo;-S&rsquo;</SAMP> or <SAMP>&lsquo;%switch&rsquo;</SAMP> is not enabled), since the length
-table contains as many elements as there are entries in the lookup table.
-
-<DT><SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-<DD>
-<A NAME="IDX20"></A>
-Generates C code that uses the <CODE>strncmp</CODE> function to perform
-string comparisons. The default action is to use <CODE>strcmp</CODE>.
-
-<DT><SAMP>&lsquo;%readonly-tables&rsquo;</SAMP>
-<DD>
-<A NAME="IDX21"></A>
-Makes the contents of all generated lookup tables constant, i.e.,
-“readonly”. Many compilers can generate more efficient code for this
-by putting the tables in readonly memory.
-
-<DT><SAMP>&lsquo;%enum&rsquo;</SAMP>
-<DD>
-<A NAME="IDX22"></A>
-Define constant values using an enum local to the lookup function rather
-than with #defines. This also means that different lookup functions can
-reside in the same file. Thanks to James Clark <CODE>&#60;jjc@ai.mit.edu&#62;</CODE>.
-
-<DT><SAMP>&lsquo;%includes&rsquo;</SAMP>
-<DD>
-<A NAME="IDX23"></A>
-Include the necessary system include file, <CODE>&#60;string.h&#62;</CODE>, at the
-beginning of the code. By default, this is not done; the user must
-include this header file himself to allow compilation of the code.
-
-<DT><SAMP>&lsquo;%global-table&rsquo;</SAMP>
-<DD>
-<A NAME="IDX24"></A>
-Generate the static table of keywords as a static global variable,
-rather than hiding it inside of the lookup function (which is the
-default behavior).
-
-<DT><SAMP>&lsquo;%pic&rsquo;</SAMP>
-<DD>
-<A NAME="IDX25"></A>
-Optimize the generated table for inclusion in shared libraries. This
-reduces the startup time of programs using a shared library containing
-the generated code. If the <SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration (or,
-equivalently, the option <SAMP>&lsquo;-t&rsquo;</SAMP>) is also given, the first field of the
-user-defined struct must be of type <SAMP>&lsquo;int&rsquo;</SAMP>, not <SAMP>&lsquo;char *&rsquo;</SAMP>, because
-it will contain offsets into the string pool instead of actual strings.
-To convert such an offset to a string, you can use the expression
-<SAMP>&lsquo;stringpool + <VAR>o</VAR>&rsquo;</SAMP>, where <VAR>o</VAR> is the offset. The string pool
-name can be changed through the <SAMP>&lsquo;%define string-pool-name&rsquo;</SAMP> declaration.
-
-<DT><SAMP>&lsquo;%define string-pool-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX26"></A>
-Allows you to specify the name of the generated string pool created by
-the declaration <SAMP>&lsquo;%pic&rsquo;</SAMP> (or, equivalently, the option <SAMP>&lsquo;-P&rsquo;</SAMP>).
-The default name is <SAMP>&lsquo;stringpool&rsquo;</SAMP>. This declaration permits the use of
-two hash tables in the same file, with <SAMP>&lsquo;%pic&rsquo;</SAMP> and even when the
-<SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration (or, equivalently, the option <SAMP>&lsquo;-G&rsquo;</SAMP>)
-is given.
-
-<DT><SAMP>&lsquo;%null-strings&rsquo;</SAMP>
-<DD>
-<A NAME="IDX27"></A>
-Use NULL strings instead of empty strings for empty keyword table entries.
-This reduces the startup time of programs using a shared library containing
-the generated code (but not as much as the declaration <SAMP>&lsquo;%pic&rsquo;</SAMP>), at the
-expense of one more test-and-branch instruction at run time.
-
-<DT><SAMP>&lsquo;%define word-array-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX28"></A>
-Allows you to specify the name for the generated array containing the
-hash table. Default name is <SAMP>&lsquo;wordlist&rsquo;</SAMP>. This option permits the
-use of two hash tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;%define length-table-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX29"></A>
-Allows you to specify the name for the generated array containing the
-length table. Default name is <SAMP>&lsquo;lengthtable&rsquo;</SAMP>. This option permits the
-use of two length tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;%switch=<VAR>count</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX30"></A>
-Causes the generated C code to use a <CODE>switch</CODE> statement scheme,
-rather than an array lookup table. This can lead to a reduction in both
-time and space requirements for some input files. The argument to this
-option determines how many <CODE>switch</CODE> statements are generated. A
-value of 1 generates 1 <CODE>switch</CODE> containing all the elements, a
-value of 2 generates 2 tables with 1/2 the elements in each
-<CODE>switch</CODE>, etc. This is useful since many C compilers cannot
-correctly generate code for large <CODE>switch</CODE> statements. This option
-was inspired in part by Keith Bostic's original C program.
-
-<DT><SAMP>&lsquo;%omit-struct-type&rsquo;</SAMP>
-<DD>
-<A NAME="IDX31"></A>
-Prevents the transfer of the type declaration to the output file. Use
-this option if the type is already defined elsewhere.
-</DL>
-
-
-
-<H4><A NAME="SEC10" HREF="gperf.html#TOC10">4.1.1.3 C Code Inclusion</A></H4>
-
-<P>
-<A NAME="IDX32"></A>
-<A NAME="IDX33"></A>
-Using a syntax similar to GNU utilities <CODE>flex</CODE> and <CODE>bison</CODE>, it
-is possible to directly include C source text and comments verbatim into
-the generated output file. This is accomplished by enclosing the region
-inside left-justified surrounding <SAMP>&lsquo;%{&rsquo;</SAMP>, <SAMP>&lsquo;%}&rsquo;</SAMP> pairs. Here is
-an input fragment based on the previous example that illustrates this
-feature:
-
-</P>
-
-<PRE>
-%{
-#include &#60;assert.h&#62;
-/* This section of code is inserted directly into the output. */
-int return_month_days (struct month *months, int is_leap_year);
-%}
-struct month { char *name; int number; int days; int leap_days; };
-%%
-january, 1, 31, 31
-february, 2, 28, 29
-march, 3, 31, 31
-...
-</PRE>
-
-
-
-<H3><A NAME="SEC11" HREF="gperf.html#TOC11">4.1.2 Format for Keyword Entries</A></H3>
-
-<P>
-The second input file format section contains lines of keywords and any
-associated attributes you might supply. A line beginning with <SAMP>&lsquo;#&rsquo;</SAMP>
-in the first column is considered a comment. Everything following the
-<SAMP>&lsquo;#&rsquo;</SAMP> is ignored, up to and including the following newline. A line
-beginning with <SAMP>&lsquo;%&rsquo;</SAMP> in the first column is an option declaration and
-must not occur within the keywords section.
-
-</P>
-<P>
-The first field of each non-comment line is always the keyword itself. It
-can be given in two ways: as a simple name, i.e., without surrounding
-string quotation marks, or as a string enclosed in double-quotes, in
-C syntax, possibly with backslash escapes like <CODE>\"</CODE> or <CODE>\234</CODE>
-or <CODE>\xa8</CODE>. In either case, it must start right at the beginning
-of the line, without leading whitespace.
-In this context, a “field” is considered to extend up to, but
-not include, the first blank, comma, or newline. Here is a simple
-example taken from a partial list of C reserved words:
-
-</P>
-
-<PRE>
-# These are a few C reserved words, see the c.gperf file
-# for a complete list of ANSI C reserved words.
-unsigned
-sizeof
-switch
-signed
-if
-default
-for
-while
-return
-</PRE>
-
-<P>
-Note that unlike <CODE>flex</CODE> or <CODE>bison</CODE> the first <SAMP>&lsquo;%%&rsquo;</SAMP> marker
-may be elided if the declaration section is empty.
-
-</P>
-<P>
-Additional fields may optionally follow the leading keyword. Fields
-should be separated by commas, and terminate at the end of line. What
-these fields mean is entirely up to you; they are used to initialize the
-elements of the user-defined <CODE>struct</CODE> provided by you in the
-declaration section. If the <SAMP>&lsquo;-t&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) is <EM>not</EM> enabled
-these fields are simply ignored. All previous examples except the last
-one contain keyword attributes.
-
-</P>
-
-
-<H3><A NAME="SEC12" HREF="gperf.html#TOC12">4.1.3 Including Additional C Functions</A></H3>
-
-<P>
-The optional third section also corresponds closely with conventions
-found in <CODE>flex</CODE> and <CODE>bison</CODE>. All text in this section,
-starting at the final <SAMP>&lsquo;%%&rsquo;</SAMP> and extending to the end of the input
-file, is included verbatim into the generated output file. Naturally,
-it is your responsibility to ensure that the code contained in this
-section is valid C.
-
-</P>
-
-
-<H3><A NAME="SEC13" HREF="gperf.html#TOC13">4.1.4 Where to place directives for GNU <CODE>indent</CODE>.</A></H3>
-
-<P>
-If you want to invoke GNU <CODE>indent</CODE> on a <CODE>gperf</CODE> input file,
-you will see that GNU <CODE>indent</CODE> doesn't understand the <SAMP>&lsquo;%%&rsquo;</SAMP>,
-<SAMP>&lsquo;%{&rsquo;</SAMP> and <SAMP>&lsquo;%}&rsquo;</SAMP> directives that control <CODE>gperf</CODE>'s
-interpretation of the input file. Therefore you have to insert some
-directives for GNU <CODE>indent</CODE>. More precisely, assuming the most
-general input file structure
-
-</P>
-
-<PRE>
-declarations part 1
-%{
-verbatim code
-%}
-declarations part 2
-%%
-keywords
-%%
-functions
-</PRE>
-
-<P>
-you would insert <SAMP>&lsquo;*INDENT-OFF*&rsquo;</SAMP> and <SAMP>&lsquo;*INDENT-ON*&rsquo;</SAMP> comments
-as follows:
-
-</P>
-
-<PRE>
-/* *INDENT-OFF* */
-declarations part 1
-%{
-/* *INDENT-ON* */
-verbatim code
-/* *INDENT-OFF* */
-%}
-declarations part 2
-%%
-keywords
-%%
-/* *INDENT-ON* */
-functions
-</PRE>
-
-
-
-<H2><A NAME="SEC14" HREF="gperf.html#TOC14">4.2 Output Format for Generated C Code with <CODE>gperf</CODE></A></H2>
-<P>
-<A NAME="IDX34"></A>
-
-</P>
-<P>
-Several options control how the generated C code appears on the standard
-output. Two C functions are generated. They are called <CODE>hash</CODE> and
-<CODE>in_word_set</CODE>, although you may modify their names with a command-line
-option. Both functions require two arguments, a string, <CODE>char *</CODE>
-<VAR>str</VAR>, and a length parameter, <CODE>int</CODE> <VAR>len</VAR>. Their default
-function prototypes are as follows:
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> unsigned int <B>hash</B> <I>(const char * <VAR>str</VAR>, unsigned int <VAR>len</VAR>)</I>
-<DD><A NAME="IDX35"></A>
-By default, the generated <CODE>hash</CODE> function returns an integer value
-created by adding <VAR>len</VAR> to several user-specified <VAR>str</VAR> byte
-positions indexed into an <EM>associated values</EM> table stored in a
-local static array. The associated values table is constructed
-internally by <CODE>gperf</CODE> and later output as a static local C array
-called <SAMP>&lsquo;hash_table&rsquo;</SAMP>. The relevant selected positions (i.e. indices
-into <VAR>str</VAR>) are specified via the <SAMP>&lsquo;-k&rsquo;</SAMP> option when running
-<CODE>gperf</CODE>, as detailed in the <EM>Options</EM> section below (see section <A HREF="gperf.html#SEC17">5 Invoking <CODE>gperf</CODE></A>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> <B>in_word_set</B> <I>(const char * <VAR>str</VAR>, unsigned int <VAR>len</VAR>)</I>
-<DD><A NAME="IDX36"></A>
-If <VAR>str</VAR> is in the keyword set, returns a pointer to that
-keyword. More exactly, if the option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) was given, it returns
-a pointer to the matching keyword's structure. Otherwise it returns
-<CODE>NULL</CODE>.
-</DL>
-
-</P>
-<P>
-If the option <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-declaration) is not used, <VAR>str</VAR> must be a NUL terminated
-string of exactly length <VAR>len</VAR>. If <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP> declaration) is used, <VAR>str</VAR> must
-simply be an array of <VAR>len</VAR> bytes and does not need to be NUL
-terminated.
-
-</P>
-<P>
-The code generated for these two functions is affected by the following
-options:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-t&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--struct-type&rsquo;</SAMP>
-<DD>
-Make use of the user-defined <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;-S <VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--switch=<VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX37"></A>
-Generate 1 or more C <CODE>switch</CODE> statement rather than use a large,
-(and potentially sparse) static array. Although the exact time and
-space savings of this approach vary according to your C compiler's
-degree of optimization, this method often results in smaller and faster
-code.
-</DL>
-
-<P>
-If the <SAMP>&lsquo;-t&rsquo;</SAMP> and <SAMP>&lsquo;-S&rsquo;</SAMP> options (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> and <SAMP>&lsquo;%switch&rsquo;</SAMP> declarations) are omitted, the default
-action
-is to generate a <CODE>char *</CODE> array containing the keywords, together with
-additional empty strings used for padding the array. By experimenting
-with the various input and output options, and timing the resulting C
-code, you can determine the best option choices for different keyword
-set characteristics.
-
-</P>
-
-
-<H2><A NAME="SEC15" HREF="gperf.html#TOC15">4.3 Use of NUL bytes</A></H2>
-<P>
-<A NAME="IDX38"></A>
-
-</P>
-<P>
-By default, the code generated by <CODE>gperf</CODE> operates on zero
-terminated strings, the usual representation of strings in C. This means
-that the keywords in the input file must not contain NUL bytes,
-and the <VAR>str</VAR> argument passed to <CODE>hash</CODE> or <CODE>in_word_set</CODE>
-must be NUL terminated and have exactly length <VAR>len</VAR>.
-
-</P>
-<P>
-If option <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-declaration) is used, then the <VAR>str</VAR> argument does not need
-to be NUL terminated. The code generated by <CODE>gperf</CODE> will only
-access the first <VAR>len</VAR>, not <VAR>len+1</VAR>, bytes starting at <VAR>str</VAR>.
-However, the keywords in the input file still must not contain NUL
-bytes.
-
-</P>
-<P>
-If option <SAMP>&lsquo;-l&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>
-declaration) is used, then the hash table performs binary
-comparison. The keywords in the input file may contain NUL bytes,
-written in string syntax as <CODE>\000</CODE> or <CODE>\x00</CODE>, and the code
-generated by <CODE>gperf</CODE> will treat NUL like any other byte.
-Also, in this case the <SAMP>&lsquo;-c&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP> declaration) is ignored.
-
-</P>
-
-
-<H2><A NAME="SEC16" HREF="gperf.html#TOC16">4.4 The Copyright of the Output</A></H2>
-<P>
-<A NAME="IDX39"></A>
-
-</P>
-<P>
-<CODE>gperf</CODE> is under GPL, but that does not cause the output produced
-by <CODE>gperf</CODE> to be under GPL. The reason is that the output contains
-only small pieces of text that come directly from <CODE>gperf</CODE>'s source
-code -- only about 7 lines long, too small for being significant --, and
-therefore the output is not a “work based on <CODE>gperf</CODE>” (in the
-sense of the GPL version 3).
-
-</P>
-<P>
-On the other hand, the output produced by <CODE>gperf</CODE> contains
-essentially all of the input file. Therefore the output is a
-“derivative work” of the input (in the sense of U.S. copyright law);
-and its copyright status depends on the copyright of the input. For most
-software licenses, the result is that the the output is under the same
-license, with the same copyright holder, as the input that was passed to
-<CODE>gperf</CODE>.
-
-</P>
-
-
-<H1><A NAME="SEC17" HREF="gperf.html#TOC17">5 Invoking <CODE>gperf</CODE></A></H1>
-
-<P>
-There are <EM>many</EM> options to <CODE>gperf</CODE>. They were added to make
-the program more convenient for use with real applications. “On-line”
-help is readily available via the <SAMP>&lsquo;--help&rsquo;</SAMP> option. Here is the
-complete list of options.
-
-</P>
-
-
-
-<H2><A NAME="SEC18" HREF="gperf.html#TOC18">5.1 Specifying the Location of the Output File</A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;--output-file=<VAR>file</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name of the file to which the output is written to.
-</DL>
-
-<P>
-The results are written to standard output if no output file is specified
-or if it is <SAMP>&lsquo;-&rsquo;</SAMP>.
-
-</P>
-
-
-<H2><A NAME="SEC19" HREF="gperf.html#TOC19">5.2 Options that affect Interpretation of the Input File</A></H2>
-
-<P>
-These options are also available as declarations in the input file
-(see section <A HREF="gperf.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-e <VAR>keyword-delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--delimiters=<VAR>keyword-delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX40"></A>
-Allows you to provide a string containing delimiters used to
-separate keywords from their attributes. The default is ",". This
-option is essential if you want to use keywords that have embedded
-commas or newlines. One useful trick is to use -e'TAB', where TAB is
-the literal tab character.
-
-<DT><SAMP>&lsquo;-t&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--struct-type&rsquo;</SAMP>
-<DD>
-Allows you to include a <CODE>struct</CODE> type declaration for generated
-code. Any text before a pair of consecutive <SAMP>&lsquo;%%&rsquo;</SAMP> is considered
-part of the type declaration. Keywords and additional fields may follow
-this, one group of fields per line. A set of examples for generating
-perfect hash tables and functions for Ada, C, C++, Pascal, Modula 2,
-Modula 3 and JavaScript reserved words are distributed with this release.
-
-<DT><SAMP>&lsquo;--ignore-case&rsquo;</SAMP>
-<DD>
-Consider upper and lower case ASCII characters as equivalent. The string
-comparison will use a case insignificant character comparison. Note that
-locale dependent case mappings are ignored. This option is therefore not
-suitable if a properly internationalized or locale aware case mapping
-should be used. (For example, in a Turkish locale, the upper case equivalent
-of the lowercase ASCII letter <SAMP>&lsquo;i&rsquo;</SAMP> is the non-ASCII character
-<SAMP>&lsquo;capital i with dot above&rsquo;</SAMP>.) For this case, it is better to apply
-an uppercase or lowercase conversion on the string before passing it to
-the <CODE>gperf</CODE> generated function.
-</DL>
-
-
-
-<H2><A NAME="SEC20" HREF="gperf.html#TOC20">5.3 Options to specify the Language for the Output Code</A></H2>
-
-<P>
-These options are also available as declarations in the input file
-(see section <A HREF="gperf.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-L <VAR>generated-language-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--language=<VAR>generated-language-name</VAR>&rsquo;</SAMP>
-<DD>
-Instructs <CODE>gperf</CODE> to generate code in the language specified by the
-option's argument. Languages handled are currently:
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;KR-C&rsquo;</SAMP>
-<DD>
-Old-style K&#38;R C. This language is understood by old-style C compilers and
-ANSI C compilers, but ANSI C compilers may flag warnings (or even errors)
-because of lacking <SAMP>&lsquo;const&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;C&rsquo;</SAMP>
-<DD>
-Common C. This language is understood by ANSI C compilers, and also by
-old-style C compilers, provided that you <CODE>#define const</CODE> to empty
-for compilers which don't know about this keyword.
-
-<DT><SAMP>&lsquo;ANSI-C&rsquo;</SAMP>
-<DD>
-ANSI C. This language is understood by ANSI C compilers and C++ compilers.
-
-<DT><SAMP>&lsquo;C++&rsquo;</SAMP>
-<DD>
-C++. This language is understood by C++ compilers.
-</DL>
-
-The default is ANSI-C.
-
-<DT><SAMP>&lsquo;-a&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-
-<DT><SAMP>&lsquo;-g&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-</DL>
-
-
-
-<H2><A NAME="SEC21" HREF="gperf.html#TOC21">5.4 Options for fine tuning Details in the Output Code</A></H2>
-
-<P>
-Most of these options are also available as declarations in the input file
-(see section <A HREF="gperf.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-K <VAR>slot-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--slot-name=<VAR>slot-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX41"></A>
-This option is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-By default, the program assumes the structure component identifier for
-the keyword is <SAMP>&lsquo;name&rsquo;</SAMP>. This option allows an arbitrary choice of
-identifier for this component, although it still must occur as the first
-field in your supplied <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;-F <VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--initializer-suffix=<VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX42"></A>
-This option is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-It permits to specify initializers for the structure members following
-<VAR>slot-name</VAR> in empty hash table entries. The list of initializers
-should start with a comma. By default, the emitted code will
-zero-initialize structure members following <VAR>slot-name</VAR>.
-
-<DT><SAMP>&lsquo;-H <VAR>hash-function-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--hash-function-name=<VAR>hash-function-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name for the generated hash function. Default
-name is <SAMP>&lsquo;hash&rsquo;</SAMP>. This option permits the use of two hash tables in
-the same file.
-
-<DT><SAMP>&lsquo;-N <VAR>lookup-function-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--lookup-function-name=<VAR>lookup-function-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name for the generated lookup function.
-Default name is <SAMP>&lsquo;in_word_set&rsquo;</SAMP>. This option permits multiple
-generated hash functions to be used in the same application.
-
-<DT><SAMP>&lsquo;-Z <VAR>class-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--class-name=<VAR>class-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX43"></A>
-This option is only useful when option <SAMP>&lsquo;-L C++&rsquo;</SAMP> (or, equivalently,
-the <SAMP>&lsquo;%language=C++&rsquo;</SAMP> declaration) has been given. It
-allows you to specify the name of generated C++ class. Default name is
-<CODE>Perfect_Hash</CODE>.
-
-<DT><SAMP>&lsquo;-7&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--seven-bit&rsquo;</SAMP>
-<DD>
-This option specifies that all strings that will be passed as arguments
-to the generated hash function and the generated lookup function will
-solely consist of 7-bit ASCII characters (bytes in the range 0..127).
-(Note that the ANSI C functions <CODE>isalnum</CODE> and <CODE>isgraph</CODE> do
-<EM>not</EM> guarantee that a byte is in this range. Only an explicit
-test like <SAMP>&lsquo;c &#62;= 'A' &#38;&#38; c &#60;= 'Z'&rsquo;</SAMP> guarantees this.) This was the
-default in versions of <CODE>gperf</CODE> earlier than 2.7; now the default is
-to support 8-bit and multibyte characters.
-
-<DT><SAMP>&lsquo;-l&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--compare-lengths&rsquo;</SAMP>
-<DD>
-Compare keyword lengths before trying a string comparison. This option
-is mandatory for binary comparisons (see section <A HREF="gperf.html#SEC15">4.3 Use of NUL bytes</A>). It also might
-cut down on the number of string comparisons made during the lookup, since
-keywords with different lengths are never compared via <CODE>strcmp</CODE>.
-However, using <SAMP>&lsquo;-l&rsquo;</SAMP> might greatly increase the size of the
-generated C code if the lookup table range is large (which implies that
-the switch option <SAMP>&lsquo;-S&rsquo;</SAMP> or <SAMP>&lsquo;%switch&rsquo;</SAMP> is not enabled), since the length
-table contains as many elements as there are entries in the lookup table.
-
-<DT><SAMP>&lsquo;-c&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--compare-strncmp&rsquo;</SAMP>
-<DD>
-Generates C code that uses the <CODE>strncmp</CODE> function to perform
-string comparisons. The default action is to use <CODE>strcmp</CODE>.
-
-<DT><SAMP>&lsquo;-C&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--readonly-tables&rsquo;</SAMP>
-<DD>
-Makes the contents of all generated lookup tables constant, i.e.,
-“readonly”. Many compilers can generate more efficient code for this
-by putting the tables in readonly memory.
-
-<DT><SAMP>&lsquo;-E&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--enum&rsquo;</SAMP>
-<DD>
-Define constant values using an enum local to the lookup function rather
-than with #defines. This also means that different lookup functions can
-reside in the same file. Thanks to James Clark <CODE>&#60;jjc@ai.mit.edu&#62;</CODE>.
-
-<DT><SAMP>&lsquo;-I&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--includes&rsquo;</SAMP>
-<DD>
-Include the necessary system include file, <CODE>&#60;string.h&#62;</CODE>, at the
-beginning of the code. By default, this is not done; the user must
-include this header file himself to allow compilation of the code.
-
-<DT><SAMP>&lsquo;-G&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--global-table&rsquo;</SAMP>
-<DD>
-Generate the static table of keywords as a static global variable,
-rather than hiding it inside of the lookup function (which is the
-default behavior).
-
-<DT><SAMP>&lsquo;-P&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--pic&rsquo;</SAMP>
-<DD>
-Optimize the generated table for inclusion in shared libraries. This
-reduces the startup time of programs using a shared library containing
-the generated code. If the option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) is also given, the first field of the
-user-defined struct must be of type <SAMP>&lsquo;int&rsquo;</SAMP>, not <SAMP>&lsquo;char *&rsquo;</SAMP>, because
-it will contain offsets into the string pool instead of actual strings.
-To convert such an offset to a string, you can use the expression
-<SAMP>&lsquo;stringpool + <VAR>o</VAR>&rsquo;</SAMP>, where <VAR>o</VAR> is the offset. The string pool
-name can be changed through the option <SAMP>&lsquo;--string-pool-name&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;-Q <VAR>string-pool-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--string-pool-name=<VAR>string-pool-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name of the generated string pool created by
-option <SAMP>&lsquo;-P&rsquo;</SAMP>. The default name is <SAMP>&lsquo;stringpool&rsquo;</SAMP>. This option
-permits the use of two hash tables in the same file, with <SAMP>&lsquo;-P&rsquo;</SAMP> and
-even when the option <SAMP>&lsquo;-G&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP>
-declaration) is given.
-
-<DT><SAMP>&lsquo;--null-strings&rsquo;</SAMP>
-<DD>
-Use NULL strings instead of empty strings for empty keyword table entries.
-This reduces the startup time of programs using a shared library containing
-the generated code (but not as much as option <SAMP>&lsquo;-P&rsquo;</SAMP>), at the expense
-of one more test-and-branch instruction at run time.
-
-<DT><SAMP>&lsquo;-W <VAR>hash-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--word-array-name=<VAR>hash-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX44"></A>
-Allows you to specify the name for the generated array containing the
-hash table. Default name is <SAMP>&lsquo;wordlist&rsquo;</SAMP>. This option permits the
-use of two hash tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;--length-table-name=<VAR>length-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX45"></A>
-Allows you to specify the name for the generated array containing the
-length table. Default name is <SAMP>&lsquo;lengthtable&rsquo;</SAMP>. This option permits the
-use of two length tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;-S <VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--switch=<VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX46"></A>
-Causes the generated C code to use a <CODE>switch</CODE> statement scheme,
-rather than an array lookup table. This can lead to a reduction in both
-time and space requirements for some input files. The argument to this
-option determines how many <CODE>switch</CODE> statements are generated. A
-value of 1 generates 1 <CODE>switch</CODE> containing all the elements, a
-value of 2 generates 2 tables with 1/2 the elements in each
-<CODE>switch</CODE>, etc. This is useful since many C compilers cannot
-correctly generate code for large <CODE>switch</CODE> statements. This option
-was inspired in part by Keith Bostic's original C program.
-
-<DT><SAMP>&lsquo;-T&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--omit-struct-type&rsquo;</SAMP>
-<DD>
-Prevents the transfer of the type declaration to the output file. Use
-this option if the type is already defined elsewhere.
-
-<DT><SAMP>&lsquo;-p&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-</DL>
-
-
-
-<H2><A NAME="SEC22" HREF="gperf.html#TOC22">5.5 Options for changing the Algorithms employed by <CODE>gperf</CODE></A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-k <VAR>selected-byte-positions</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--key-positions=<VAR>selected-byte-positions</VAR>&rsquo;</SAMP>
-<DD>
-Allows selection of the byte positions used in the keywords'
-hash function. The allowable choices range between 1-255, inclusive.
-The positions are separated by commas, e.g., <SAMP>&lsquo;-k 9,4,13,14&rsquo;</SAMP>;
-ranges may be used, e.g., <SAMP>&lsquo;-k 2-7&rsquo;</SAMP>; and positions may occur
-in any order. Furthermore, the wildcard '*' causes the generated
-hash function to consider <STRONG>all</STRONG> byte positions in each keyword,
-whereas '$' instructs the hash function to use the “final byte”
-of a keyword (this is the only way to use a byte position greater than
-255, incidentally).
-
-For instance, the option <SAMP>&lsquo;-k 1,2,4,6-10,'$'&rsquo;</SAMP> generates a hash
-function that considers positions 1,2,4,6,7,8,9,10, plus the last
-byte in each keyword (which may be at a different position for each
-keyword, obviously). Keywords
-with length less than the indicated byte positions work properly, since
-selected byte positions exceeding the keyword length are simply not
-referenced in the hash function.
-
-This option is not normally needed since version 2.8 of <CODE>gperf</CODE>;
-the default byte positions are computed depending on the keyword set,
-through a search that minimizes the number of byte positions.
-
-<DT><SAMP>&lsquo;-D&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--duplicates&rsquo;</SAMP>
-<DD>
-<A NAME="IDX47"></A>
-Handle keywords whose selected byte sets hash to duplicate values.
-Duplicate hash values can occur if a set of keywords has the same names, but
-possesses different attributes, or if the selected byte positions are not well
-chosen. With the -D option <CODE>gperf</CODE> treats all these keywords as
-part of an equivalence class and generates a perfect hash function with
-multiple comparisons for duplicate keywords. It is up to you to completely
-disambiguate the keywords by modifying the generated C code. However,
-<CODE>gperf</CODE> helps you out by organizing the output.
-
-Using this option usually means that the generated hash function is no
-longer perfect. On the other hand, it permits <CODE>gperf</CODE> to work on
-keyword sets that it otherwise could not handle.
-
-<DT><SAMP>&lsquo;-m <VAR>iterations</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--multiple-iterations=<VAR>iterations</VAR>&rsquo;</SAMP>
-<DD>
-Perform multiple choices of the <SAMP>&lsquo;-i&rsquo;</SAMP> and <SAMP>&lsquo;-j&rsquo;</SAMP> values, and
-choose the best results. This increases the running time by a factor of
-<VAR>iterations</VAR> but does a good job minimizing the generated table size.
-
-<DT><SAMP>&lsquo;-i <VAR>initial-value</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--initial-asso=<VAR>initial-value</VAR>&rsquo;</SAMP>
-<DD>
-Provides an initial <VAR>value</VAR> for the associate values array. Default
-is 0. Increasing the initial value helps inflate the final table size,
-possibly leading to more time efficient keyword lookups. Note that this
-option is not particularly useful when <SAMP>&lsquo;-S&rsquo;</SAMP> (or, equivalently,
-<SAMP>&lsquo;%switch&rsquo;</SAMP>) is used. Also,
-<SAMP>&lsquo;-i&rsquo;</SAMP> is overridden when the <SAMP>&lsquo;-r&rsquo;</SAMP> option is used.
-
-<DT><SAMP>&lsquo;-j <VAR>jump-value</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--jump=<VAR>jump-value</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX48"></A>
-Affects the “jump value”, i.e., how far to advance the associated
-byte value upon collisions. <VAR>Jump-value</VAR> is rounded up to an
-odd number, the default is 5. If the <VAR>jump-value</VAR> is 0 <CODE>gperf</CODE>
-jumps by random amounts.
-
-<DT><SAMP>&lsquo;-n&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--no-strlen&rsquo;</SAMP>
-<DD>
-Instructs the generator not to include the length of a keyword when
-computing its hash value. This may save a few assembly instructions in
-the generated lookup table.
-
-<DT><SAMP>&lsquo;-r&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--random&rsquo;</SAMP>
-<DD>
-Utilizes randomness to initialize the associated values table. This
-frequently generates solutions faster than using deterministic
-initialization (which starts all associated values at 0). Furthermore,
-using the randomization option generally increases the size of the
-table.
-
-<DT><SAMP>&lsquo;-s <VAR>size-multiple</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--size-multiple=<VAR>size-multiple</VAR>&rsquo;</SAMP>
-<DD>
-Affects the size of the generated hash table. The numeric argument for
-this option indicates “how many times larger or smaller” the maximum
-associated value range should be, in relationship to the number of keywords.
-It can be written as an integer, a floating-point number or a fraction.
-For example, a value of 3 means “allow the maximum associated value to be
-about 3 times larger than the number of input keywords”.
-Conversely, a value of 1/3 means “allow the maximum associated value to
-be about 3 times smaller than the number of input keywords”. Values
-smaller than 1 are useful for limiting the overall size of the generated hash
-table, though the option <SAMP>&lsquo;-m&rsquo;</SAMP> is better at this purpose.
-
-If `generate switch' option <SAMP>&lsquo;-S&rsquo;</SAMP> (or, equivalently, <SAMP>&lsquo;%switch&rsquo;</SAMP>) is
-<EM>not</EM> enabled, the maximum
-associated value influences the static array table size, and a larger
-table should decrease the time required for an unsuccessful search, at
-the expense of extra table space.
-
-The default value is 1, thus the default maximum associated value about
-the same size as the number of keywords (for efficiency, the maximum
-associated value is always rounded up to a power of 2). The actual
-table size may vary somewhat, since this technique is essentially a
-heuristic.
-</DL>
-
-
-
-<H2><A NAME="SEC23" HREF="gperf.html#TOC23">5.6 Informative Output</A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-h&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--help&rsquo;</SAMP>
-<DD>
-Prints a short summary on the meaning of each program option. Aborts
-further program execution.
-
-<DT><SAMP>&lsquo;-v&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--version&rsquo;</SAMP>
-<DD>
-Prints out the current version number.
-
-<DT><SAMP>&lsquo;-d&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--debug&rsquo;</SAMP>
-<DD>
-Enables the debugging option. This produces verbose diagnostics to
-“standard error” when <CODE>gperf</CODE> is executing. It is useful both for
-maintaining the program and for determining whether a given set of
-options is actually speeding up the search for a solution. Some useful
-information is dumped at the end of the program when the <SAMP>&lsquo;-d&rsquo;</SAMP>
-option is enabled.
-</DL>
-
-
-
-<H1><A NAME="SEC24" HREF="gperf.html#TOC24">6 Known Bugs and Limitations with <CODE>gperf</CODE></A></H1>
-
-<P>
-The following are some limitations with the current release of
-<CODE>gperf</CODE>:
-
-</P>
-
-<UL>
-<LI>
-
-The <CODE>gperf</CODE> utility is tuned to execute quickly, and works quickly
-for small to medium size data sets (around 1000 keywords). It is
-extremely useful for maintaining perfect hash functions for compiler
-keyword sets. Several recent enhancements now enable <CODE>gperf</CODE> to
-work efficiently on much larger keyword sets (over 15,000 keywords).
-When processing large keyword sets it helps greatly to have over 8 megs
-of RAM.
-
-<LI>
-
-The size of the generate static keyword array can get <EM>extremely</EM>
-large if the input keyword file is large or if the keywords are quite
-similar. This tends to slow down the compilation of the generated C
-code, and <EM>greatly</EM> inflates the object code size. If this
-situation occurs, consider using the <SAMP>&lsquo;-S&rsquo;</SAMP> option to reduce data
-size, potentially increasing keyword recognition time a negligible
-amount. Since many C compilers cannot correctly generate code for
-large switch statements it is important to qualify the <VAR>-S</VAR> option
-with an appropriate numerical argument that controls the number of
-switch statements generated.
-
-<LI>
-
-The maximum number of selected byte positions has an
-arbitrary limit of 255. This restriction should be removed, and if
-anyone considers this a problem write me and let me know so I can remove
-the constraint.
-</UL>
-
-
-
-<H1><A NAME="SEC25" HREF="gperf.html#TOC25">7 Things Still Left to Do</A></H1>
-
-<P>
-It should be “relatively” easy to replace the current perfect hash
-function algorithm with a more exhaustive approach; the perfect hash
-module is essential independent from other program modules. Additional
-worthwhile improvements include:
-
-</P>
-
-<UL>
-<LI>
-
-Another useful extension involves modifying the program to generate
-“minimal” perfect hash functions (under certain circumstances, the
-current version can be rather extravagant in the generated table size).
-This is mostly of theoretical interest, since a sparse table
-often produces faster lookups, and use of the <SAMP>&lsquo;-S&rsquo;</SAMP> <CODE>switch</CODE>
-option can minimize the data size, at the expense of slightly longer
-lookups (note that the gcc compiler generally produces good code for
-<CODE>switch</CODE> statements, reducing the need for more complex schemes).
-
-<LI>
-
-In addition to improving the algorithm, it would also be useful to
-generate an Ada package as the code output, in addition to the current
-C and C++ routines.
-</UL>
-
-
-
-<H1><A NAME="SEC26" HREF="gperf.html#TOC26">8 Bibliography</A></H1>
-
-<P>
-[1] Chang, C.C.: <I>A Scheme for Constructing Ordered Minimal Perfect
-Hashing Functions</I> Information Sciences 39(1986), 187-195.
-
-</P>
-<P>
-[2] Cichelli, Richard J. <I>Author's Response to “On Cichelli's Minimal Perfect Hash
-Functions Method”</I> Communications of the ACM, 23, 12(December 1980), 729.
-
-</P>
-<P>
-[3] Cichelli, Richard J. <I>Minimal Perfect Hash Functions Made Simple</I>
-Communications of the ACM, 23, 1(January 1980), 17-19.
-
-</P>
-<P>
-[4] Cook, C. R. and Oldehoeft, R.R. <I>A Letter Oriented Minimal
-Perfect Hashing Function</I> SIGPLAN Notices, 17, 9(September 1982), 18-27.
-
-</P>
-<P>
-[5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M.
-<I>Practical Perfect Hashing</I> Computer Journal, 28, 1(January 1985), 54-58.
-
-</P>
-<P>
-[6] Jaeschke, G. <I>Reciprocal Hashing: A Method for Generating Minimal
-Perfect Hashing Functions</I> Communications of the ACM, 24, 12(December
-1981), 829-833.
-
-</P>
-<P>
-[7] Jaeschke, G. and Osterburg, G. <I>On Cichelli's Minimal Perfect
-Hash Functions Method</I> Communications of the ACM, 23, 12(December 1980),
-728-729.
-
-</P>
-<P>
-[8] Sager, Thomas J. <I>A Polynomial Time Generator for Minimal Perfect
-Hash Functions</I> Communications of the ACM, 28, 5(December 1985), 523-532
-
-</P>
-<P>
-[9] Schmidt, Douglas C. <I>GPERF: A Perfect Hash Function Generator</I>
-Second USENIX C++ Conference Proceedings, April 1990.
-
-</P>
-<P>
-[10] Schmidt, Douglas C. <I>GPERF: A Perfect Hash Function Generator</I>
-C++ Report, SIGS 10 10 (November/December 1998).
-
-</P>
-<P>
-[11] Sebesta, R.W. and Taylor, M.A. <I>Minimal Perfect Hash Functions
-for Reserved Word Lists</I> SIGPLAN Notices, 20, 12(September 1985), 47-53.
-
-</P>
-<P>
-[12] Sprugnoli, R. <I>Perfect Hashing Functions: A Single Probe
-Retrieving Method for Static Sets</I> Communications of the ACM, 20
-11(November 1977), 841-850.
-
-</P>
-<P>
-[13] Stallman, Richard M. <I>Using and Porting GNU CC</I> Free Software Foundation,
-1988.
-
-</P>
-<P>
-[14] Stroustrup, Bjarne <I>The C++ Programming Language.</I> Addison-Wesley, 1986.
-
-</P>
-<P>
-[15] Tiemann, Michael D. <I>User's Guide to GNU C++</I> Free Software
-Foundation, 1989.
-
-</P>
-
-
-<H1><A NAME="SEC27" HREF="gperf.html#TOC27">Concept Index</A></H1>
-
-<P>
-Jump to:
-<A HREF="#cindex_&">&#38;</A>
--
-<A HREF="#cindex_a">a</A>
--
-<A HREF="#cindex_b">b</A>
--
-<A HREF="#cindex_c">c</A>
--
-<A HREF="#cindex_d">d</A>
--
-<A HREF="#cindex_f">f</A>
--
-<A HREF="#cindex_h">h</A>
--
-<A HREF="#cindex_i">i</A>
--
-<A HREF="#cindex_j">j</A>
--
-<A HREF="#cindex_k">k</A>
--
-<A HREF="#cindex_m">m</A>
--
-<A HREF="#cindex_n">n</A>
--
-<A HREF="#cindex_s">s</A>
-<P>
-<H2><A NAME="cindex_&">&#38;</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX8"><SAMP>&lsquo;%%&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX18"><SAMP>&lsquo;%7bit&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX19"><SAMP>&lsquo;%compare-lengths&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX20"><SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX17"><SAMP>&lsquo;%define class-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX15"><SAMP>&lsquo;%define hash-function-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX14"><SAMP>&lsquo;%define initializer-suffix&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX29"><SAMP>&lsquo;%define length-table-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX16"><SAMP>&lsquo;%define lookup-function-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX13"><SAMP>&lsquo;%define slot-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX26"><SAMP>&lsquo;%define string-pool-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX28"><SAMP>&lsquo;%define word-array-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX9"><SAMP>&lsquo;%delimiters&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX22"><SAMP>&lsquo;%enum&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX24"><SAMP>&lsquo;%global-table&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX11"><SAMP>&lsquo;%ignore-case&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX23"><SAMP>&lsquo;%includes&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX12"><SAMP>&lsquo;%language&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX27"><SAMP>&lsquo;%null-strings&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX31"><SAMP>&lsquo;%omit-struct-type&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX25"><SAMP>&lsquo;%pic&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX21"><SAMP>&lsquo;%readonly-tables&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX10"><SAMP>&lsquo;%struct-type&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX30"><SAMP>&lsquo;%switch&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX32"><SAMP>&lsquo;%{&rsquo;</SAMP></A>
-<LI><A HREF="gperf.html#IDX33"><SAMP>&lsquo;%}&rsquo;</SAMP></A>
-</DIR>
-<H2><A NAME="cindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX44">Array name</A>, <A HREF="gperf.html#IDX45">Array name</A>
-</DIR>
-<H2><A NAME="cindex_b">b</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX1">Bugs</A>
-</DIR>
-<H2><A NAME="cindex_c">c</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX43">Class name</A>
-<LI><A HREF="gperf.html#IDX39">Copyright</A>
-</DIR>
-<H2><A NAME="cindex_d">d</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX5">Declaration section</A>
-<LI><A HREF="gperf.html#IDX40">Delimiters</A>
-<LI><A HREF="gperf.html#IDX47">Duplicates</A>
-</DIR>
-<H2><A NAME="cindex_f">f</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX4">Format</A>
-<LI><A HREF="gperf.html#IDX7">Functions section</A>
-</DIR>
-<H2><A NAME="cindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX35">hash</A>
-<LI><A HREF="gperf.html#IDX34">hash table</A>
-</DIR>
-<H2><A NAME="cindex_i">i</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX36">in_word_set</A>
-<LI><A HREF="gperf.html#IDX42">Initializers</A>
-</DIR>
-<H2><A NAME="cindex_j">j</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX48">Jump value</A>
-</DIR>
-<H2><A NAME="cindex_k">k</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX6">Keywords section</A>
-</DIR>
-<H2><A NAME="cindex_m">m</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX3">Minimal perfect hash functions</A>
-</DIR>
-<H2><A NAME="cindex_n">n</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX38">NUL</A>
-</DIR>
-<H2><A NAME="cindex_s">s</A></H2>
-<DIR>
-<LI><A HREF="gperf.html#IDX41">Slot name</A>
-<LI><A HREF="gperf.html#IDX2">Static search structure</A>
-<LI><A HREF="gperf.html#IDX37"><CODE>switch</CODE></A>, <A HREF="gperf.html#IDX46"><CODE>switch</CODE></A>
-</DIR>
-
-</P>
-
-<P><HR><P>
-This document was generated on 20 December 2009 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52b.</P>
-</BODY>
-</HTML>
diff --git a/doc/gperf.info b/doc/gperf.info
deleted file mode 100644
index 8353e43..0000000
--- a/doc/gperf.info
+++ /dev/null
@@ -1,2096 +0,0 @@
-This is gperf.info, produced by makeinfo version 4.13 from gperf.texi.
-
-INFO-DIR-SECTION Programming Tools
-START-INFO-DIR-ENTRY
-* Gperf: (gperf). Perfect Hash Function Generator.
-END-INFO-DIR-ENTRY
-
- This file documents the features of the GNU Perfect Hash Function
-Generator 3.1.
-
- Copyright (C) 1989-2009 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
-
-
-File: gperf.info, Node: Top, Next: Copying, Prev: (dir), Up: (dir)
-
-Introduction
-************
-
- This manual documents the GNU `gperf' perfect hash function generator
-utility, focusing on its features and how to use them, and how to report
-bugs.
-
-* Menu:
-
-* Copying:: GNU General Public License says how you can
- copy and share `gperf'.
-* Contributors:: People who have contributed to `gperf'.
-* Motivation:: The purpose of `gperf'.
-* Search Structures:: Static search structures and GNU `gperf'
-* Description:: High-level discussion of how GPERF functions.
-* Options:: A description of options to the program.
-* Bugs:: Known bugs and limitations with GPERF.
-* Projects:: Things still left to do.
-* Bibliography:: Material Referenced in this Report.
-
-* Concept Index::
-
-
-High-Level Description of GNU `gperf'
-
-* Input Format:: Input Format to `gperf'
-* Output Format:: Output Format for Generated C Code with `gperf'
-* Binary Strings:: Use of NUL bytes
-* Output Copyright:: The Copyright of the Output.
-
-Input Format to `gperf'
-
-* Declarations:: Declarations.
-* Keywords:: Format for Keyword Entries.
-* Functions:: Including Additional C Functions.
-* Controls for GNU indent:: Where to place directives for GNU `indent'.
-
-Declarations
-
-* User-supplied Struct:: Specifying keywords with attributes.
-* Gperf Declarations:: Embedding command line options in the input.
-* C Code Inclusion:: Including C declarations and definitions.
-
-Invoking `gperf'
-
-* Input Details:: Options that affect Interpretation of the Input File
-* Output Language:: Specifying the Language for the Output Code
-* Output Details:: Fine tuning Details in the Output Code
-* Algorithmic Details:: Changing the Algorithms employed by `gperf'
-* Verbosity:: Informative Output
-
-
-File: gperf.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top
-
-GNU GENERAL PUBLIC LICENSE
-**************************
-
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
-
- Everyone is permitted to copy and distribute verbatim copies of this
- license document, but changing it is not allowed.
-
-Preamble
-========
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains
-free software for all its users. We, the Free Software Foundation, use
-the GNU General Public License for most of our software; it applies
-also to any other work released this way by its authors. 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
-them 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 prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you
-have certain responsibilities if you distribute copies of the software,
-or if you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. 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.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the
-manufacturer can do so. This is fundamentally incompatible with the
-aim of protecting users' freedom to change the software. The
-systematic pattern of such abuse occurs in the area of products for
-individuals to use, which is precisely where it is most unacceptable.
-Therefore, we have designed this version of the GPL to prohibit the
-practice for those products. If such problems arise substantially in
-other domains, we stand ready to extend this provision to those domains
-in future versions of the GPL, as needed to protect the freedom of
-users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-TERMS AND CONDITIONS
-====================
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public
- License.
-
- "Copyright" also means copyright-like laws that apply to other
- kinds of works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
- License. Each licensee is addressed as "you". "Licensees" and
- "recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the
- work in a fashion requiring copyright permission, other than the
- making of an exact copy. The resulting work is called a "modified
- version" of the earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work
- based on the Program.
-
- To "propagate" a work means to do anything with it that, without
- permission, would make you directly or secondarily liable for
- infringement under applicable copyright law, except executing it
- on a computer or modifying a private copy. Propagation includes
- copying, distribution (with or without modification), making
- available to the public, and in some countries other activities as
- well.
-
- To "convey" a work means any kind of propagation that enables other
- parties to make or receive copies. Mere interaction with a user
- through a computer network, with no transfer of a copy, is not
- conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
- to the extent that it includes a convenient and prominently visible
- feature that (1) displays an appropriate copyright notice, and (2)
- tells the user that there is no warranty for the work (except to
- the extent that warranties are provided), that licensees may
- convey the work under this License, and how to view a copy of this
- License. If the interface presents a list of user commands or
- options, such as a menu, a prominent item in the list meets this
- criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
- for making modifications to it. "Object code" means any
- non-source form of a work.
-
- A "Standard Interface" means an interface that either is an
- official standard defined by a recognized standards body, or, in
- the case of interfaces specified for a particular programming
- language, one that is widely used among developers working in that
- language.
-
- The "System Libraries" of an executable work include anything,
- other than the work as a whole, that (a) is included in the normal
- form of packaging a Major Component, but which is not part of that
- Major Component, and (b) serves only to enable use of the work
- with that Major Component, or to implement a Standard Interface
- for which an implementation is available to the public in source
- code form. A "Major Component", in this context, means a major
- essential component (kernel, window system, and so on) of the
- specific operating system (if any) on which the executable work
- runs, or a compiler used to produce the work, or an object code
- interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
- the source code needed to generate, install, and (for an executable
- work) run the object code and to modify the work, including
- scripts to control those activities. However, it does not include
- the work's System Libraries, or general-purpose tools or generally
- available free programs which are used unmodified in performing
- those activities but which are not part of the work. For example,
- Corresponding Source includes interface definition files
- associated with source files for the work, and the source code for
- shared libraries and dynamically linked subprograms that the work
- is specifically designed to require, such as by intimate data
- communication or control flow between those subprograms and other
- parts of the work.
-
- The Corresponding Source need not include anything that users can
- regenerate automatically from other parts of the Corresponding
- Source.
-
- The Corresponding Source for a work in source code form is that
- same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
- copyright on the Program, and are irrevocable provided the stated
- conditions are met. This License explicitly affirms your unlimited
- permission to run the unmodified Program. The output from running
- a covered work is covered by this License only if the output,
- given its content, constitutes a covered work. This License
- acknowledges your rights of fair use or other equivalent, as
- provided by copyright law.
-
- You may make, run and propagate covered works that you do not
- convey, without conditions so long as your license otherwise
- remains in force. You may convey covered works to others for the
- sole purpose of having them make modifications exclusively for
- you, or provide you with facilities for running those works,
- provided that you comply with the terms of this License in
- conveying all material for which you do not control copyright.
- Those thus making or running the covered works for you must do so
- exclusively on your behalf, under your direction and control, on
- terms that prohibit them from making any copies of your
- copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
- the conditions stated below. Sublicensing is not allowed; section
- 10 makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
- measure under any applicable law fulfilling obligations under
- article 11 of the WIPO copyright treaty adopted on 20 December
- 1996, or similar laws prohibiting or restricting circumvention of
- such measures.
-
- When you convey a covered work, you waive any legal power to forbid
- circumvention of technological measures to the extent such
- circumvention is effected by exercising rights under this License
- with respect to the covered work, and you disclaim any intention
- to limit operation or modification of the work as a means of
- enforcing, against the work's users, your or third parties' legal
- rights to forbid circumvention of technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey 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;
- keep intact all notices stating that this License and any
- non-permissive terms added in accord with section 7 apply to the
- code; keep intact all notices of the absence of any warranty; and
- give all recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
- and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
- produce it from the Program, in the form of source code under the
- terms of section 4, provided that you also meet all of these
- conditions:
-
- a. The work must carry prominent notices stating that you
- modified it, and giving a relevant date.
-
- b. The work must carry prominent notices stating that it is
- released under this License and any conditions added under
- section 7. This requirement modifies the requirement in
- section 4 to "keep intact all notices".
-
- c. You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable
- section 7 additional terms, to the whole of the work, and all
- its parts, regardless of how they are packaged. This License
- gives no permission to license the work in any other way, but
- it does not invalidate such permission if you have separately
- received it.
-
- d. If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has
- interactive interfaces that do not display Appropriate Legal
- Notices, your work need not make them do so.
-
- A compilation of a covered work with other separate and independent
- works, which are not by their nature extensions of the covered
- work, and which are not combined with it such as to form a larger
- program, in or on a volume of a storage or distribution medium, is
- called an "aggregate" if the compilation and its resulting
- copyright are not used to limit the access or legal rights of the
- compilation's users beyond what the individual works permit.
- Inclusion of a covered work in an aggregate does not cause this
- License to apply to the other parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
- of sections 4 and 5, provided that you also convey the
- machine-readable Corresponding Source under the terms of this
- License, in one of these ways:
-
- a. Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b. Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for
- as long as you offer spare parts or customer support for that
- product model, to give anyone who possesses the object code
- either (1) a copy of the Corresponding Source for all the
- software in the product that is covered by this License, on a
- durable physical medium customarily used for software
- interchange, for a price no more than your reasonable cost of
- physically performing this conveying of source, or (2) access
- to copy the Corresponding Source from a network server at no
- charge.
-
- c. Convey individual copies of the object code with a copy of
- the written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially,
- and only if you received the object code with such an offer,
- in accord with subsection 6b.
-
- d. Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access
- to the Corresponding Source in the same way through the same
- place at no further charge. You need not require recipients
- to copy the Corresponding Source along with the object code.
- If the place to copy the object code is a network server, the
- Corresponding Source may be on a different server (operated
- by you or a third party) that supports equivalent copying
- facilities, provided you maintain clear directions next to
- the object code saying where to find the Corresponding Source.
- Regardless of what server hosts the Corresponding Source, you
- remain obligated to ensure that it is available for as long
- as needed to satisfy these requirements.
-
- e. Convey the object code using peer-to-peer transmission,
- provided you inform other peers where the object code and
- Corresponding Source of the work are being offered to the
- general public at no charge under subsection 6d.
-
-
- A separable portion of the object code, whose source code is
- excluded from the Corresponding Source as a System Library, need
- not be included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means
- any tangible personal property which is normally used for personal,
- family, or household purposes, or (2) anything designed or sold for
- incorporation into a dwelling. In determining whether a product
- is a consumer product, doubtful cases shall be resolved in favor of
- coverage. For a particular product received by a particular user,
- "normally used" refers to a typical or common use of that class of
- product, regardless of the status of the particular user or of the
- way in which the particular user actually uses, or expects or is
- expected to use, the product. A product is a consumer product
- regardless of whether the product has substantial commercial,
- industrial or non-consumer uses, unless such uses represent the
- only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
- procedures, authorization keys, or other information required to
- install and execute modified versions of a covered work in that
- User Product from a modified version of its Corresponding Source.
- The information must suffice to ensure that the continued
- functioning of the modified object code is in no case prevented or
- interfered with solely because modification has been made.
-
- If you convey an object code work under this section in, or with,
- or specifically for use in, a User Product, and the conveying
- occurs as part of a transaction in which the right of possession
- and use of the User Product is transferred to the recipient in
- perpetuity or for a fixed term (regardless of how the transaction
- is characterized), the Corresponding Source conveyed under this
- section must be accompanied by the Installation Information. But
- this requirement does not apply if neither you nor any third party
- retains the ability to install modified object code on the User
- Product (for example, the work has been installed in ROM).
-
- The requirement to provide Installation Information does not
- include a requirement to continue to provide support service,
- warranty, or updates for a work that has been modified or
- installed by the recipient, or for the User Product in which it
- has been modified or installed. Access to a network may be denied
- when the modification itself materially and adversely affects the
- operation of the network or violates the rules and protocols for
- communication across the network.
-
- Corresponding Source conveyed, and Installation Information
- provided, in accord with this section must be in a format that is
- publicly documented (and with an implementation available to the
- public in source code form), and must require no special password
- or key for unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of
- this License by making exceptions from one or more of its
- conditions. Additional permissions that are applicable to the
- entire Program shall be treated as though they were included in
- this License, to the extent that they are valid under applicable
- law. If additional permissions apply only to part of the Program,
- that part may be used separately under those permissions, but the
- entire Program remains governed by this License without regard to
- the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
- remove any additional permissions from that copy, or from any part
- of it. (Additional permissions may be written to require their own
- removal in certain cases when you modify the work.) You may place
- additional permissions on material, added by you to a covered work,
- for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material
- you add to a covered work, you may (if authorized by the copyright
- holders of that material) supplement the terms of this License
- with terms:
-
- a. Disclaiming warranty or limiting liability differently from
- the terms of sections 15 and 16 of this License; or
-
- b. Requiring preservation of specified reasonable legal notices
- or author attributions in that material or in the Appropriate
- Legal Notices displayed by works containing it; or
-
- c. Prohibiting misrepresentation of the origin of that material,
- or requiring that modified versions of such material be
- marked in reasonable ways as different from the original
- version; or
-
- d. Limiting the use for publicity purposes of names of licensors
- or authors of the material; or
-
- e. Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f. Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified
- versions of it) with contractual assumptions of liability to
- the recipient, for any liability that these contractual
- assumptions directly impose on those licensors and authors.
-
- All other non-permissive additional terms are considered "further
- restrictions" within the meaning of section 10. If the Program as
- you received it, or any part of it, contains a notice stating that
- it is governed by this License along with a term that is a further
- restriction, you may remove that term. If a license document
- contains a further restriction but permits relicensing or
- conveying under this License, you may add to a covered work
- material governed by the terms of that license document, provided
- that the further restriction does not survive such relicensing or
- conveying.
-
- If you add terms to a covered work in accord with this section, you
- must place, in the relevant source files, a statement of the
- additional terms that apply to those files, or a notice indicating
- where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in
- the form of a separately written license, or stated as exceptions;
- the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
- provided under this License. Any attempt otherwise to propagate or
- modify it is void, and will automatically terminate your rights
- under this License (including any patent licenses granted under
- the third paragraph of section 11).
-
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly
- and finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
-
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from
- you under this License. If your rights have been terminated and
- not permanently reinstated, you do not qualify to receive new
- licenses for the same material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
- run a copy of the Program. Ancillary propagation of a covered work
- occurring solely as a consequence of using peer-to-peer
- transmission to receive a copy likewise does not require
- acceptance. However, nothing other than this License grants you
- permission to propagate or modify any covered work. These actions
- infringe copyright if you do not accept this License. Therefore,
- by modifying or propagating a covered work, you indicate your
- acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
- receives a license from the original licensors, to run, modify and
- propagate that work, subject to this License. You are not
- responsible for enforcing compliance by third parties with this
- License.
-
- An "entity transaction" is a transaction transferring control of an
- organization, or substantially all assets of one, or subdividing an
- organization, or merging organizations. If propagation of a
- covered work results from an entity transaction, each party to that
- transaction who receives a copy of the work also receives whatever
- licenses to the work the party's predecessor in interest had or
- could give under the previous paragraph, plus a right to
- possession of the Corresponding Source of the work from the
- predecessor in interest, if the predecessor has it or can get it
- with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
- rights granted or affirmed under this License. For example, you
- may not impose a license fee, royalty, or other charge for
- exercise of rights granted under this License, and you may not
- initiate litigation (including a cross-claim or counterclaim in a
- lawsuit) alleging that any patent claim is infringed by making,
- using, selling, offering for sale, or importing the Program or any
- portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
- License of the Program or a work on which the Program is based.
- The work thus licensed is called the contributor's "contributor
- version".
-
- A contributor's "essential patent claims" are all patent claims
- owned or controlled by the contributor, whether already acquired or
- hereafter acquired, that would be infringed by some manner,
- permitted by this License, of making, using, or selling its
- contributor version, but do not include claims that would be
- infringed only as a consequence of further modification of the
- contributor version. For purposes of this definition, "control"
- includes the right to grant patent sublicenses in a manner
- consistent with the requirements of this License.
-
- Each contributor grants you a non-exclusive, worldwide,
- royalty-free patent license under the contributor's essential
- patent claims, to make, use, sell, offer for sale, import and
- otherwise run, modify and propagate the contents of its
- contributor version.
-
- In the following three paragraphs, a "patent license" is any
- express agreement or commitment, however denominated, not to
- enforce a patent (such as an express permission to practice a
- patent or covenant not to sue for patent infringement). To
- "grant" such a patent license to a party means to make such an
- agreement or commitment not to enforce a patent against the party.
-
- If you convey a covered work, knowingly relying on a patent
- license, and the Corresponding Source of the work is not available
- for anyone to copy, free of charge and under the terms of this
- License, through a publicly available network server or other
- readily accessible means, then you must either (1) cause the
- Corresponding Source to be so available, or (2) arrange to deprive
- yourself of the benefit of the patent license for this particular
- work, or (3) arrange, in a manner consistent with the requirements
- of this License, to extend the patent license to downstream
- recipients. "Knowingly relying" means you have actual knowledge
- that, but for the patent license, your conveying the covered work
- in a country, or your recipient's use of the covered work in a
- country, would infringe one or more identifiable patents in that
- country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
- arrangement, you convey, or propagate by procuring conveyance of, a
- covered work, and grant a patent license to some of the parties
- receiving the covered work authorizing them to use, propagate,
- modify or convey a specific copy of the covered work, then the
- patent license you grant is automatically extended to all
- recipients of the covered work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
- the scope of its coverage, prohibits the exercise of, or is
- conditioned on the non-exercise of one or more of the rights that
- are specifically granted under this License. You may not convey a
- covered work if you are a party to an arrangement with a third
- party that is in the business of distributing software, under
- which you make payment to the third party based on the extent of
- your activity of conveying the work, and under which the third
- party grants, to any of the parties who would receive the covered
- work from you, a discriminatory patent license (a) in connection
- with copies of the covered work conveyed by you (or copies made
- from those copies), or (b) primarily for and in connection with
- specific products or compilations that contain the covered work,
- unless you entered into that arrangement, or that patent license
- was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
- any implied license or other defenses to infringement that may
- otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If 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 convey a covered work so as to satisfy
- simultaneously your obligations under this License and any other
- pertinent obligations, then as a consequence you may not convey it
- at all. For example, if you agree to terms that obligate you to
- collect a royalty for further conveying from those to whom you
- convey the Program, the only way you could satisfy both those
- terms and this License would be to refrain entirely from conveying
- the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
- permission to link or combine any covered work with a work licensed
- under version 3 of the GNU Affero General Public License into a
- single combined work, and to convey the resulting work. The terms
- of this License will continue to apply to the part which is the
- covered work, but the special requirements of the GNU Affero
- General Public License, section 13, concerning interaction through
- a network will apply to the combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new
- versions of the GNU 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 that a certain numbered version of the GNU
- General Public License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that numbered version or of any later version published by the
- Free Software Foundation. If the Program does not specify a
- version number of the GNU General Public License, you may choose
- any version ever published by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
- versions of the GNU General Public License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Program.
-
- Later license versions may give you additional or different
- permissions. However, no additional obligations are imposed on any
- author or copyright holder as a result of your choosing to follow a
- later version.
-
- 15. Disclaimer of Warranty.
-
- 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.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
- AND/OR CONVEYS 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.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
- above cannot be given local legal effect according to their terms,
- reviewing courts shall apply local law that most closely
- approximates an absolute waiver of all civil liability in
- connection with the Program, unless a warranty or assumption of
- liability accompanies a copy of the Program in return for a fee.
-
-
-END OF TERMS AND CONDITIONS
-===========================
-
-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
-state 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) YEAR 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 3 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, see `http://www.gnu.org/licenses/'.
-
- Also add information on how to contact you by electronic and paper
-mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- PROGRAM Copyright (C) YEAR NAME OF AUTHOR
- This program 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, your
-program's commands might be different; for a GUI interface, you would
-use an "about box".
-
- You should also get your employer (if you work as a programmer) or
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. For more information on this, and how to apply and follow
-the GNU GPL, see `http://www.gnu.org/licenses/'.
-
- The GNU 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. But first,
-please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
-
-
-File: gperf.info, Node: Contributors, Next: Motivation, Prev: Copying, Up: Top
-
-Contributors to GNU `gperf' Utility
-***********************************
-
- * The GNU `gperf' perfect hash function generator utility was
- written in GNU C++ by Douglas C. Schmidt. The general idea for
- the perfect hash function generator was inspired by Keith Bostic's
- algorithm written in C, and distributed to net.sources around
- 1984. The current program is a heavily modified, enhanced, and
- extended implementation of Keith's basic idea, created at the
- University of California, Irvine. Bugs, patches, and suggestions
- should be reported to `<bug-gnu-gperf@gnu.org>'.
-
- * Special thanks is extended to Michael Tiemann and Doug Lea, for
- providing a useful compiler, and for giving me a forum to exhibit
- my creation.
-
- In addition, Adam de Boor and Nels Olson provided many tips and
- insights that greatly helped improve the quality and functionality
- of `gperf'.
-
- * Bruno Haible enhanced and optimized the search algorithm. He also
- rewrote the input routines and the output routines for better
- reliability, and added a testsuite.
-
-
-File: gperf.info, Node: Motivation, Next: Search Structures, Prev: Contributors, Up: Top
-
-1 Introduction
-**************
-
- `gperf' is a perfect hash function generator written in C++. It
-transforms an N element user-specified keyword set W into a perfect
-hash function F. F uniquely maps keywords in W onto the range 0..K,
-where K >= N-1. If K = N-1 then F is a _minimal_ perfect hash function.
-`gperf' generates a 0..K element static lookup table and a pair of C
-functions. These functions determine whether a given character string
-S occurs in W, using at most one probe into the lookup table.
-
- `gperf' currently generates the reserved keyword recognizer for
-lexical analyzers in several production and research compilers and
-language processing tools, including GNU C, GNU C++, GNU Java, GNU
-Pascal, GNU Modula 3, and GNU indent. Complete C++ source code for
-`gperf' is available from `http://ftp.gnu.org/pub/gnu/gperf/'. A paper
-describing `gperf''s design and implementation in greater detail is
-available in the Second USENIX C++ Conference proceedings or from
-`http://www.cs.wustl.edu/~schmidt/resume.html'.
-
-
-File: gperf.info, Node: Search Structures, Next: Description, Prev: Motivation, Up: Top
-
-2 Static search structures and GNU `gperf'
-******************************************
-
- A "static search structure" is an Abstract Data Type with certain
-fundamental operations, e.g., _initialize_, _insert_, and _retrieve_.
-Conceptually, all insertions occur before any retrievals. In practice,
-`gperf' generates a _static_ array containing search set keywords and
-any associated attributes specified by the user. Thus, there is
-essentially no execution-time cost for the insertions. It is a useful
-data structure for representing _static search sets_. Static search
-sets occur frequently in software system applications. Typical static
-search sets include compiler reserved words, assembler instruction
-opcodes, and built-in shell interpreter commands. Search set members,
-called "keywords", are inserted into the structure only once, usually
-during program initialization, and are not generally modified at
-run-time.
-
- Numerous static search structure implementations exist, e.g.,
-arrays, linked lists, binary search trees, digital search tries, and
-hash tables. Different approaches offer trade-offs between space
-utilization and search time efficiency. For example, an N element
-sorted array is space efficient, though the average-case time
-complexity for retrieval operations using binary search is proportional
-to log N. Conversely, hash table implementations often locate a table
-entry in constant time, but typically impose additional memory overhead
-and exhibit poor worst case performance.
-
- _Minimal perfect hash functions_ provide an optimal solution for a
-particular class of static search sets. A minimal perfect hash
-function is defined by two properties:
-
- * It allows keyword recognition in a static search set using at most
- _one_ probe into the hash table. This represents the "perfect"
- property.
-
- * The actual memory allocated to store the keywords is precisely
- large enough for the keyword set, and _no larger_. This is the
- "minimal" property.
-
- For most applications it is far easier to generate _perfect_ hash
-functions than _minimal perfect_ hash functions. Moreover, non-minimal
-perfect hash functions frequently execute faster than minimal ones in
-practice. This phenomena occurs since searching a sparse keyword table
-increases the probability of locating a "null" entry, thereby reducing
-string comparisons. `gperf''s default behavior generates
-_near-minimal_ perfect hash functions for keyword sets. However,
-`gperf' provides many options that permit user control over the degree
-of minimality and perfection.
-
- Static search sets often exhibit relative stability over time. For
-example, Ada's 63 reserved words have remained constant for nearly a
-decade. It is therefore frequently worthwhile to expend concerted
-effort building an optimal search structure _once_, if it subsequently
-receives heavy use multiple times. `gperf' removes the drudgery
-associated with constructing time- and space-efficient search
-structures by hand. It has proven a useful and practical tool for
-serious programming projects. Output from `gperf' is currently used in
-several production and research compilers, including GNU C, GNU C++,
-GNU Java, GNU Pascal, and GNU Modula 3. The latter two compilers are
-not yet part of the official GNU distribution. Each compiler utilizes
-`gperf' to automatically generate static search structures that
-efficiently identify their respective reserved keywords.
-
-
-File: gperf.info, Node: Description, Next: Options, Prev: Search Structures, Up: Top
-
-3 High-Level Description of GNU `gperf'
-***************************************
-
-* Menu:
-
-* Input Format:: Input Format to `gperf'
-* Output Format:: Output Format for Generated C Code with `gperf'
-* Binary Strings:: Use of NUL bytes
-* Output Copyright:: The Copyright of the Output.
-
- The perfect hash function generator `gperf' reads a set of
-"keywords" from an input file (or from the standard input by default).
-It attempts to derive a perfect hashing function that recognizes a
-member of the "static keyword set" with at most a single probe into the
-lookup table. If `gperf' succeeds in generating such a function it
-produces a pair of C source code routines that perform hashing and
-table lookup recognition. All generated C code is directed to the
-standard output. Command-line options described below allow you to
-modify the input and output format to `gperf'.
-
- By default, `gperf' attempts to produce time-efficient code, with
-less emphasis on efficient space utilization. However, several options
-exist that permit trading-off execution time for storage space and vice
-versa. In particular, expanding the generated table size produces a
-sparse search structure, generally yielding faster searches.
-Conversely, you can direct `gperf' to utilize a C `switch' statement
-scheme that minimizes data space storage size. Furthermore, using a C
-`switch' may actually speed up the keyword retrieval time somewhat.
-Actual results depend on your C compiler, of course.
-
- In general, `gperf' assigns values to the bytes it is using for
-hashing until some set of values gives each keyword a unique value. A
-helpful heuristic is that the larger the hash value range, the easier
-it is for `gperf' to find and generate a perfect hash function.
-Experimentation is the key to getting the most from `gperf'.
-
-
-File: gperf.info, Node: Input Format, Next: Output Format, Prev: Description, Up: Description
-
-3.1 Input Format to `gperf'
-===========================
-
- You can control the input file format by varying certain command-line
-arguments, in particular the `-t' option. The input's appearance is
-similar to GNU utilities `flex' and `bison' (or UNIX utilities `lex'
-and `yacc'). Here's an outline of the general format:
-
- declarations
- %%
- keywords
- %%
- functions
-
- _Unlike_ `flex' or `bison', the declarations section and the
-functions section are optional. The following sections describe the
-input format for each section.
-
-* Menu:
-
-* Declarations:: Declarations.
-* Keywords:: Format for Keyword Entries.
-* Functions:: Including Additional C Functions.
-* Controls for GNU indent:: Where to place directives for GNU `indent'.
-
- It is possible to omit the declaration section entirely, if the `-t'
-option is not given. In this case the input file begins directly with
-the first keyword line, e.g.:
-
- january
- february
- march
- april
- ...
-
-
-File: gperf.info, Node: Declarations, Next: Keywords, Prev: Input Format, Up: Input Format
-
-3.1.1 Declarations
-------------------
-
- The keyword input file optionally contains a section for including
-arbitrary C declarations and definitions, `gperf' declarations that act
-like command-line options, as well as for providing a user-supplied
-`struct'.
-
-* Menu:
-
-* User-supplied Struct:: Specifying keywords with attributes.
-* Gperf Declarations:: Embedding command line options in the input.
-* C Code Inclusion:: Including C declarations and definitions.
-
-
-File: gperf.info, Node: User-supplied Struct, Next: Gperf Declarations, Prev: Declarations, Up: Declarations
-
-3.1.1.1 User-supplied `struct'
-..............................
-
- If the `-t' option (or, equivalently, the `%struct-type' declaration)
-_is_ enabled, you _must_ provide a C `struct' as the last component in
-the declaration section from the input file. The first field in this
-struct must be of type `char *' or `const char *' if the `-P' option is
-not given, or of type `int' if the option `-P' (or, equivalently, the
-`%pic' declaration) is enabled. This first field must be called
-`name', although it is possible to modify its name with the `-K' option
-(or, equivalently, the `%define slot-name' declaration) described below.
-
- Here is a simple example, using months of the year and their
-attributes as input:
-
- struct month { char *name; int number; int days; int leap_days; };
- %%
- january, 1, 31, 31
- february, 2, 28, 29
- march, 3, 31, 31
- april, 4, 30, 30
- may, 5, 31, 31
- june, 6, 30, 30
- july, 7, 31, 31
- august, 8, 31, 31
- september, 9, 30, 30
- october, 10, 31, 31
- november, 11, 30, 30
- december, 12, 31, 31
-
- Separating the `struct' declaration from the list of keywords and
-other fields are a pair of consecutive percent signs, `%%', appearing
-left justified in the first column, as in the UNIX utility `lex'.
-
- If the `struct' has already been declared in an include file, it can
-be mentioned in an abbreviated form, like this:
-
- struct month;
- %%
- january, 1, 31, 31
- ...
-
-
-File: gperf.info, Node: Gperf Declarations, Next: C Code Inclusion, Prev: User-supplied Struct, Up: Declarations
-
-3.1.1.2 Gperf Declarations
-..........................
-
- The declaration section can contain `gperf' declarations. They
-influence the way `gperf' works, like command line options do. In
-fact, every such declaration is equivalent to a command line option.
-There are three forms of declarations:
-
- 1. Declarations without argument, like `%compare-lengths'.
-
- 2. Declarations with an argument, like `%switch=COUNT'.
-
- 3. Declarations of names of entities in the output file, like
- `%define lookup-function-name NAME'.
-
- When a declaration is given both in the input file and as a command
-line option, the command-line option's value prevails.
-
- The following `gperf' declarations are available.
-
-`%delimiters=DELIMITER-LIST'
- Allows you to provide a string containing delimiters used to
- separate keywords from their attributes. The default is ",". This
- option is essential if you want to use keywords that have embedded
- commas or newlines.
-
-`%struct-type'
- Allows you to include a `struct' type declaration for generated
- code; see above for an example.
-
-`%ignore-case'
- Consider upper and lower case ASCII characters as equivalent. The
- string comparison will use a case insignificant character
- comparison. Note that locale dependent case mappings are ignored.
-
-`%language=LANGUAGE-NAME'
- Instructs `gperf' to generate code in the language specified by the
- option's argument. Languages handled are currently:
-
- `KR-C'
- Old-style K&R C. This language is understood by old-style C
- compilers and ANSI C compilers, but ANSI C compilers may flag
- warnings (or even errors) because of lacking `const'.
-
- `C'
- Common C. This language is understood by ANSI C compilers,
- and also by old-style C compilers, provided that you `#define
- const' to empty for compilers which don't know about this
- keyword.
-
- `ANSI-C'
- ANSI C. This language is understood by ANSI C (C89, ISO C90)
- compilers, ISO C99 compilers, and C++ compilers.
-
- `C++'
- C++. This language is understood by C++ compilers.
-
- The default is ANSI-C.
-
-`%define slot-name NAME'
- This declaration is only useful when option `-t' (or,
- equivalently, the `%struct-type' declaration) has been given. By
- default, the program assumes the structure component identifier for
- the keyword is `name'. This option allows an arbitrary choice of
- identifier for this component, although it still must occur as the
- first field in your supplied `struct'.
-
-`%define initializer-suffix INITIALIZERS'
- This declaration is only useful when option `-t' (or,
- equivalently, the `%struct-type' declaration) has been given. It
- permits to specify initializers for the structure members following
- SLOT-NAME in empty hash table entries. The list of initializers
- should start with a comma. By default, the emitted code will
- zero-initialize structure members following SLOT-NAME.
-
-`%define hash-function-name NAME'
- Allows you to specify the name for the generated hash function.
- Default name is `hash'. This option permits the use of two hash
- tables in the same file.
-
-`%define lookup-function-name NAME'
- Allows you to specify the name for the generated lookup function.
- Default name is `in_word_set'. This option permits multiple
- generated hash functions to be used in the same application.
-
-`%define class-name NAME'
- This option is only useful when option `-L C++' (or, equivalently,
- the `%language=C++' declaration) has been given. It allows you to
- specify the name of generated C++ class. Default name is
- `Perfect_Hash'.
-
-`%7bit'
- This option specifies that all strings that will be passed as
- arguments to the generated hash function and the generated lookup
- function will solely consist of 7-bit ASCII characters (bytes in
- the range 0..127). (Note that the ANSI C functions `isalnum' and
- `isgraph' do _not_ guarantee that a byte is in this range. Only
- an explicit test like `c >= 'A' && c <= 'Z'' guarantees this.)
-
-`%compare-lengths'
- Compare keyword lengths before trying a string comparison. This
- option is mandatory for binary comparisons (*note Binary
- Strings::). It also might cut down on the number of string
- comparisons made during the lookup, since keywords with different
- lengths are never compared via `strcmp'. However, using
- `%compare-lengths' might greatly increase the size of the
- generated C code if the lookup table range is large (which implies
- that the switch option `-S' or `%switch' is not enabled), since
- the length table contains as many elements as there are entries in
- the lookup table.
-
-`%compare-strncmp'
- Generates C code that uses the `strncmp' function to perform
- string comparisons. The default action is to use `strcmp'.
-
-`%readonly-tables'
- Makes the contents of all generated lookup tables constant, i.e.,
- "readonly". Many compilers can generate more efficient code for
- this by putting the tables in readonly memory.
-
-`%enum'
- Define constant values using an enum local to the lookup function
- rather than with #defines. This also means that different lookup
- functions can reside in the same file. Thanks to James Clark
- `<jjc@ai.mit.edu>'.
-
-`%includes'
- Include the necessary system include file, `<string.h>', at the
- beginning of the code. By default, this is not done; the user must
- include this header file himself to allow compilation of the code.
-
-`%global-table'
- Generate the static table of keywords as a static global variable,
- rather than hiding it inside of the lookup function (which is the
- default behavior).
-
-`%pic'
- Optimize the generated table for inclusion in shared libraries.
- This reduces the startup time of programs using a shared library
- containing the generated code. If the `%struct-type' declaration
- (or, equivalently, the option `-t') is also given, the first field
- of the user-defined struct must be of type `int', not `char *',
- because it will contain offsets into the string pool instead of
- actual strings. To convert such an offset to a string, you can
- use the expression `stringpool + O', where O is the offset. The
- string pool name can be changed through the `%define
- string-pool-name' declaration.
-
-`%define string-pool-name NAME'
- Allows you to specify the name of the generated string pool
- created by the declaration `%pic' (or, equivalently, the option
- `-P'). The default name is `stringpool'. This declaration
- permits the use of two hash tables in the same file, with `%pic'
- and even when the `%global-table' declaration (or, equivalently,
- the option `-G') is given.
-
-`%null-strings'
- Use NULL strings instead of empty strings for empty keyword table
- entries. This reduces the startup time of programs using a shared
- library containing the generated code (but not as much as the
- declaration `%pic'), at the expense of one more test-and-branch
- instruction at run time.
-
-`%define word-array-name NAME'
- Allows you to specify the name for the generated array containing
- the hash table. Default name is `wordlist'. This option permits
- the use of two hash tables in the same file, even when the option
- `-G' (or, equivalently, the `%global-table' declaration) is given.
-
-`%define length-table-name NAME'
- Allows you to specify the name for the generated array containing
- the length table. Default name is `lengthtable'. This option
- permits the use of two length tables in the same file, even when
- the option `-G' (or, equivalently, the `%global-table'
- declaration) is given.
-
-`%switch=COUNT'
- Causes the generated C code to use a `switch' statement scheme,
- rather than an array lookup table. This can lead to a reduction
- in both time and space requirements for some input files. The
- argument to this option determines how many `switch' statements
- are generated. A value of 1 generates 1 `switch' containing all
- the elements, a value of 2 generates 2 tables with 1/2 the
- elements in each `switch', etc. This is useful since many C
- compilers cannot correctly generate code for large `switch'
- statements. This option was inspired in part by Keith Bostic's
- original C program.
-
-`%omit-struct-type'
- Prevents the transfer of the type declaration to the output file.
- Use this option if the type is already defined elsewhere.
-
-
-File: gperf.info, Node: C Code Inclusion, Prev: Gperf Declarations, Up: Declarations
-
-3.1.1.3 C Code Inclusion
-........................
-
- Using a syntax similar to GNU utilities `flex' and `bison', it is
-possible to directly include C source text and comments verbatim into
-the generated output file. This is accomplished by enclosing the region
-inside left-justified surrounding `%{', `%}' pairs. Here is an input
-fragment based on the previous example that illustrates this feature:
-
- %{
- #include <assert.h>
- /* This section of code is inserted directly into the output. */
- int return_month_days (struct month *months, int is_leap_year);
- %}
- struct month { char *name; int number; int days; int leap_days; };
- %%
- january, 1, 31, 31
- february, 2, 28, 29
- march, 3, 31, 31
- ...
-
-
-File: gperf.info, Node: Keywords, Next: Functions, Prev: Declarations, Up: Input Format
-
-3.1.2 Format for Keyword Entries
---------------------------------
-
- The second input file format section contains lines of keywords and
-any associated attributes you might supply. A line beginning with `#'
-in the first column is considered a comment. Everything following the
-`#' is ignored, up to and including the following newline. A line
-beginning with `%' in the first column is an option declaration and
-must not occur within the keywords section.
-
- The first field of each non-comment line is always the keyword
-itself. It can be given in two ways: as a simple name, i.e., without
-surrounding string quotation marks, or as a string enclosed in
-double-quotes, in C syntax, possibly with backslash escapes like `\"'
-or `\234' or `\xa8'. In either case, it must start right at the
-beginning of the line, without leading whitespace. In this context, a
-"field" is considered to extend up to, but not include, the first
-blank, comma, or newline. Here is a simple example taken from a
-partial list of C reserved words:
-
- # These are a few C reserved words, see the c.gperf file
- # for a complete list of ANSI C reserved words.
- unsigned
- sizeof
- switch
- signed
- if
- default
- for
- while
- return
-
- Note that unlike `flex' or `bison' the first `%%' marker may be
-elided if the declaration section is empty.
-
- Additional fields may optionally follow the leading keyword. Fields
-should be separated by commas, and terminate at the end of line. What
-these fields mean is entirely up to you; they are used to initialize the
-elements of the user-defined `struct' provided by you in the
-declaration section. If the `-t' option (or, equivalently, the
-`%struct-type' declaration) is _not_ enabled these fields are simply
-ignored. All previous examples except the last one contain keyword
-attributes.
-
-
-File: gperf.info, Node: Functions, Next: Controls for GNU indent, Prev: Keywords, Up: Input Format
-
-3.1.3 Including Additional C Functions
---------------------------------------
-
- The optional third section also corresponds closely with conventions
-found in `flex' and `bison'. All text in this section, starting at the
-final `%%' and extending to the end of the input file, is included
-verbatim into the generated output file. Naturally, it is your
-responsibility to ensure that the code contained in this section is
-valid C.
-
-
-File: gperf.info, Node: Controls for GNU indent, Prev: Functions, Up: Input Format
-
-3.1.4 Where to place directives for GNU `indent'.
--------------------------------------------------
-
- If you want to invoke GNU `indent' on a `gperf' input file, you will
-see that GNU `indent' doesn't understand the `%%', `%{' and `%}'
-directives that control `gperf''s interpretation of the input file.
-Therefore you have to insert some directives for GNU `indent'. More
-precisely, assuming the most general input file structure
-
- declarations part 1
- %{
- verbatim code
- %}
- declarations part 2
- %%
- keywords
- %%
- functions
-
-you would insert `*INDENT-OFF*' and `*INDENT-ON*' comments as follows:
-
- /* *INDENT-OFF* */
- declarations part 1
- %{
- /* *INDENT-ON* */
- verbatim code
- /* *INDENT-OFF* */
- %}
- declarations part 2
- %%
- keywords
- %%
- /* *INDENT-ON* */
- functions
-
-
-File: gperf.info, Node: Output Format, Next: Binary Strings, Prev: Input Format, Up: Description
-
-3.2 Output Format for Generated C Code with `gperf'
-===================================================
-
- Several options control how the generated C code appears on the
-standard output. Two C functions are generated. They are called
-`hash' and `in_word_set', although you may modify their names with a
-command-line option. Both functions require two arguments, a string,
-`char *' STR, and a length parameter, `int' LEN. Their default
-function prototypes are as follows:
-
- -- Function: unsigned int hash (const char * STR, unsigned int LEN)
- By default, the generated `hash' function returns an integer value
- created by adding LEN to several user-specified STR byte positions
- indexed into an "associated values" table stored in a local static
- array. The associated values table is constructed internally by
- `gperf' and later output as a static local C array called
- `hash_table'. The relevant selected positions (i.e. indices into
- STR) are specified via the `-k' option when running `gperf', as
- detailed in the _Options_ section below (*note Options::).
-
- -- Function: in_word_set (const char * STR, unsigned int LEN)
- If STR is in the keyword set, returns a pointer to that keyword.
- More exactly, if the option `-t' (or, equivalently, the
- `%struct-type' declaration) was given, it returns a pointer to the
- matching keyword's structure. Otherwise it returns `NULL'.
-
- If the option `-c' (or, equivalently, the `%compare-strncmp'
-declaration) is not used, STR must be a NUL terminated string of
-exactly length LEN. If `-c' (or, equivalently, the `%compare-strncmp'
-declaration) is used, STR must simply be an array of LEN bytes and does
-not need to be NUL terminated.
-
- The code generated for these two functions is affected by the
-following options:
-
-`-t'
-`--struct-type'
- Make use of the user-defined `struct'.
-
-`-S TOTAL-SWITCH-STATEMENTS'
-`--switch=TOTAL-SWITCH-STATEMENTS'
- Generate 1 or more C `switch' statement rather than use a large,
- (and potentially sparse) static array. Although the exact time and
- space savings of this approach vary according to your C compiler's
- degree of optimization, this method often results in smaller and
- faster code.
-
- If the `-t' and `-S' options (or, equivalently, the `%struct-type'
-and `%switch' declarations) are omitted, the default action is to
-generate a `char *' array containing the keywords, together with
-additional empty strings used for padding the array. By experimenting
-with the various input and output options, and timing the resulting C
-code, you can determine the best option choices for different keyword
-set characteristics.
-
-
-File: gperf.info, Node: Binary Strings, Next: Output Copyright, Prev: Output Format, Up: Description
-
-3.3 Use of NUL bytes
-====================
-
- By default, the code generated by `gperf' operates on zero
-terminated strings, the usual representation of strings in C. This
-means that the keywords in the input file must not contain NUL bytes,
-and the STR argument passed to `hash' or `in_word_set' must be NUL
-terminated and have exactly length LEN.
-
- If option `-c' (or, equivalently, the `%compare-strncmp'
-declaration) is used, then the STR argument does not need to be NUL
-terminated. The code generated by `gperf' will only access the first
-LEN, not LEN+1, bytes starting at STR. However, the keywords in the
-input file still must not contain NUL bytes.
-
- If option `-l' (or, equivalently, the `%compare-lengths'
-declaration) is used, then the hash table performs binary comparison.
-The keywords in the input file may contain NUL bytes, written in string
-syntax as `\000' or `\x00', and the code generated by `gperf' will
-treat NUL like any other byte. Also, in this case the `-c' option (or,
-equivalently, the `%compare-strncmp' declaration) is ignored.
-
-
-File: gperf.info, Node: Output Copyright, Prev: Binary Strings, Up: Description
-
-3.4 The Copyright of the Output
-===============================
-
- `gperf' is under GPL, but that does not cause the output produced by
-`gperf' to be under GPL. The reason is that the output contains only
-small pieces of text that come directly from `gperf''s source code -
-only about 7 lines long, too small for being significant -, and
-therefore the output is not a "work based on `gperf'" (in the sense of
-the GPL version 3).
-
- On the other hand, the output produced by `gperf' contains
-essentially all of the input file. Therefore the output is a
-"derivative work" of the input (in the sense of U.S. copyright law);
-and its copyright status depends on the copyright of the input. For
-most software licenses, the result is that the the output is under the
-same license, with the same copyright holder, as the input that was
-passed to `gperf'.
-
-
-File: gperf.info, Node: Options, Next: Bugs, Prev: Description, Up: Top
-
-4 Invoking `gperf'
-******************
-
- There are _many_ options to `gperf'. They were added to make the
-program more convenient for use with real applications. "On-line" help
-is readily available via the `--help' option. Here is the complete
-list of options.
-
-* Menu:
-
-* Output File:: Specifying the Location of the Output File
-* Input Details:: Options that affect Interpretation of the Input File
-* Output Language:: Specifying the Language for the Output Code
-* Output Details:: Fine tuning Details in the Output Code
-* Algorithmic Details:: Changing the Algorithms employed by `gperf'
-* Verbosity:: Informative Output
-
-
-File: gperf.info, Node: Output File, Next: Input Details, Prev: Options, Up: Options
-
-4.1 Specifying the Location of the Output File
-==============================================
-
-`--output-file=FILE'
- Allows you to specify the name of the file to which the output is
- written to.
-
- The results are written to standard output if no output file is
-specified or if it is `-'.
-
-
-File: gperf.info, Node: Input Details, Next: Output Language, Prev: Output File, Up: Options
-
-4.2 Options that affect Interpretation of the Input File
-========================================================
-
- These options are also available as declarations in the input file
-(*note Gperf Declarations::).
-
-`-e KEYWORD-DELIMITER-LIST'
-`--delimiters=KEYWORD-DELIMITER-LIST'
- Allows you to provide a string containing delimiters used to
- separate keywords from their attributes. The default is ",". This
- option is essential if you want to use keywords that have embedded
- commas or newlines. One useful trick is to use -e'TAB', where TAB
- is the literal tab character.
-
-`-t'
-`--struct-type'
- Allows you to include a `struct' type declaration for generated
- code. Any text before a pair of consecutive `%%' is considered
- part of the type declaration. Keywords and additional fields may
- follow this, one group of fields per line. A set of examples for
- generating perfect hash tables and functions for Ada, C, C++,
- Pascal, Modula 2, Modula 3 and JavaScript reserved words are
- distributed with this release.
-
-`--ignore-case'
- Consider upper and lower case ASCII characters as equivalent. The
- string comparison will use a case insignificant character
- comparison. Note that locale dependent case mappings are ignored.
- This option is therefore not suitable if a properly
- internationalized or locale aware case mapping should be used.
- (For example, in a Turkish locale, the upper case equivalent of
- the lowercase ASCII letter `i' is the non-ASCII character `capital
- i with dot above'.) For this case, it is better to apply an
- uppercase or lowercase conversion on the string before passing it
- to the `gperf' generated function.
-
-
-File: gperf.info, Node: Output Language, Next: Output Details, Prev: Input Details, Up: Options
-
-4.3 Options to specify the Language for the Output Code
-=======================================================
-
- These options are also available as declarations in the input file
-(*note Gperf Declarations::).
-
-`-L GENERATED-LANGUAGE-NAME'
-`--language=GENERATED-LANGUAGE-NAME'
- Instructs `gperf' to generate code in the language specified by the
- option's argument. Languages handled are currently:
-
- `KR-C'
- Old-style K&R C. This language is understood by old-style C
- compilers and ANSI C compilers, but ANSI C compilers may flag
- warnings (or even errors) because of lacking `const'.
-
- `C'
- Common C. This language is understood by ANSI C compilers,
- and also by old-style C compilers, provided that you `#define
- const' to empty for compilers which don't know about this
- keyword.
-
- `ANSI-C'
- ANSI C. This language is understood by ANSI C compilers and
- C++ compilers.
-
- `C++'
- C++. This language is understood by C++ compilers.
-
- The default is ANSI-C.
-
-`-a'
- This option is supported for compatibility with previous releases
- of `gperf'. It does not do anything.
-
-`-g'
- This option is supported for compatibility with previous releases
- of `gperf'. It does not do anything.
-
-
-File: gperf.info, Node: Output Details, Next: Algorithmic Details, Prev: Output Language, Up: Options
-
-4.4 Options for fine tuning Details in the Output Code
-======================================================
-
- Most of these options are also available as declarations in the
-input file (*note Gperf Declarations::).
-
-`-K SLOT-NAME'
-`--slot-name=SLOT-NAME'
- This option is only useful when option `-t' (or, equivalently, the
- `%struct-type' declaration) has been given. By default, the
- program assumes the structure component identifier for the keyword
- is `name'. This option allows an arbitrary choice of identifier
- for this component, although it still must occur as the first
- field in your supplied `struct'.
-
-`-F INITIALIZERS'
-`--initializer-suffix=INITIALIZERS'
- This option is only useful when option `-t' (or, equivalently, the
- `%struct-type' declaration) has been given. It permits to specify
- initializers for the structure members following SLOT-NAME in
- empty hash table entries. The list of initializers should start
- with a comma. By default, the emitted code will zero-initialize
- structure members following SLOT-NAME.
-
-`-H HASH-FUNCTION-NAME'
-`--hash-function-name=HASH-FUNCTION-NAME'
- Allows you to specify the name for the generated hash function.
- Default name is `hash'. This option permits the use of two hash
- tables in the same file.
-
-`-N LOOKUP-FUNCTION-NAME'
-`--lookup-function-name=LOOKUP-FUNCTION-NAME'
- Allows you to specify the name for the generated lookup function.
- Default name is `in_word_set'. This option permits multiple
- generated hash functions to be used in the same application.
-
-`-Z CLASS-NAME'
-`--class-name=CLASS-NAME'
- This option is only useful when option `-L C++' (or, equivalently,
- the `%language=C++' declaration) has been given. It allows you to
- specify the name of generated C++ class. Default name is
- `Perfect_Hash'.
-
-`-7'
-`--seven-bit'
- This option specifies that all strings that will be passed as
- arguments to the generated hash function and the generated lookup
- function will solely consist of 7-bit ASCII characters (bytes in
- the range 0..127). (Note that the ANSI C functions `isalnum' and
- `isgraph' do _not_ guarantee that a byte is in this range. Only
- an explicit test like `c >= 'A' && c <= 'Z'' guarantees this.)
- This was the default in versions of `gperf' earlier than 2.7; now
- the default is to support 8-bit and multibyte characters.
-
-`-l'
-`--compare-lengths'
- Compare keyword lengths before trying a string comparison. This
- option is mandatory for binary comparisons (*note Binary
- Strings::). It also might cut down on the number of string
- comparisons made during the lookup, since keywords with different
- lengths are never compared via `strcmp'. However, using `-l'
- might greatly increase the size of the generated C code if the
- lookup table range is large (which implies that the switch option
- `-S' or `%switch' is not enabled), since the length table contains
- as many elements as there are entries in the lookup table.
-
-`-c'
-`--compare-strncmp'
- Generates C code that uses the `strncmp' function to perform
- string comparisons. The default action is to use `strcmp'.
-
-`-C'
-`--readonly-tables'
- Makes the contents of all generated lookup tables constant, i.e.,
- "readonly". Many compilers can generate more efficient code for
- this by putting the tables in readonly memory.
-
-`-E'
-`--enum'
- Define constant values using an enum local to the lookup function
- rather than with #defines. This also means that different lookup
- functions can reside in the same file. Thanks to James Clark
- `<jjc@ai.mit.edu>'.
-
-`-I'
-`--includes'
- Include the necessary system include file, `<string.h>', at the
- beginning of the code. By default, this is not done; the user must
- include this header file himself to allow compilation of the code.
-
-`-G'
-`--global-table'
- Generate the static table of keywords as a static global variable,
- rather than hiding it inside of the lookup function (which is the
- default behavior).
-
-`-P'
-`--pic'
- Optimize the generated table for inclusion in shared libraries.
- This reduces the startup time of programs using a shared library
- containing the generated code. If the option `-t' (or,
- equivalently, the `%struct-type' declaration) is also given, the
- first field of the user-defined struct must be of type `int', not
- `char *', because it will contain offsets into the string pool
- instead of actual strings. To convert such an offset to a string,
- you can use the expression `stringpool + O', where O is the
- offset. The string pool name can be changed through the option
- `--string-pool-name'.
-
-`-Q STRING-POOL-NAME'
-`--string-pool-name=STRING-POOL-NAME'
- Allows you to specify the name of the generated string pool
- created by option `-P'. The default name is `stringpool'. This
- option permits the use of two hash tables in the same file, with
- `-P' and even when the option `-G' (or, equivalently, the
- `%global-table' declaration) is given.
-
-`--null-strings'
- Use NULL strings instead of empty strings for empty keyword table
- entries. This reduces the startup time of programs using a shared
- library containing the generated code (but not as much as option
- `-P'), at the expense of one more test-and-branch instruction at
- run time.
-
-`-W HASH-TABLE-ARRAY-NAME'
-`--word-array-name=HASH-TABLE-ARRAY-NAME'
- Allows you to specify the name for the generated array containing
- the hash table. Default name is `wordlist'. This option permits
- the use of two hash tables in the same file, even when the option
- `-G' (or, equivalently, the `%global-table' declaration) is given.
-
-`--length-table-name=LENGTH-TABLE-ARRAY-NAME'
- Allows you to specify the name for the generated array containing
- the length table. Default name is `lengthtable'. This option
- permits the use of two length tables in the same file, even when
- the option `-G' (or, equivalently, the `%global-table'
- declaration) is given.
-
-`-S TOTAL-SWITCH-STATEMENTS'
-`--switch=TOTAL-SWITCH-STATEMENTS'
- Causes the generated C code to use a `switch' statement scheme,
- rather than an array lookup table. This can lead to a reduction
- in both time and space requirements for some input files. The
- argument to this option determines how many `switch' statements
- are generated. A value of 1 generates 1 `switch' containing all
- the elements, a value of 2 generates 2 tables with 1/2 the
- elements in each `switch', etc. This is useful since many C
- compilers cannot correctly generate code for large `switch'
- statements. This option was inspired in part by Keith Bostic's
- original C program.
-
-`-T'
-`--omit-struct-type'
- Prevents the transfer of the type declaration to the output file.
- Use this option if the type is already defined elsewhere.
-
-`-p'
- This option is supported for compatibility with previous releases
- of `gperf'. It does not do anything.
-
-
-File: gperf.info, Node: Algorithmic Details, Next: Verbosity, Prev: Output Details, Up: Options
-
-4.5 Options for changing the Algorithms employed by `gperf'
-===========================================================
-
-`-k SELECTED-BYTE-POSITIONS'
-`--key-positions=SELECTED-BYTE-POSITIONS'
- Allows selection of the byte positions used in the keywords' hash
- function. The allowable choices range between 1-255, inclusive.
- The positions are separated by commas, e.g., `-k 9,4,13,14';
- ranges may be used, e.g., `-k 2-7'; and positions may occur in any
- order. Furthermore, the wildcard '*' causes the generated hash
- function to consider *all* byte positions in each keyword, whereas
- '$' instructs the hash function to use the "final byte" of a
- keyword (this is the only way to use a byte position greater than
- 255, incidentally).
-
- For instance, the option `-k 1,2,4,6-10,'$'' generates a hash
- function that considers positions 1,2,4,6,7,8,9,10, plus the last
- byte in each keyword (which may be at a different position for each
- keyword, obviously). Keywords with length less than the indicated
- byte positions work properly, since selected byte positions
- exceeding the keyword length are simply not referenced in the hash
- function.
-
- This option is not normally needed since version 2.8 of `gperf';
- the default byte positions are computed depending on the keyword
- set, through a search that minimizes the number of byte positions.
-
-`-D'
-`--duplicates'
- Handle keywords whose selected byte sets hash to duplicate values.
- Duplicate hash values can occur if a set of keywords has the same
- names, but possesses different attributes, or if the selected byte
- positions are not well chosen. With the -D option `gperf' treats
- all these keywords as part of an equivalence class and generates a
- perfect hash function with multiple comparisons for duplicate
- keywords. It is up to you to completely disambiguate the keywords
- by modifying the generated C code. However, `gperf' helps you out
- by organizing the output.
-
- Using this option usually means that the generated hash function
- is no longer perfect. On the other hand, it permits `gperf' to
- work on keyword sets that it otherwise could not handle.
-
-`-m ITERATIONS'
-`--multiple-iterations=ITERATIONS'
- Perform multiple choices of the `-i' and `-j' values, and choose
- the best results. This increases the running time by a factor of
- ITERATIONS but does a good job minimizing the generated table size.
-
-`-i INITIAL-VALUE'
-`--initial-asso=INITIAL-VALUE'
- Provides an initial VALUE for the associate values array. Default
- is 0. Increasing the initial value helps inflate the final table
- size, possibly leading to more time efficient keyword lookups.
- Note that this option is not particularly useful when `-S' (or,
- equivalently, `%switch') is used. Also, `-i' is overridden when
- the `-r' option is used.
-
-`-j JUMP-VALUE'
-`--jump=JUMP-VALUE'
- Affects the "jump value", i.e., how far to advance the associated
- byte value upon collisions. JUMP-VALUE is rounded up to an odd
- number, the default is 5. If the JUMP-VALUE is 0 `gperf' jumps by
- random amounts.
-
-`-n'
-`--no-strlen'
- Instructs the generator not to include the length of a keyword when
- computing its hash value. This may save a few assembly
- instructions in the generated lookup table.
-
-`-r'
-`--random'
- Utilizes randomness to initialize the associated values table.
- This frequently generates solutions faster than using deterministic
- initialization (which starts all associated values at 0).
- Furthermore, using the randomization option generally increases
- the size of the table.
-
-`-s SIZE-MULTIPLE'
-`--size-multiple=SIZE-MULTIPLE'
- Affects the size of the generated hash table. The numeric
- argument for this option indicates "how many times larger or
- smaller" the maximum associated value range should be, in
- relationship to the number of keywords. It can be written as an
- integer, a floating-point number or a fraction. For example, a
- value of 3 means "allow the maximum associated value to be about 3
- times larger than the number of input keywords". Conversely, a
- value of 1/3 means "allow the maximum associated value to be about
- 3 times smaller than the number of input keywords". Values
- smaller than 1 are useful for limiting the overall size of the
- generated hash table, though the option `-m' is better at this
- purpose.
-
- If `generate switch' option `-S' (or, equivalently, `%switch') is
- _not_ enabled, the maximum associated value influences the static
- array table size, and a larger table should decrease the time
- required for an unsuccessful search, at the expense of extra table
- space.
-
- The default value is 1, thus the default maximum associated value
- about the same size as the number of keywords (for efficiency, the
- maximum associated value is always rounded up to a power of 2).
- The actual table size may vary somewhat, since this technique is
- essentially a heuristic.
-
-
-File: gperf.info, Node: Verbosity, Prev: Algorithmic Details, Up: Options
-
-4.6 Informative Output
-======================
-
-`-h'
-`--help'
- Prints a short summary on the meaning of each program option.
- Aborts further program execution.
-
-`-v'
-`--version'
- Prints out the current version number.
-
-`-d'
-`--debug'
- Enables the debugging option. This produces verbose diagnostics to
- "standard error" when `gperf' is executing. It is useful both for
- maintaining the program and for determining whether a given set of
- options is actually speeding up the search for a solution. Some
- useful information is dumped at the end of the program when the
- `-d' option is enabled.
-
-
-File: gperf.info, Node: Bugs, Next: Projects, Prev: Options, Up: Top
-
-5 Known Bugs and Limitations with `gperf'
-*****************************************
-
- The following are some limitations with the current release of
-`gperf':
-
- * The `gperf' utility is tuned to execute quickly, and works quickly
- for small to medium size data sets (around 1000 keywords). It is
- extremely useful for maintaining perfect hash functions for
- compiler keyword sets. Several recent enhancements now enable
- `gperf' to work efficiently on much larger keyword sets (over
- 15,000 keywords). When processing large keyword sets it helps
- greatly to have over 8 megs of RAM.
-
- * The size of the generate static keyword array can get _extremely_
- large if the input keyword file is large or if the keywords are
- quite similar. This tends to slow down the compilation of the
- generated C code, and _greatly_ inflates the object code size. If
- this situation occurs, consider using the `-S' option to reduce
- data size, potentially increasing keyword recognition time a
- negligible amount. Since many C compilers cannot correctly
- generate code for large switch statements it is important to
- qualify the -S option with an appropriate numerical argument that
- controls the number of switch statements generated.
-
- * The maximum number of selected byte positions has an arbitrary
- limit of 255. This restriction should be removed, and if anyone
- considers this a problem write me and let me know so I can remove
- the constraint.
-
-
-File: gperf.info, Node: Projects, Next: Bibliography, Prev: Bugs, Up: Top
-
-6 Things Still Left to Do
-*************************
-
- It should be "relatively" easy to replace the current perfect hash
-function algorithm with a more exhaustive approach; the perfect hash
-module is essential independent from other program modules. Additional
-worthwhile improvements include:
-
- * Another useful extension involves modifying the program to generate
- "minimal" perfect hash functions (under certain circumstances, the
- current version can be rather extravagant in the generated table
- size). This is mostly of theoretical interest, since a sparse
- table often produces faster lookups, and use of the `-S' `switch'
- option can minimize the data size, at the expense of slightly
- longer lookups (note that the gcc compiler generally produces good
- code for `switch' statements, reducing the need for more complex
- schemes).
-
- * In addition to improving the algorithm, it would also be useful to
- generate an Ada package as the code output, in addition to the
- current C and C++ routines.
-
-
-File: gperf.info, Node: Bibliography, Next: Concept Index, Prev: Projects, Up: Top
-
-7 Bibliography
-**************
-
-[1] Chang, C.C.: A Scheme for Constructing Ordered Minimal Perfect
-Hashing Functions Information Sciences 39(1986), 187-195.
-
-[2] Cichelli, Richard J. Author's Response to "On Cichelli's Minimal
-Perfect Hash Functions Method" Communications of the ACM, 23,
-12(December 1980), 729.
-
-[3] Cichelli, Richard J. Minimal Perfect Hash Functions Made Simple
-Communications of the ACM, 23, 1(January 1980), 17-19.
-
-[4] Cook, C. R. and Oldehoeft, R.R. A Letter Oriented Minimal Perfect
-Hashing Function SIGPLAN Notices, 17, 9(September 1982), 18-27.
-
-[5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M.
-Practical Perfect Hashing Computer Journal, 28, 1(January 1985), 54-58.
-
-[6] Jaeschke, G. Reciprocal Hashing: A Method for Generating Minimal
-Perfect Hashing Functions Communications of the ACM, 24, 12(December
-1981), 829-833.
-
-[7] Jaeschke, G. and Osterburg, G. On Cichelli's Minimal Perfect Hash
-Functions Method Communications of the ACM, 23, 12(December 1980),
-728-729.
-
-[8] Sager, Thomas J. A Polynomial Time Generator for Minimal Perfect
-Hash Functions Communications of the ACM, 28, 5(December 1985), 523-532
-
-[9] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator Second
-USENIX C++ Conference Proceedings, April 1990.
-
-[10] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator C++
-Report, SIGS 10 10 (November/December 1998).
-
-[11] Sebesta, R.W. and Taylor, M.A. Minimal Perfect Hash Functions for
-Reserved Word Lists SIGPLAN Notices, 20, 12(September 1985), 47-53.
-
-[12] Sprugnoli, R. Perfect Hashing Functions: A Single Probe Retrieving
-Method for Static Sets Communications of the ACM, 20 11(November 1977),
-841-850.
-
-[13] Stallman, Richard M. Using and Porting GNU CC Free Software
-Foundation, 1988.
-
-[14] Stroustrup, Bjarne The C++ Programming Language. Addison-Wesley,
-1986.
-
-[15] Tiemann, Michael D. User's Guide to GNU C++ Free Software
-Foundation, 1989.
-
-
-File: gperf.info, Node: Concept Index, Prev: Bibliography, Up: Top
-
-Concept Index
-*************
-
-
-* Menu:
-
-* %%: User-supplied Struct.
- (line 33)
-* %7bit: Gperf Declarations. (line 95)
-* %compare-lengths: Gperf Declarations. (line 103)
-* %compare-strncmp: Gperf Declarations. (line 115)
-* %define class-name: Gperf Declarations. (line 89)
-* %define hash-function-name: Gperf Declarations. (line 79)
-* %define initializer-suffix: Gperf Declarations. (line 71)
-* %define length-table-name: Gperf Declarations. (line 173)
-* %define lookup-function-name: Gperf Declarations. (line 84)
-* %define slot-name: Gperf Declarations. (line 63)
-* %define string-pool-name: Gperf Declarations. (line 152)
-* %define word-array-name: Gperf Declarations. (line 167)
-* %delimiters: Gperf Declarations. (line 24)
-* %enum: Gperf Declarations. (line 124)
-* %global-table: Gperf Declarations. (line 135)
-* %ignore-case: Gperf Declarations. (line 34)
-* %includes: Gperf Declarations. (line 130)
-* %language: Gperf Declarations. (line 39)
-* %null-strings: Gperf Declarations. (line 160)
-* %omit-struct-type: Gperf Declarations. (line 192)
-* %pic: Gperf Declarations. (line 140)
-* %readonly-tables: Gperf Declarations. (line 119)
-* %struct-type: Gperf Declarations. (line 30)
-* %switch: Gperf Declarations. (line 180)
-* %{: C Code Inclusion. (line 6)
-* %}: C Code Inclusion. (line 6)
-* Array name: Output Details. (line 129)
-* Bugs: Contributors. (line 6)
-* Class name: Output Details. (line 41)
-* Copyright: Output Copyright. (line 6)
-* Declaration section: Input Format. (line 6)
-* Delimiters: Input Details. (line 11)
-* Duplicates: Algorithmic Details. (line 32)
-* Format: Input Format. (line 6)
-* Functions section: Input Format. (line 6)
-* hash: Output Format. (line 14)
-* hash table: Output Format. (line 6)
-* in_word_set: Output Format. (line 24)
-* Initializers: Output Details. (line 20)
-* Jump value: Algorithmic Details. (line 63)
-* Keywords section: Input Format. (line 6)
-* Minimal perfect hash functions: Search Structures. (line 30)
-* NUL: Binary Strings. (line 6)
-* Slot name: Output Details. (line 11)
-* Static search structure: Search Structures. (line 6)
-* switch <1>: Output Details. (line 143)
-* switch: Output Format. (line 44)
-
-
-
-Tag Table:
-Node: Top1235
-Node: Copying3372
-Node: Contributors40913
-Node: Motivation42106
-Node: Search Structures43238
-Node: Description46797
-Node: Input Format48755
-Node: Declarations49900
-Node: User-supplied Struct50488
-Node: Gperf Declarations52103
-Node: C Code Inclusion60900
-Node: Keywords61743
-Node: Functions63691
-Node: Controls for GNU indent64229
-Node: Output Format65180
-Node: Binary Strings67975
-Node: Output Copyright69151
-Node: Options70090
-Node: Output File70879
-Node: Input Details71271
-Node: Output Language73110
-Node: Output Details74534
-Node: Algorithmic Details81801
-Node: Verbosity87058
-Node: Bugs87769
-Node: Projects89365
-Node: Bibliography90497
-Node: Concept Index92512
-
-End Tag Table
diff --git a/doc/gperf.pdf b/doc/gperf.pdf
deleted file mode 100644
index edf3b90..0000000
--- a/doc/gperf.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/gperf.ps b/doc/gperf.ps
deleted file mode 100644
index 3b36de0..0000000
--- a/doc/gperf.ps
+++ /dev/null
@@ -1,6348 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.96 Copyright 2005 Radical Eye Software
-%%Title: ./gperf.dvi
-%%CreationDate: Sun Dec 20 11:01:54 2009
-%%Pages: 37
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 843
-%%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMTT10 CMSLTT10 CMTT9 CMSL10
-%%+ CMTI10 CMSS10 CMB10 CMR9 CMMI9 CMMI12 CMMI10
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -D600 -o gperf.ps ./gperf.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2009.12.20:1101
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
-0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
-E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
-7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
-88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
-DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
-AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMMI12
-%!PS-AdobeFont-1.1: CMMI12 1.100
-%%CreationDate: 1996 Jul 27 08:57:55
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-30 -250 1026 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67
-3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993
-EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F
-4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59
-2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A
-323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C
-2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1
-D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA
-5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F
-0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D
-A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77
-2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60
-00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8
-CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757
-99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA
-C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D
-5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295
-55B50047CC8911C98FE1A7BA6CDEA82D34476286E710776823690AD333DD3A49
-335002F4680DBE1C21174BF016B0DF799B01EB9D6988479A8334BBA2F8DC7146
-BC0DAE9DE3A6453B181808E68A89E0C02DAC6264D002B422EBC1CF14F65D9888
-15EE6D514D3457F7F3C6A3D17EE1DA076F73ECC392D349174DA9E4680F29CE10
-0157E42CA35F5DBFF56BFC3AA07E61A78DBE882C5AB388220C19750D3643E7C8
-23D6673027CE568A4ACCE1D12B1D9E5A43507F4AF9BC873237F65A6B95078DD2
-378007CF0F0DE7CCEF760E19D6D1D7B412EC5D4972
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMMI9
-%!PS-AdobeFont-1.1: CMMI9 1.100
-%%CreationDate: 1996 Jul 23 07:53:55
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-/FontBBox{-29 -250 1075 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935
-86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505
-DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD
-67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF
-6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554
-FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7
-22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD
-730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F
-449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7
-97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A
-E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C
-AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA
-A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599
-B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B
-9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E
-759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3
-5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2
-BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680
-3435E9C9445A59A7C666418C4F2512C32058B1CE1EA46C7839C6E372F6CC60AE
-2CF46DD2F130B532DE8ECD42D9204500E413799E298CF6426F28D23BB7216BEA
-1A618B3ECC61B44DDEF0BB22D640B47C09AC0DF378CE68FC9CD88BDAE9ED89CB
-431A5CF9C3E9528FEE7A9936C2B1CF7B38DD2B95773F0EA0051607BE1B0B3588
-A8B907A5EF011B4622C5093A7B107DD1EED6FEE9536DECF1CC96E65373D0F433
-30AE3C094654ABF4698C07F8C74E71D023DFD242EE83B1306786124DD8C6BFA7
-801E66CB944BE7EBCB3FE803EC97067AF7AFC8A4E9AC9D11
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMR9
-%!PS-AdobeFont-1.1: CMR9 1.0
-%%CreationDate: 1991 Aug 20 16:39:59
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 39 /quoteright put
-dup 44 /comma put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 83 /S put
-dup 85 /U put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-39 -250 1036 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
-92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835
-3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203
-046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E
-C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A
-A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2
-A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D
-731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B
-09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1
-49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B
-5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B
-54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C
-C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F
-11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AD14F1CBE935942AEC
-D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A
-109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40
-3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343
-C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7A66D8E9C810
-49CCC0D35AE00D3669EC7D8ED957EEB2105BDCF7408E0B04A325495D38BCE845
-E96329244411EAAC14D3ABDD2BECAD7D391ADFFE3F7565B14FD29737EAAED3C0
-7F3981DDBE07D4AC09F6C1A32369BB88852CCE980C1E950E27EF3CF8A840B393
-9792FC1A510BCB4A2976BB640EE4510EA2BA3C7B5FE02F5F0F845B6B00F617FD
-EB4655CED34B0097F22329071DE7738CA994BD0F983C5C4599AB9161F3776023
-9AB724F231D9C38A76FC8F6A2DD4E6C9FD2B8061CDC814442CC69E94D437AC78
-B2DB204A99A3240E1123E0568F6EDFE11586FD1056FD547B7CC477D8D32796D8
-A37A1D4F89A6371F302C421EB4279D560D645BE186DC504CA606DE1EBCE98358
-0B8C800A25D76755E1006164AED015712653A9EF8DB0B980E8A2E6D30E9CA40B
-433989DAF8A217D2A70E1F2C2B994615FB279E30AAF8B978895F1CADD9259DFE
-03DBC2D65ABBC25560ECAD7F743FCCBDA16EB8AEEDD091BF1DF8339DF57DCDF6
-7CF63057040C0FD028EDE603C19448D1CA4AE12B15DCA284FB786B144A2D7E8A
-82ED6CC0CC8A43E5CBB660231928EAD80834F2F58311DB3FAC75D071A496C3D6
-24AEEB63CA0697CABD7A59C526C125E26701094960851D4EEC73E4D03E2A3B63
-0518DE30A8D56C4CE6C892A4CD61371739DED0C95474D1DEDDDA5C83480C8023
-B3CC77CA3D2DAB88A020873D02EF2B242555140A908FD857F37F704FCE3A45E9
-E2D02C68F689F4692664CB4C60225D7D19A2A3D88A7F2CEA66BFE06F3D9CF622
-676E384A983406A25F80588F1BEA3CE41AED345303458308C476FDA857E053C9
-E17D561BCA03FB7C35D8134C01E2209F2A9B8D25529DE43CB6EF0AC872C99C79
-CB7D9144577C4F939B4B2D8F93543543A4161B8209D38CF073963A78A305D9AC
-7A9F3BC2350D3455BE94CADFC7F4BC01EFE76BCA10F3F35930BEBADED4F650A6
-71452586A3C29A644F2F25BDE14053F5CBFBE26454589967297FB9791D108832
-3585A2F66A42E75B3DD5B1536E457F5DC3EAF69C3C5E8ACF4F32BB5118F503D7
-8D328212074424E6B2E83BD26E73B0FFE3957D5CE744067A12229451A17082E8
-E7AA765FCE539C3CB34D5185F381894C074AC30E906773F2FF25689E488309E5
-28B3121DBB2466B3A07DD8119635F5AA790DD87A29F1E0184F9B811DBFD9988C
-5E7C698AADBA838F81D63F61022D8F28FD942AC95C59AE5C710A6D1EB4913078
-6215204C63019448ECEFFFF812B33014B6BC5FB22F4DCA7817CB0E21747E574C
-B98762D02F302896B17FF8AF44E95832C7C08DFBEC1B1F33E16704FD27EBEACC
-591A81AF3AF9E0668EA64088ECBC4317136D895BD030F8C5A3C4218AECD86388
-FE4775E057EDE6251F771EA5F125E6026697B0741729BF8DE0B542AD32B562B8
-7F61E71460AA96E414FD4ABD7D23D4C7ECB122E7DEC30400BFE0E7C19990506B
-F27B5F316BA18F35C7AF31422718B22FC86E9310737D2A638E02149A3758C681
-700987E99FD05EEA921AC6E6E5C785FCFEAC82FCD9D5FB2CD3699D8B1C81D11C
-5EC87314EF4E837D6548554C11D3D21E847405E7FF2CEA029E48046168B3E08E
-2CEE460980CFDF59491A35F10D15A68E6D06CDD3BC51037F68C0502EBD64393A
-89157994982EE9EA6926C64EF5023A0FA334D2414C2839B12D12E03EA51AD687
-3F9E7BD9D355AF773648FFDFF6E21E944CD26C6B8B0592B1A925F8C0605A6E45
-DE3E637307EFF7027A98136B6F93B0C9088743DD8DBE1CFA3F87F06A8434FFA7
-4D9468EEED7FEB9F4DF36AA6E872F3FDDC253AD795EAEB294BEEDF6EEE1EBF96
-4571274E142A5BBA3E68EC6857444B708761CC7B4ED0FF7410AB69F93DE6B46E
-8EA7D1CCAF79EBD23CA34879E0865F6D1CA61D6FA3A1E0B37F19EF5FEEAAD250
-052B463532465EDE2C010E58E4C56D3C3871128400DFD07B9AE06CE5CE56D333
-85A22A76BA0BD255D47FF4C9A8528338E08B9E37A22230563C22B57D732C40CB
-A8596ACECA557E3D8F9C842B47BD89ABEAF9A0FBF45399B902AAAFAAE45C13D2
-7673A789D91398C3365C9F42D060C49459F9C0F8119BDFCC6B712323701C1B3B
-90E59BAB047F1A2A3C2028AA427E39ACC5BEC9FFBD9AF2EF4977069E9D12E18F
-2DF8AB7CDE5B40232CA3D1A65AB7C995A4BE80B2575372C757C38E3A6B014DD3
-743CA81177817AA76C527DC9B4AD429DC20558C5E1D195547B1A86EA47B8363D
-B6BAF78AC5FCC2A345768ADF8E1D4473199B5BE29FED3561B249A48CB2D1D295
-3628EF6305ADCEF41706DC434EABAFC3286A5C538F61DF8AB76778A5EDC39BD6
-F33DC9E580152F032ECAC7D3000B97E9C0B4637486CD11D2BF47B5DF8844319A
-AFC9E4B0000EB1EC745CEDC6D052D772B5325B656C1DC7D27F7EB0586094EEAC
-AF339B7E2B056126C9796F68659650D0BDC4C456931DE0CC79560771D6374EBD
-8C8DE881E78D31F1F5CCB1597602D07793EFE2F1B991C8FD05F35CE2168CC1C9
-9815DB43C9E19662B27AA40B7F2ECDB5FA6EFF7C1C4AEE23230BF80C352FE320
-1D8F3E59158E52A32EBD691FD5BC0D1D5370F90A0743F8E5BCD1485372F001F2
-2DDEE60AD113AA36D9A2C830098E669838958588AFBBE457D008A089E7A1DC17
-8ECC91F8509FB5A0B7935928EE72086B5BF92C10F195B1183DD282E2F31AE6DB
-4B660B0224C907BEF3CD0A45C9B1C92F3915608015C9D4178DE9A1AF2621A214
-E3975C1E95C5F7315D1E91CF055B43141583650EBB8D570D8E88A545899980DB
-E07C092978AE0A295E80F888220DC5EFE60BCB534B4CAA13D56892A18DA6784A
-456386E6B5FDE92E0880FBA74BCDE958BC6F1664156288F136DA69DF84AE6E6B
-F04C336D08643F64F579C8865C8100DE1139AA75B0FF349ECB193CD40FA60319
-B24B825C9DE6CCF7BAC2D722B93D386D19170D71F81FDC33AC8CEABB5125E50F
-0151E113EAFEA48C1C05C113952BE0ABC5B2A3908192397FC56A1F4090751BAB
-D409CA4AC0091866D114B9FF10AC90B6916ED111EC224F294BDF8CCCDC3E9336
-B8CB13A695887B8A893BBA7562E054E7BC2C4AA4CBB96542B0137F091B7578C6
-73B34C5149D939F8590ACE8CC083F63F8F239175513255CB4697E7E7ED584401
-A2FFF58723043A7F046FC9EC4C70E835FE80B07D4EC11FB14D16793597A09BF3
-292A8367AE4A8A279CB92FCD2EEC083A75195178CAA4A1D93D67A2C6A98D408D
-A7C145F5FE4C6C7CF2A4CFAFC02DDD631B745B13FEA4A5710B4F0D7E992D18DD
-A5BDE04158D7EC4DB9DCE3E24558FD74C2599E4EF16DA1C33991C7D27FC1BB78
-4E9865C28A75075C4609D08EDCD4DEC28522043E510F637944C3BB8AA67C2CC6
-9E3FD5B528A6744F4E0DF4D924809D1FD627F4B6031D85E13E3B07C7D710A0EC
-86BB8269797E745D7A7458F7D15D1810616EE9699BCA0D366FE106D60BE84D24
-DFE7AC0FC125A70D7FB057551E737C5675D165E3DBCEC1E053987D078AEF7839
-2F73428EA2F6302B6313E162DC81D93FE0E981F859DFA4CAD80A78515BCD48F5
-708D332B4A621D8848561893987729CEDC45EF4022E1D2A6A6BD1048201D28F0
-AED64DE459AC4CE272B170103D02AC44E3646396B251CB5D70A418DAC1E1663F
-890F510F215C03092C96639523566C20957E98EE44BEBEEF04D7E9FD33D8356C
-468579E018AB336E18EACD06ED8273F67475F6A5C732D75F52703D019F40D53E
-2B26C34D5C91269F987268BD26A0AE63325228771650091F9D1D8E15A4210255
-C38B54E8EDCD23FE74D1B92108892192B274B7181F2B214310E37DC5557450F0
-B6020D9375A4E11BA6C4F476B214CEA60741454170AC24F1DAF8C45D07D81E16
-E5229C27886C32BF404B151602A53AFE13485BA120940C9BC32C87C3125D6B60
-60136D024377C404D34D5F245EB14304C78BFC2C2E4769250DFA386A171395D2
-FCA9752197E38E568F5FFB81DF03299864ED405068792837A14D23E4DAEDB8C9
-90EECDC45C21B5273F120F1E2F8960E62FECA7903A9AA3DEBC031A5D3FCDB717
-2C7B9F627D7B76F47AE0905810B0EF86503EE4D747EEDF560B3BCFE17822D496
-C77A335466E6C7CA4C5FDDA4523BA7B2AC8D438C554B9378977D64FBD56FCCD9
-73ABBE4CD4FB36D7CED8F6A0D15B0D1C15311E5D77694AFCB14409189DD5E386
-4026AB274BA33F6032E4937B1D345BD4FAD3C2BF0904E5A246E9EBBBF1FFB7BA
-789726B9D7F39D64A29817C40C9515551E19775E50F3F4BD1EC47E2D8FDF830F
-54CC5C4371CC30B0856C00DAB9B1ECEBC0AB17BADAF8E2E2EDEA95EE74938E09
-B3CF241B9E09C0DA8E0AC696F4C98A2EFCC526F1C75E637B8A31CF9A8BF52280
-91A5543D6DFBDF49AFAA51CC6C7B50F6DD1958121EDB2A0C653C3A32F08696D8
-93A61A7969C35E6127BD7A2FA1055014A10286DEB8422C9ADB8765A11082C7C8
-DE96F0092F3637466C053BA316379B3CBF21D84A7B01D174DC5BE1415BFEA654
-2E693BFD946BD7569733B0FBB2C5D247735A48A7C841BEDC92CF8A799C07A478
-E7E398817A355F875789A28715AE0C95B58DB0F1F27572D16AC7BA72F98E5895
-68848616B25441D0E1269033AAC8A6C997B124AEF387D72F0F1BFFEB5D3F345D
-F6A5DD7FCA0CF5AF676C62F6174340AF7DA870B6D406359A7B294A818442472C
-799EAE9D7D9C388F2A302459D30DA7D5470F8CCEDF9486B4F387C5F50DB4E409
-C74A09BAF62217004C0DBB83E3E73E169BF945253F42DEA5F568E28463DF7328
-9FF0CAB049BF700902B78AE3ACDABA17BA4B0DC6D547FFF45818D34B7EC699DD
-290A420A9DB5567E5109FE8646CC874E057EB18AB1B298A5F67012C0D297F76F
-26FFEFF0F02CF4D7E2E8A25E1D99E5207EC9C9BBA6AE7E6D198AF2ADCDC536D1
-A784B82ADB0278740BBFEC9A8634AB35DE798A23699048CDD5058F0BA64E0D4F
-906D8869054D22948931BDB65F4454567DA31B3B5E60C8201CBBD7F05339BCE3
-999E22049BFD2660F750778FEE6D5294FA04D74B7AD092173C7EA8D77C44F6CE
-F37D47B42CCD6623EF57806EB9D752C098FE656395A77B5DB10B910979B7ED1A
-CA360887161F01EFE8DA8B7F6E6F08139977AF1959F6525A73D019714F5ED0E1
-9349D5B3EC3A26FD8D7C3AEA1A6747003C24C5E23551816CE52EE19EB2EEB486
-28DF30EC3988A852F002B1ECD24DD29F1B49D6F3223270AFBC25800DB1693656
-203F52D11179DE90012149A324DE96E6096B6FF7D15BF3E5DC51D4E8B321E232
-77E14621B21A103322A4ACFA7C4B76CFCE1F631B94AFFA67EB0C2BE1AF4D91F5
-B9DAB5DBB40C79B54FE2C63D5DE4C59E92E7C976BC6A085E81A3C63C9CE9DF55
-8D54219F1362EEBC67839B4293C2467827A9FE0B34353C4857D75EC231AD9ED8
-659F3B608F3C8FEB8F94C5FC60D6F9E05752FBAD0DD4F6BC6AAE8462FA9F2F4B
-F6CBC08120BE84C15BB337D33B20D6BFBE8093C08DFB59CBC2CE586B6216A81F
-A34605C0657706309FA7D20B11E97AF4120F7DC50947CB8A11F9294CCEEBFA48
-FABA56438EF8BA3E09CC74AB561CB299E444A3546E8F230FCA5CDD3420B65D0E
-39770B4AB697A0238C51EB51083C4650E7546F5E7B6FEE147546E4D679EFF14A
-A19622DD442741D296B470B9AD458E50EF4F8D3024B7ED91E65619EFD0A09621
-83B4F482AC70945077C1C7543B76BBA4D4D131D3FF755DCB3839FCEA0FD950B7
-394E68521F744344B2348EA92BCF46A232EA96D1F3374818E66D9CE066F30CD1
-BD1F455F36FA1DF4D09D9A81A330B2037BA5DA8B3D511876B1C37BA3790B5C1E
-D29072290C558FBF170CB6296E052313801BD9F45ED2226D11A46640A10D4F9D
-8F2ADB5AA691CC3BFEAB8E0A658F03C42902DEA8244EB9F6DCABFF415E7DF538
-60562788DD8017210DE0F830BF6E6082A6381AFAE03A7DAEE1A15D0BF16321F7
-ECA7EF7ABA8813FF7DBA12B78034C64DAA2BE22A5905D8C27C1B705C9FAE55F6
-D9599694E3688E6A2EAE40F585BC5568EB3BE264CE97DD016BC1C763B6C11638
-70C159E839EDA20BA075D84762C9CE8232A32A6888A0ECCE7459309000735CE2
-A4646D8E947A0ED36EE490BC472EED575D05D4882A0A104205D2CABDFDD77134
-71ED6C39A01FB5FE23D3DE562BA399DC34F869FA8DFF1C781FDFE1B5E1C9E467
-6333B433FA29679252D93DF71977CDBA50424F3E97D84CFB7F555A80B0705B2B
-4C0ECB9747597A32D198552D7705EF4263818BF6FE9F4B2D7AE1A6BECDA40945
-C7AB6E19BB324B2EBB38D003F49B01598111BADF7A03F4F006F1604072BF72F3
-C2636D8CAA5D98EC25F7D9B3E0E3C99F4A79BE1F144BB11C7D8BA4E5726CEBF3
-EEE5B37D234FBA35917D724BE0B4FF9E8C85DD923A486364FD44CF2259F0313F
-8BE916E7370DFE34CC3CC6AD44460CAF739E24E5308FA568FBC08552B643EB18
-D86EA125D4EE98AAAD884D2BAB1D5264D45346F81556FF310D5DA1BB667914C4
-6272DFE61BF3BFA30341A21A6AF4681C4099CEBD51FBCB3C43F2E74AE7E262F0
-38682D6C78B016A997E4FEF8959B05ABEEE29E00BD3F86DD98FA3210E1691080
-374666B5A45BAB3A3C8E231DD5DA433CD5C1D5DC95378C9C6EB6AD10801C27A3
-76A1EEE11A9D1E086DEADFECE2C039DA804BF4C647381F0A0F7FFA9B70568710
-183B0436EA4AB0ED9A68D829C1DC77292512DA2711920831E96FF2D7DEDF7CF7
-9E075702E1D9155ECE859AD5C28A10C3F1A5576ABB2196E562B588EA9681B9DF
-378AFC9F47AC346E10ADE9508FCF5F208AB4063151349CAC48C6B1B1AA77AB24
-358E29488FAE43C44CD4393453E1733925FC34E4A32B26E23AF0F9A73DA7C373
-B1FFBF09D893E83B08675B4D2A05FD34999973796EE078DB227354822E55E3E9
-7DA31FDA41AD4693B9219268DF50B81A75713A8D8202574E6141C27C56A2ABDF
-AE040853FED550A96B86A1BF802597A987D15AFECC5DB29D13DBC0DB83605B5C
-F4DCDCBC7FCA89FE7573491D94FDC06607DD8E3AFB4F37816B755131DA7A5F91
-20AD2409A7BF06ABF0185A8ADF5570D85615113105C9F2DCECD48E5DC5E63D7A
-B22275DD560B3F908C6800CEB8FE2CC90D7D0A474F5BA7F5547C570095AB1DF2
-CF2CF8C0198B4DB8F63056BF3B22850DDC5AE22C06236DE26CAB01FBFB817060
-CB3A0FA3F266571910D117A3203D28A18117B91244DD3AE911461FD73C9F78CB
-C9BF436DB0B6A7B99F4D2574B397AF876BAE65B337BF7D882279BB1F61D71E11
-3B2A773945AFA21E13C9F80D91656A01B1EE0E1BDB739C215BC2203D7AD28456
-4FB7ACDE59ABB24DC49E9799ADD8F7B092002ECD40A9DB0C46CA4B74AA21BBAA
-4C715DB3CADDA99F79A7CA1149F2D24FFB8705C60EE84F258F023412DC042F00
-9893E3C2F10AFFFF9FC08143564FB7E99C885589F3A9BB4DBB2D3207F2C715C8
-E3147793DB25BDCC2CED771A606CDE35B95B261AAB560BD6A6D7380CD09EF766
-F069EC63E0C98AE637A8C3A6E3021F0488DE5D6D97971D82EBB3DD9FFDD4457E
-FE1C9C9BF09602500EE7C45767A1E8126586045CDD11A397448961DD348A55E3
-5FF7BD0B3D1DF585577B9115BBEF9510E64F47F2B6847F04E117FB59AE43C512
-7EAC910998069FD61EC937DD2F58E4EE2F5B24A79623E8AA5C515DA73F6436BE
-4E94772B0053E8C565961E9D767C506339867BBB18CB833FF42A8703D676FEEF
-F7668BFC9468881A006C10436FADEE8EA4E6C5593CCACFFB740D0C6C31D6FE8C
-77EB8DC51A69E671BD4562B815111E654279331D97F535A23E6B771D857251B0
-563420B8F29F15C5AF357C73792BE4358667753A7A85E80A1D4FFDFA38ABE03C
-E5D21F22E02522DA4D82F50BB743FDFA58E7A435D4D1047CD38F3703F3F20EE6
-ADC9957EDCF47C852B7B030D0BDAFEA6863B1043C7DC2CE6EBBC62B8BBD26E32
-32C79231B4F48575752865FEFD92400FEDFABD13248257C912C930FB26D440D7
-CFD294F626C36421B0FCB03F2CDD880C66D0402DBF548C6A3F807F4DF4DCCD6D
-272AF53B21899D8C5C0737929949753F012B8D07E21F043663928EF17DA51681
-2066E48F5B1C9117F45F0010C512627A327F99493699264E6AB69ED86DAADA54
-A100036B079CD4882262FE22BEC5BD9B701FB077FB970123E009D1065AF4266D
-EFAA3B6FA0333E4803F81E6495D8FCF35A16532673F71B7EA505F05B569DD75E
-0B3F39F5CFAD54AA5C80F8F082C312F952222AD409FC850DCA1ACC78B7992A78
-939EA3A4B51DD2DFD10FC59F049619FCB40DB92A9D6B16E93093C994488F6F9B
-EA42C3A835E0CB93F0C1534BC9C1F4E33EE345B4FF54CC4FCA7B641A8F155006
-CE79BE0B6D0B8CB74170B6667B5949C6F9BA4CC90FF6BCD2322B351894035934
-CAC8BAF06677832E40BF90313CFCC979E6B8581F6986F5D5A9529A5778F4927D
-ACE747DA8705058D22F03697EBD239A4EA64D77519EEAB4A72E719545E3BFCB8
-4317217726052E32239D2A34C0D6B29DCA53899B4C930B5B2034D0E6894F5110
-9EF709BABB60B8C65616795F40C62B611CC0703B8E9F394A61B5EF1C14129357
-261984E369EAB3CD2B58536E84333D9F80946BEE12F342F0650F2FB184DE6165
-42BFE4432E3AAAE9341D8068FE446291F12524B2A1B8B5A4D60150C642B18C0C
-0E5D74B2C4B508652729E342F27497D769ABE54E45EBB0D8A2E01F90393C6F59
-8E4A6C278C755ED6633D9C8FAF5C30BF86DBBAB912FB22BA4F30912E8E9699AE
-8CD0D3631AE3D192418939D959257CBE3B39404C0111AFE56C81F5932478CC4C
-C0453C2D30956DA085457F43F079E94ECF6BC61914C63E240DB5CCDDEFCF3EF0
-CBDCFE02344129A8DA0B9F986F6686DE8E52280401460019CABECEFEC7E8F98E
-8AE135A5E05DFF8E62E75BFCC7EBAB8EC380C1FD1D48FECC229441C4CDE93B8E
-60C96E6418A9D286DEE46D0D82AF9D2714FAE2A30A4D9B9D2E5B34D5368B39EE
-266B2CE395CB637EF2676610E303E83A0CBB53FB71D5FE08633FE3207970A864
-48F03997798A209D930B8A92338D177CD0C3FC7520FBB7FFC4E776009AFF4D0D
-9FCED078981ECBBFC8B0911F830DABEBDABC30A42C9E60FD5DD4672AF1048621
-8E3D98F92A6156D31B4A7079FBF1639BE20B24D1439007C200519E3A870BF5BF
-98C2A9962BA8449FC5E48B9677EBBC4CDF8070BB6BFFC4FE1A6635DC735F4801
-DC0176C98495B2AD37791ADA6C1FB8264CE0D27BA13BA315D08DA1213CCC6748
-E9673881C4183F20A8B97FE13ED651351E5D2424386962F578205C1F7653AC26
-D83239B66A9C567CF1606CBA9CE574320107794F9229ACC234987FAC848FBC49
-4D1253649515BA36B93A1A09FBBA2849F20A4F5C6F8AC8B4EA054219D21D3849
-DC6D1E148BB0D1E83AD1FAF3BEC996E016C32BEBAA421A94FE0E64D4E2239E42
-5CC7AA4590643357472F59DE1D25276F4E8A6DF2DC832AECAED359D2EE0DA6C9
-AB1EA510DD4656656EB736D8B1AEE07197BCADF408222559E39409D334A2BE2A
-81B7E652C20CE6435A11B9C03ED0CFD3F9EC893F74FC4899E2359D4D2723E0F0
-89595D06DEAE8E448E268ABCCDB833CCA7BA37E2FA9E2A827CD381EBB2F5BC7B
-03718C4A68DEC9F9542E2A1181FD444A1E564462FB492F10F290CEB56386B141
-F581E2BCDFD93A47EBC7D6763648030CA866EF24DABF14BFE929E70B4B38B605
-22F9C0B7724371EAA474B380FA5CC0DA0410FF931BD9CFCC6F7CA04EF1A3CCBF
-B86F1D1EC3FC26CB85E3F07B0E833828922D03A347267805D279ACF38943ADD5
-7390121B316BA0F20654FF0643E241F78BD48AAC1A4E511514EF1D63BAEFCE12
-C78FC9335044190E899B70781CC02FEB37262C76DC73B30CD60699CF8AD070F3
-C3409DD6242709E18A452AD935ED9DA19F3FDB7F5F2009115D2BA0FAD270D183
-5814B26902689058081D48DD84BB2B9B3D76099EE6856CFC9556BB88566A3F7C
-09A2D66F5BBC5A3120FB7804E958F29452A26EFFBDD0D774614FEBF45136710B
-CDA86D589241D213BC7B27B440C7D60901BA9EF08DC84421BAB0874686E13D33
-2805DD8836DEEDF7C9995320B9F22091D30A1A176B516C71B67A92CF365E31DC
-AE54B695714E16F85D16C80189B5A8EBA8169419077742AA0A150078A5A9E902
-875CD4E59AC0CC9FC1AEDEC76D007FC53EBF36D746153960272A0998EA05AE4E
-447B609AB48451DA178661D7B4F6C40F5B2D40D0C7D08EA9BB55D82FF6C26196
-9EED42B13F570453E30F282C1FFE8E9F0231959682A39B8EDB3DBE83BED1714C
-862E92C0A1B5F96538B8C14F06BF040B387274A27EF0561DA0B16CED92E602D7
-C221F55542EB8E712A48861E64830260D1251C28B124425D37C1BDF671DBFE45
-89DDE5CD60D9E592B5173C210699B12F449CFFD9FC2721894094B5143A58BA84
-3C45A4CBD1BBF9782755A91C3B006DF983A543005BB8BB89FD72453A4DF16E92
-F9D2C6399F401360D475C44DEBCC18F61E8429ED28178DD8BE8F74014A4DF429
-4F149489773120F53DEA4CF78849B4025057677B47D82B8130D2583B51E576FB
-1D3D5C7A90B820D6782AE44DB08D1609C9415686FEBFBE4D0882C03DEB5F4899
-AE0F205F2F31F96FD55FB7AA3B384A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMB10
-%!PS-AdobeFont-1.1: CMB10 1.0
-%%CreationDate: 1991 Aug 20 16:34:36
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMB10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMB10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 108 /l put
-readonly def
-/FontBBox{-62 -250 1011 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39996C010F3024A5A3C69C8485664A4E3AA81348AE21A30280D0E3B6542
-A770F048F31907891EAB8B57DC70FF775574D6CD26B8AC9C3E64C3631325BF0A
-99AB413BDADAA3B51A3E168B03A856EC7D346A38BBB0A2700A23B2CA91120B9D
-2AA5BE5A359C60CD78F055253785CC9701F5D670ABE4967D74838C3B267C6563
-C9651AC41D8684AD5E913A5C9C547CA225A74782D1AC62020FC38E29C356950A
-00E8F2B0752CDBF81EE4ACD59BDEBBB9523AE4764B995855F3A401EB4B04EE56
-B10758196CB661448A3617B83CA88C41756EF131CFCE0C968B94B6C69AEC1E9F
-BF8B21837BC422D766B5089D81CF35A807394A026FE3160580695B1213968D90
-8ECD1611E719A871E15C6085A17906F77B5B2DFA6AE670976758E67F8A4FC362
-FC7299D85ECC3C0BBAD4649B9DAB4A2FB248D6481CF0CCF274634D37A5AA4DDC
-31F3138AAF10998FD66F3817B77060E71C6D8F17205F9C098D81D952E0FE3831
-2264C55D73215176470D8D75E7BE6E44514984B9D20208DB3ADD4767CAC09D41
-9C8DAB6EDF4FA1AA2CB285CA28E30972B3BFA4F8600DB92164865738B015A331
-EA9EFDD478132047DAC28DD4FFE419F94CF5FCDE732E53FD332ADBED32F76B2E
-69531BCE0D461BA3F41A528DB0CCEFF9663FEB3EC9CE0F760604F835699D7C08
-CADBF7AA3DCCE9E813D66BC62C6E452FA02FE7E5F4FAAA527B4567AA4FACE790
-87910AC2498C0999866614C90AF7DFD65A59B9183FD8AC5DB9AA81E8E8477F07
-3501D4BFCCBFE32C964D3549B42070D43977640A289060AC0BDF951B78ACDE58
-D95548DE8DE75EA7A6F5922BB463FAA93487253414EF4233C8BB976B280E1A92
-A77D2D907599AC9302D1143597D4CD494045A0261DB9245A613EE31DF8994568
-F7D0FB24D761F5B4E8A96B5AB339418462C29EC1DE163980AAE4B6190A1AA91A
-D935859055FF59BDC9365F825C409B52530DB59A099FDE62E716090B6B14D2D7
-28662E609B24D00FDD9F092F15D94C0726B1D3610F20A7C658F19D26DC8B53D6
-8DD06EA7E45A8150DCD2DB3AEDD9239A029FD6B5344B0FF779CFE958A5889AB6
-E941B9BF0464CB0FF3247F17290F82825313C171AAB70BB80D21EDCB7628B5D1
-8266B3E93852BBFCE9CA6D38170F6CE57219A301EE8B989D66852EB7A48A8177
-96722414CF3B147E046617BA46F6F1439F90B6B3812D61619904CAA0B7CDAF29
-D6868D7F8346CF4164DB12015292BFBCE474B05BF886430411E8E937B6F09D74
-42A2C0EB14BFC76003DFF172AC44D730214DEE512BF257C8688FBED139C01604
-2C34B2E4C33219B9
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMSLTT10
-%!PS-AdobeFont-1.1: CMSLTT10 1.0
-%%CreationDate: 1991 Aug 20 16:41:43
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSLTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMSLTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 46 /period put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-20 -233 617 696}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8
-0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB
-4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840
-8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079
-8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4
-B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F
-ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858
-C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F
-EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F
-2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60
-4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370
-52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D
-38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA
-00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0
-B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D
-CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF
-B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F
-802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE
-32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8
-00DE382ABED85350033F8ECB97398E4E0A75D4877A107F6A909D0C76D14F9A96
-8A6CFDE3FD9D79B6FD82693A9F354BD2ECF30C6D99F7AC522F8D6C93EA214F7B
-3D0ED77F042ACDE9414264C0698E86398562E2C640DEBBA0734AB4C3ACE3907D
-CC79E6B2C6C3C3F9B01526E8CD98237D4A9B403FF8CE3132222FA60C196A19BC
-A2393AE6935C0F8B67FC1D1A1359BE7E7BAF694B91B61BEC6DE6C64356746771
-0CFF188ECA9A543A49A39A046F96E819B541E5208755E19B080CB0FD9B42B72D
-855FBEBFF32292D435852A14BB713396782BA940E05F38593D288F107CC0BF82
-14A204A7CD65F00AB44D48036E58F687DC2BF6584C410AD4A58F5A7CA173FD74
-244C7313B0268589293A261CC08460EE65079539F5E68D4ADA3BED2AB983A354
-3D653F25D0452DF9C3519A0FC8CF71AF81BFFB48CBBC8B04AA3F9B3A60D933A0
-40299CB46697044F849FBD7847BBA0F7D5CED705C8E4D74B83671F05E5098857
-E87FBAE522995960B125E2B91D1A565DC09646FD83955162C3A583467C792D2E
-C98B830FAF360BDFC63AC345EC6F1A79006953121CFA26BA7B164A1125BAE4F1
-2C2EDECDABDECC2F8D94B6F1DA48E3D1C4B1D914E14DC08AD7E67BDFBE327092
-2B48B134784FDB084B654398A1037BD95483F8873FAE68C9F31CA1F90284ED16
-951B2AF75CC16F2597E0A72397554CD53CA9541B09B2DC1A45C6FF503E3528E0
-22D2C1AD257C5E564FC4F4F39236FE6AF9F1421BCAC7C2790B2A855CB7669D42
-752639F74EBFCF234E570EBC7F2858144D17CF17D6A16950BC6919C73CD4AB11
-E948284006DFE50A754DE8217B23D9FBEC052236F8486448A6D3F9D03B0FC959
-56471B443DDDFDC012BB881C15AA0F03A34225364CDEF2FFC5BD9452B3179174
-90FC3114D948E15FEC13B03D08D15ED8DD4F99A97237B46EEE8BC7428FE2F3E3
-1737E6D8DBDA770EDBC95C27317191CD77DD1961126D917125BBFF006F7B96CF
-E84E90D56EA4AB1A0323FAB001E835A90DC5349CBE9AC0FB5FE253DF6ACA2571
-EECFDC1256C947C29455937094F5839D5665EBC1F0DB67FBFADC836A09A82FAA
-B38C9854BED9DEA3B4A1118A382B2DC930D896716D9E1075476CD91E6FE77940
-4EE4A8F2B77E8465E0267D0FD471667CD258DA593CA7C6C478D178F27848815D
-1E2F429ECE1015C3805B9BB5A94D288D5169D2DA94016B71B5276FC32B336576
-F7CD75D2B87107F7B50C5A328FA139D42359C3AC6627E689C02161A8FA5718AF
-EB2D49598D96C64A963C1DC630B1B1038E7AFD48DBAFAE5E0C185D312BFEDDC9
-96D8C394D73CA89E7C26DE76147F46FA239EC275F1F4E17278F7F8C3846032C7
-FE805D50242EBE4B4D60209C414A1FB50489D532E1937CCED646DFA4A8965C04
-4F2B5DDDED79977D93B8BC10F89E22674947E1DCD565E0F71EA150F5525A228F
-523770127908408EA2825D9FD41B6FE442B1BE570EECEF2539A10D07E6A0FA1C
-9ED9054606FB92312C353DEB64F9F99C52C7541A4284BEC6B04D8BCB19BE7D47
-B386B2CBC7E2726B7906DF2B9C60BD0EDF02F7BBDBBFC77A6E923B2627AA48EA
-D25F60AFD1DAE1EAC5BE8A5BB9E9F8A6A71869B75E5C09C43D7C7A42B3E48351
-72704E1C990989D63839643504DEB3AB1C65EBA7F034926D26AEFE92AA8CEEE2
-D1C535BEEB93F5E671281F6C20435B4A873B4CD9FC8DDA212A289ABB97932DE5
-C12B848AC1B0FBE149D0AA9C5A0FEBAF15248D56AE6CD7E306BFE9C21876159E
-5ADF792D6335A5BD308692C674167E08A02FEE67090D58BB2B2D9EC6FD598DFF
-DFB6CF6B78F8E1C8D4215CB33AAD5E897C75A7C8FE63ECC17EF941B33766AB2D
-2C295DDABC784851BE6FCE8EB6E8DC24B332CF836D2AB3888B85E1DEE331060C
-D7D3677489ACEE8D77F64D9A833AADECA12191611163BBE545A4C75E4CB1BED9
-95F2C06560FF628CAD961838DF4B03739E1C946F9E5F369FC86CCBA63DD638AB
-67AD4A40EB009700C2FD6CED16BACC301F27C12B797F480E73ADA18855876816
-DD85E5E2AD2C5BC9CB59E7F26DAAFC5848BBE7E40CD9E334E97F80A7461CAE07
-6E92B97CA810486F696F2C8BA8912D19F2C0D434011F66554B7599517A2FBD7E
-F442B85BC639C49614363A126A498365435C4398CA0151DF8EF87A81F5282EB3
-EDDC5C39F2BDEAE08555113F9B4C61A4A7DD1BF8BAB286AB2E971DBC265A6A0A
-931CB6219FFB8C04E8208225E3D686315EAF39F674B63C661B23EC073E82605F
-1FFC94BCDA637C86574319C41CDDF97768BA23954406741B9134FBA45155F390
-B18215B80BF01BE86C325E612D50DF2F0879A2DC24FE71C9BEB77C42A67361B0
-D9DD197A80D16EDE3AECFD703D1257F9433EB845C9E7AD81AED36D534495EDC9
-D68C856231BD7DA9010A0E6AEF18B11C0B392A4440A8F56FC28397C1A073B618
-B0AA06543507258A3C63C24BF4E1BA06BD3F8C3930269EFC2CC42BB4BEF7E363
-78979A2B8456784550F744513D8BDEA6A946A3F4FE5E48C6766A2DBFE4BAF29F
-97231EED7F9D916B4545091E974CF0129AAAF6B285F81CEE555D5ACFB8FCA47D
-235BE102E9305D4D0290651BBB4037887E1AD6E08C01D13C182109DBF68AD805
-C67C792D7D3A9C099FE4419B70F6D932F325EFBE94931D5D28C79402A1C6837F
-DC6E1811168038A342BD5B4F5371C9783D0B74940633D7B7B8F8B8C32BF5C71F
-A06112A87225B4270ACCF383AACBC983DA29281C395D7F2342696D35197D4CC6
-661DB9FAC95FD9EB4C77F5F83159604185AB162347DAC0EE51E65C8C5098F7B3
-3E8754211B44EE1C16DF2B59923CB8FF64283B5C01106A978EE3C09AD5AFDD64
-A881049FF8B17FCEA0B0CDD92A9B366617167AFB6D18FB19DF70BBB6DF205536
-5C1D58F8459FB03319F3B5F4D43DDA15C8323B57CB2D5686BA1A4421625F47D2
-006F73993BDFF70C7FA63C0C3B3B038AA907711A2958116895E75C0C99ABD2E1
-F02AB43861FB0AF5E493471102BA57BA6E3995996696107D1537F9B92F5B0767
-0C3A5E374D3B34D7A67AF8AA012E9BD904033EE95FFD412C14EBD51FEE69009D
-EB8F4194E21C596F529243F6A31F1A5631C42990D6249D1EB330033ABBA40405
-2CE62AB60FB1AB122E9A40FCA88D97410DAFB017153D37EC4AE4AF13701752EC
-387EA20846202187C1F4F853B6D4B6179E7D0BB9C0E208845E975D26DF1C2B7C
-7EBE4B2DA5ABAD95BCDB294E50B42FC032D8D973626ADD10142D69B4DABE2C89
-DB817C2C1AF9EFC62DD501A9C91AE35EAFEC12CBF66DB9318DFFCE7EC3C9246B
-569A2DE8A523BB6337D9828EBC0E639179C94E067835F6D345731FD98483DFD2
-549CF02C77E1C4262860DA5F182E248850A90F5C23E2BEE1F6321482F040E2A6
-8B83C7B2502702648694335B177504E757553050DB684A254C924A5C9B8D20B6
-10CB6D8D7D495E473C09E271E8A315D7E3829A429B085C803BD6EB1BE5F1D210
-C044B15F104EEA05CD5D90078BDD975A8EADDA67721895774C477A8913B4E97A
-34939CEE30608A842313D30BFB9FB4846EB87A939C84C2BA314EC87AA8655183
-F5F42F7489E067FF643F159384EECD7B679C6F34F8AB537E11D39E5D897AA913
-6037E8DDF13094E0A9EAA04AC7D70F9684E36813BCF872C39C0DBA7B0AB54870
-9D1F991B684B058662CA8C8A7D57F38ABD15CC50C71BECE67F014BEC61FC5809
-407EBBA0263BBC1C7C1642DA4E76029BDC9D8BA94F527A11BE9AFF27A87B91C9
-7E1C0850166433609BCEEE28EA85DA21E1F5E312B5992CF94452946B525EBEA9
-658D1F1CF8E0CB6A36C6446F70C4EEA466CF85CA50B051A73998CE1E9E1E308E
-36B04F3D129BD618BD671C52E8CE6C8EA7CA47C68D9864107413B6E8D0113BF5
-6A076BBCA316114C7E3C0EFF2BBE5348A80D09C4F8BA51BD544BB23F554511C0
-9ECF91F8C6BB507003AB73C536DA96FD4BB21A1E0D23DC3E754D9AE220A88944
-A70B01A8E4565C4E8FBB9FD6AC5BDA3BD91F896CB8CE67BED7182ADCEAFF58A1
-8441452D10A158832F40BE2214197EB41DE2F0ED9E407A0A0011ADFA806B88EF
-B3991ABBDCE871996F0B17D61A0C76C6E9BA926ABF8BD3752DA7D757B84C1845
-D864C5C6BD8FDAF3740CEA2D0300D53605C9861D4D86C188FBA84F1281C4DB96
-E22D31A7E218AD251111010B0DD4EE7B32745542DC1D4FFA6543CEBA105A63FC
-59F8DE4578B263901E38787E0F4F197F1BF90EFD29684AC0965B66357C1F778D
-60CE61BECCC65BBC134D6A77EAD3E498C3B8639B7A4D95B08353104112107862
-85CAB073714A7211F36E2923411442210A3F063340CFEA003D6F85A0C11B5469
-581BE31AB60EA5247D3E5739393058710F0DDA36CF53256110AB08F5B422A291
-4C402CE894FE9EDB5BC468F379CF47258518A01D28ED3E3941768124F5C71A2A
-AD7AA8BEC0D8358EE389CE8EA9AB646D4B9D55E588879AA8566C6723BF43AFCC
-0045CB2075EFA3C33B9D2838D6D0E99F3A1C0068231D585B4CC7E81D44F5D04A
-2CBDEA50F302603C1E5C67D5570DAFF1D2DC87D5D85C977085FB505E48CB425E
-35EEC9E447ED6AC61B28CE95F33ED271D2BF80067D4DD723F8B719AE06CDB75F
-68844045767BB1C7356974099CAB81522DAEF863ECF0F0FD272C7826E66BCD41
-2234F07E08E0B0FF5499D0BF2F7277EF2FF8C2BD85C5BABC56B7AB26823F7C4B
-D0E53B0DF1755FCDE48804EBA05DB62AB79705B3B2C53C981855C6094D304878
-F6284149A86DB115741C7E6C5CD1D8A0BF4A0BB1BF316A8E0928B9656F0B6733
-59F2516A1F70AF77722D8F4AB51A77C19CD627A7B784C9C24914DCFCCFC64176
-7576B4DC562906781880F6C1560E62584C781C998DA2D127DC5003E8D1DFF54E
-541B4AC0B7EE8CCC0C9489BF39B03556B97831028C842E9F20B3510766D8432E
-6BCE9C543E887E9D9A6C092887A443C677FE7E900BE4B1313996B4062304ACE2
-ED7B88B8861154A0C216F7EC643C7226414B39E4E6929BB826E02D8CCEF08B80
-006ED1FC42D95E24D9B031915D350885B3E5AB465FE01232D2F27C4A3FC92D46
-DF76B2B123D29DDFE79ED5E0EECD1D22C830FF9BC789BBCAADA52BABD7B66C10
-A658251EA32AE3AE94F98315461A29BB044AD943D7432CBF48F725B1B88A5501
-431F2E748ED9DB9D13FEE67ECF01848424FA21B8FE8BA16577672545D175B37B
-EC018BBFC6CCE8C4FB88CFB8D7FA37FF627F32D426A574F58DBCBA705A7798DD
-AB6704393E10362110FCED17EEA2DCCDF84C5B449D689E74E7AD7D98618E29FF
-3509A62E807669BF1F7F95FED4B1AA76026D656E215D084C7ABAA01E420EF290
-D4ACCBEF1881E199529966845F3182B6233749B0CEC2F7B391783BDBD36E4202
-6A274DE4B2FE4A4BFC9814FD6DA28E9336D01DCDCD574DDFD55E2E444D283128
-D3AB410158380922B04355D6A602C9C90485C0E85BDF27323BF4564FAE8CDFED
-5B3AB5829B57A7829B86224096D5F5463486AC860C86C1F2F7DB3B6C94A5652C
-FAD0F54ED6EB58255695FE737A235D38632D78F456CFF89FEBD32C37B5B6A5F5
-16FDAB471003158BA994B284051A7F597B42D10EC6236947C5B54E4D7FC7B011
-3940AFE4F4CAB864A07A8962F5508B7C2BFEF24E89F38759C1A024858C44FF0A
-A4D4223A416FFFE7B852221936701DD392DDCE8A1F2A39D432A1346B20C5A8C5
-AA6052F7C99549EDD81ABE45BC03CBC6F3BA94CE9682F3923EFC7D564E3E16FA
-A765B61A0CACDA6D0DBB26EE38F16670BD31F3221FBF040767CF6D5686971E1C
-ACD791939837A0917804CB320195E99322FD79A03CFFF2EB313B9ED7747B55A7
-E8992B0AAABB424BF295C185D4DAA77AF41D0D7D0BEB29BFA5629B67C1C48174
-DC2280AD1E80ED5E429263E9CD6292219AD5B4117166FCC60E675172C335150C
-B35DBF4FFDD7EDF7B646C8E1E8BC00255664A2548802B4D33A5C26790658E4E9
-6F3F75A64A48C26F90F7166B48D3FEA6CE661AEAA28D3EBA7611C9676411B1BA
-F49EB8E02E41FD3F9B69C76C843DE849696EFEBF9E980741A6C05EB7645F1946
-1FE7B49DBEF2B29F808D99BFBDA0E85089CBA26F5343E7ED1023830F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMSS10
-%!PS-AdobeFont-1.1: CMSS10 1.0
-%%CreationDate: 1991 Aug 20 17:33:34
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSS10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSS10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-readonly def
-/FontBBox{-61 -250 999 759}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9
-D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858
-D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723
-3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6
-0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348
-44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8
-46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13
-6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5
-6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3
-16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4
-1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED
-286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872
-A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477
-713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C
-3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE
-3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5
-034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185
-9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A
-12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA
-901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68
-64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5
-A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0
-1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9
-342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007
-6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F
-107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5
-C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102
-65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D
-F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B
-A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E
-8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6
-44748E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.1: CMTT10 1.00B
-%%CreationDate: 1992 Apr 26 10:42:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 64 /at put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 90 /Z put
-dup 92 /backslash put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-/FontBBox{-4 -235 731 800}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
-38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
-D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
-EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
-A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
-F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
-4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
-6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
-A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
-E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
-1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
-452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
-8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
-5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
-DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
-BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
-741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
-E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
-E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
-D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
-C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
-726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
-CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
-7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
-7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
-EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
-DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
-ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
-B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A0FCD5D16F0657F61E9655AA1
-B8326F1813FEB669F4E88D7C1F3AC239ABDCD32171C7377F7EBD25E7B38A2A2D
-CC6F434D57D1F1E4A22F381E957EC31E2211714A3A438A26AD3CB48F0463CD4D
-3C0B6E5655214FF177BCEDE954490428D1ABF0CE50C21797E455D0C97803A32F
-DDBA51C36537C0B104011AF144043D0FEE36BBF1959020769522A015B3A4F77C
-D4AC56294BB989CFE5BE6EDA938B4850D347DB0724353AF84B14EC964B9BCD59
-1D8BD34EE86C37A97CAD9DE966B6612C23069B547004CD96B116E4F72E75AE37
-D506D9FADD61696418EAE950995A0A401135AEAD81CAFC6035C51C38E7ABE815
-CA5D91B363F99E41F567FCEF760C57EABB51EEEC484AB72ABC7E6D2370999714
-1E5B9B8292424474931AA278F716A9314EC34E7468432DEC2EF2F54639BBAABB
-ED7216DAA183A57CE0906AE4FCFD17D58C24D5FCD2A2DFAA6BF09C0206CD22E9
-C690E58F9ED3E42F4171197F2A5436A906955B6859FC02527328EB346414A822
-A022439DD30559870FD88BA50555F481DCA6D4FDD3A0086577262F9D73970E63
-E51F78D2372D0EEB83478AD15F449FD9F2A740F61BAFF20CB34950ECBA703C18
-188F61C71220FE9D6EF6AE399AF0A0DBD5145F0FAEBC437AB87E300E3F30DC68
-5C9F034A31E1B2208A0B9EC2ED38FAE85644B1EEF3318B83B65DB758A8F534C4
-587F975B83727DDE95D037DCF497CFCB87A8B0CEF46466826F3AF1C20B6248FB
-B41FAFE73DDAAC1F28D9DF2B4B96283DB5AFB0B4BF4BC77963CFBC4030DEB130
-9E95F6085A809C1C55CA7528CB18AE5659B97CE789191095ACEBE4DE36E77BAE
-62868382DA764B7E37E26D998B0F1B11E702A222867ADB96A95D2D0B48013158
-CB5B61831BB5360220322B06B40E83B547BC3422AB94BD154B5989A564B0C242
-28C6BB5A72D2E81F0265B42FF6E9C80D2FFEA7262ABD942B5DFA28026C213ED8
-F7188BF6A9697EBE10738FDA63DB75B9D359678278B0A9347C56B1874FCA6BBF
-336684C315493454C21A113A8536694D3788080E17745964EF9AB781BFE4E300
-DC9FFA8593ECC54626085F0CF4C29A58F0CB4CB3FBB253334A1CE99B1005D474
-321A9FCAF141FCF33C8A703714F4AE0D13CC2E3AFE4EE2899664CA159B7FB652
-157A0A1B9FB4DAED19CD969AA216961A83322BB5C721A0D3045BA51ABFC42A5B
-562312C71A1194869785E52B95F4FB6E05551172CA5723A225D247F94B70ABC0
-E36EC104DF35EC9D3B828711D1C504E3985B66151A53436F7F2D34A1BA5390C2
-249DE9E1C1774FAF61D33F9C93ED13A7C39F4FE175A5855507D4E5BD34293E4C
-0B2DF8716BE8B2471D22E1223F2886EFBCCEF6307A5B89F4DFF342EF03661732
-F50E63310BCB76DD35990B51C879333AEF0A866B620B28F1DEF079A303BC81C7
-980D145314ABD0E7D86843AFB41C2506071A845FE3AB31FE4A6799377A1CCC04
-418E44564114157401C86633E565D28CE20708934612092F35D711150E57062B
-778F00F9F767B12EBDAE7C18565D7C58580DAF4712A191341FE9421E50900CCE
-88C29297090319473CFAA9C1C6F0E35D7FC6CF9F10F44AEBBF800DAB64302F72
-5759BC755BF27BC7FB6F02082A0541C7033BDFC30D8D42B80EA15419957895A7
-65CD33EB1CA613B9A8FF77EF032B58AD8EF314238C7FE95F1B679AB74326E651
-C068F3CA9D2F203AD8D9BB78328D79DE98F511E74F1E414086FE9E226688791E
-B7560E6875B5071D3933E1359AE9C9B5651AE3E3E146EC413DF143208ACBA46F
-3286BE9BF866F762B9BAB698501FEF48FA9A446DE48509625E452E28A5C3D479
-637B8822F08996105488333826117B10FE03148E63E5449D443F312F1FA75F59
-205E581C337E4FC0873DEBC65DE03068173FD29DC102E2BAAF151AAF0133F98F
-830B0E94CE4E88038920CB2BDC3A62BA1017FC5C2E9A018C4174DFF94A82ED65
-1B753E8346315320078D179199F7F3E1BD405D1D7016634157A905FCEB1DE060
-A2B191893D00B070533DC64C6867C36DA6098C236F72C0658A1236DF8CA8792F
-3728EB1007F2E7BDFDB4181DD0BA60B400CA843F03DD7A13AA207ED3EF09829E
-0BD28A2719C9B02946487C3F2AE4FD533D1997170D4A2DA1CFAD5842621A7D1D
-E90764878E5FBF38480E31E46E93B04D43E4B7C999B074E2E81A1A033DF6C055
-DCAAFDF409CA61BEE8C73B0B1772022469D3092F0FB36C72B0F72E0DF211980F
-5699E5C49C931A3DFAE2EE88F8B2AAD459765E717440A516CDAB76A9DF252DE2
-A2DEEB02D6E33484C674FC96957D485E66FD625E5039F0C3403B29AF9C64DD61
-645010C7C2B9A6CE8ACAFDEE5DD8AE20265FE8D7C8FED619AABB8B038B6F165B
-4E104723948C65CBB0BF5263954A297A53C6ABF631830F9136104CB0AC30FA7A
-DB482BAA1100EE9A61C1F8D6522862F80739DC8A32BC913A0BA6656A377A1A27
-F96993C0AA6381A1AC741F3964239CB8DBE83937DDD1F19B5724A444F3CE569F
-DFF25DF2C3AAE4B7E05C8B8A57417F21DCD326E230A723C17ED0D368EB6884AA
-279F775C902D075EC47C80549C4F92E2227B120F901A5024C51CD3221C21DC03
-D6B380DE7150CF00EEEBDC9E9DA24755B6EBB322DF923807A6864ACFA24A4690
-93E6A9DF113303DD59993CC57452D2DBD33C20B12AAF506EED17A40D986F6F64
-6F0241AA13009825827BBD20D860ADFA572C82B92DAC8C34CF8A730EFFEE9D4C
-A20F8DA47FAA3D317A31B5AC22B1D70CA6228B13783524D6D691EA04BE00C5CB
-18E3785BE3521DC4651270FBFB28DB2B11EB3A339B308A8FDB54DA6A83AE6545
-D672C8D3E706B46F71153991807E88F3292F01A7E1B6999A45492189E2251F5D
-FFFA554257E2388CF8F286E80F22275B743CDC9E886E4D881EA445A5002730AF
-BA5AE30A3AA5F08C28EB2A87FB1882DC649D9FF31B80680F8324C4F9F8ABEC87
-24411FC65DF5214F02CA47560F970DECEF3383EC36F4CFF7E2656EBDDCD824E4
-F55140BEF34F501820476B5A52A93A6DC2E6C5BCBC3FF23A9697C447E7C37199
-AFF2BD00D8E89A3B2D48E9B8637E35A89EAE4B168B4A4980030CD3A86F66D425
-B22AB1B57912CD32B5DB582D1331ABB2CD414285A7924535DB49BC23EA3CAB29
-2BA13CBED6030F7B5832351374DF51571CA2FECBE5A1350D3066B71E6D01D499
-133D0B554A6427756935877FB01ACA4FF74B937F39AF455CFB68B7E839BF4B7A
-B2C81A989C299677EC5357B8DBA8D4D40599B4FB5FB5A6D088B26261DF6A476A
-BACB78C7BDA294D6D41B74DAA6C03ABFA6C8D26CBAEAB428633CBB8532DC4659
-4BF4B97B4591920D029E36C5410AED024950D093049A988DF9C196879171BBF6
-FD711F98502C975AC26C7BBCDF239D69E71A8C642DDD96114DF03DD473BE5E76
-AFD77445F4C1F7A432B85C741982CB82E5096C61C4243269B6A3618EAB43BEDC
-31C38F15F09D85EE1BAC19C2DBB5BC03C8FFB21065EEEA0737A2E0B92450DC58
-707B5576BCE4E89689C5AF2DCE7FB3DC4D2B592AE161159FEF9F211228089861
-31C18036B63B11EC60545D482A43AEB754509097C3082687D430DEAB90D117C7
-0BDC910CAD0D70B6878EC6A10DDD6E38EB4516D8403C382D4C41223CA7B43FA6
-08D278D1DEB314CB03C2CD37FEAFB7B551E76255B69E8D2211DF32B233983B9D
-E81E5A484DCFA8E36ECC4442102C2E13CFDD7ACC518C144FA06B44893A6B5B00
-5E1525B5FFC203A8FC62F11694700E2A4A2A229C0B44BF5FFC7E7E566AF8B055
-C096B8FAC47D09D857AD239AD6A0E10E36011EE11EA7191FA593E59F95180923
-280E8BB7CD0CDE4707649C0A08B22014266A5532DA92A84A83449D3C31DB030B
-F543F95780E69CD74E4EF523705495F48B903E85DA098DBC3FB850CD059F71ED
-6AE0DC9D17180B7DEFAC1E1281EBD468A4A8F654CF2FB5E23572CC195FE14D83
-8777A436297D3FEDBCD7BC627D223FD586D3491FFE3592D3E802768510DD3A7F
-A422E75835D83D10874E9F4B1D7DBBBA0AF639492366B56770A635A7C25202C4
-569B75C7293545C46E7B371D8FE7B22AF4B1ED670067BD59FBE74F7283E3E56E
-D455003DD54BD626CD77F806627F2518E08745F7FB5605A7152EE0F08390AF33
-47821BE929E621CE3DB5CA7244462D83F674BCF47C87591202C389D427B37A1E
-36E1ED9EA23E24A086812F239938BE4C19D4150BAF6A9F04BE819D5F404ABF91
-519CB7D81C81E2D624ABA46D40C531FFE4219D0D631A0D375757F95D96327216
-F8F795674532AA64D8B32020F8FBD5F092E6785A669B9D5923C08A8F900BAF1F
-56E90553705F35D12188F1104FCB390FC29ABED2E0FC9B731C4ED40946C544CD
-E26AFE5DEB68912A5B532C8756640AC31087E7D4D64139898D2E6F69596DE462
-91E664EC93C9A5C22774AC592F8BAFA074558604D54484D9FECE8CEFC67CA421
-49227640944C67371F12ECD524FF392A71826494059657CAF454FC870F5387C0
-3188725BC7F25DE5383B49669AA4339CB0021788922FE0C65C7374D3D2F2A1E8
-400D59551C6BF5F603DA2396FB199656D58304EC8AA7C9AAD8F056AFFDD2C453
-7245001DB1CF6550816E6BBF32CB30E01B15E299A35D55D079E10BF2AC459E14
-1D9DE4DE1643DED4C142B81AA48E28BB11BF478860101A4A4067BD5AF109B9CF
-90CE0370184792EDFF55BC58A95EEB80AE685FDD80DF1727D141232ACB248697
-225658511123C3CB048CDBE11E1C6E7CE2A5AA350D29F9EBFAA3913C045A55DD
-F64BEE7FED3CA1C5EC310E50E8522F3C1E4FAB3EBEB73B66A57C3CFBEE29FA99
-5EA2EC693D0D0E4B3BBB7456FA27793A65CD19A04437C582CBFC7001E2917501
-C62E2742A24CEDBDF9D305BB9C963D500A330464C346880632D6F5BE93DCEDD1
-AC943CC68D0836DCCD345F786825A522C2AB7C296CF72C8DB96C1A16F8B0C621
-48F546EBC38A5B3F125FF8DCCE82FBE331672E40781F44765D6BEB98BC5F56EF
-365A217C72728A96ED69D0C80BE128941357C1E9149A0FD5A3023054F12C9CAB
-A087BB08CB9FA6842B4C7721DE3A9C199AAD120DAF05E388D8B7A73800146B08
-9B0ED26E7335AAD093FBB191716E877F78A12E971D17AC3EC33B8A66B18F7959
-D7AC7757A06AB638AFF519DBDD13A35373B3F6702FEB07AEA752C31AA23E6E94
-ADC876DF120FA5F1C359E94B5C090C3E865FF59CA439573A5AA49F0EBA152FE7
-595EEBBDE95968EA675903DF8FDE3964FC26F46FA5DD206E486151BFE3AC88A4
-AD6D5EFB678E6D8A8BBCDE2648F812DA3BDD7FCE3112A091C66075A360FB8BA7
-D59207FAE2D599030BB4C21F5246E69A7D2EE02365FBE9D0CD1BC02839681F50
-9B2E222A117C99F26F271F3E416583FC8BD968419EC92CD7C4FCA2B00D31BE83
-F81A69D97764CE9E5628B82CE4C2F071344C363C2DCDAF071D83BEA3F76C72A8
-243DDAEF2DAD4E483A9313938B8148179EB0E8550B038DD746F868A6A5990BC6
-B87BE72A4D814A74CE993CF39120F18615A71EBE5433B3BB36B6F8237CCCDE40
-65E8D9300BA9E587B37E201570F08FA9E2721B843682C4475AD4F21960CDF6C3
-2A75BF94B7CF2ED1DA55C3102178E12C19E996B6295A375C8EE43AE06A92EC8A
-1332AA683BC4C482A116961B151F17FD79D9A5DCE58DFAA03F8EDBAB45501F12
-C4211851344ADE9D1EFA5A2A207A7240F8C908A46F64291006523244E58D359E
-827AE19723DBA28D81BE6BC801CEA57EA324F2221EFA51CD299207E7B387B6D7
-B66C036874A673EF5243AB21A02BE1A393B1FE4955E264CD967ABD1B487F79BF
-2B387A2B47C16938BD3B77D8A43F6429F492A44426FC16E84D845C093B60D2FF
-D0A79A46D01C22CA62BB7E09C24F1AF8D56AA6A11AF916905817C052339CCC40
-48286A871FB787C7DDC1D9AF7AE66B8E7667B289A4CCA798352391ADB9708201
-E251F9DF6CB4733295E53CE5EC5EEC41CBC550C7BCBA80A2BCCA1077910EB375
-5442F341653133493DA8FEAC695135355AFD2E64E60D175AF7C9DCD309F09C13
-8B3304D30CD5D7C4104459C20D81E2E69EAE8A2EA9E4E37420F3197DBE6DB0AD
-398D5426847CCD123B598D1CD01F84C148040D41EAA7D6589206D9B84CB533A0
-155587C14FA4DF9B24594B485C4968EFBBD55AC7D971734E41FF2BE9FB4AA5EE
-3536B421A4F0CFC06359ACFF92A57F9992B9E871F35D2A2EC854BCDD077CB0B3
-501FF0EB2432811E630AEAE51944FBC370B568F4D2585C0E773056D1CD0F516F
-AC1A02C8EA3CD2A8ACC50125B02A8D72B5950411CA46C0ABA6F71015533203A1
-94944681B76CBCCDECB62FD214FA405E24D413F4EB7D86BD914F505F133CB409
-1B93A35F2FFF59EE10C16BD76703594D7AA97AA8C6894A4C13F53EEC597BD968
-DBF9EFD7F25BB20273E21F145350BA1E5948F0279D5D13F315B6D9A4C90BF3E3
-944E3ED4F94635A75A18267546579D67D382E3A86BB2CC8EB2708D2A185A52AB
-1C2A776131DB4B1C0A158204555D81EAD0A7753663D565D0F8FAB8AF65CD0571
-7273A1B5D5C48FF093D25215C7801FE36EAC417A66AE1B6DE4C9E58306FC0308
-F39A29896D86E1F539AC06DBB4DDB3A38877793B1BA87B8FDD7D56735181D18D
-4C7F72091D269F3C064A571923BF0965CD83999FC15C826DC0FAB85526BB8BC6
-56C737A6BD970EA5483A0457D9445AC8532DF2BDAFE1B3A560E1B3B8ACEBA811
-C7D09E26E1CC7BABE9A1DFB6FF4CC2F06422D39C340C75C4B48DA31A3E904381
-07259E70A86F80C53F4114AB7CFC26984A1E42024FF29185554D99B7C80227D9
-CF1670E12D4C428E2A590ABDF6A30D209111C8E84469303B7E887E20BC153306
-B4920E9135E38D1ADF227CC7C6AE369BD2BE75B8B5EFC43CFACE91E77BF29F95
-0006BFE766A925A71EACE1432BB7A32D48963A6D47341906E6D1599B4DE5183D
-4DD62BAD06DB145E17E316C16873A310AE2F37C2B6AEBFAB8F740E293B868080
-1F7B1B61B88257465F18D762A96A1706587ED0D32201010D7C2C9A1E10317804
-17CAE6BAB1B82E4B158C25D46BBCD3D71D79C00DA53271A5AD1FD8B9383B8765
-50769DAC5F9A39EB90523E6D16B5FFDC97EAF49F47DD21DC62F981BB7C9CF11D
-47A74332980E6A8E61BAF0DFC4D359373FEFEF52A7F633A06DCC7671E843477E
-5EA865D2B9870967E1CF67722651C9D74FB64C45BA2A8EA73656D76B38A5B189
-491E84A948BA65144419F40B3352A2835B170F42C58A0F333FCB1D271C0A4BC7
-8FBC64C387C7A26339EEF291135C8B2F1F670C8B14B920EE77D00F37AB0CB285
-87D47C102062933A40BB8E11D4ADE52CCB9AFF7F64C21B0CA8241D88AA4330BF
-B880775CDF71FB4923F0E43DFC64B240B1195F2937D4BE746208A219E0549184
-ECD33BC0A20D8BDDBDB6126D85FAAE8ABD5452FAD1617A42446BEFCF339CC49A
-EBFC20FF4E40555F07A9C81CD3E890158FD6A58BAB6ABCF08D1EF2BADEAFEABB
-5FD05B061C8C2347BC1A5AD9F6A653CA34B925CE12E5F5BF1696EC1C44D3AB2D
-C8E18134A7D937ABFF3BEF5E3211F4DB70DCED73DA1FA2A89EDEB8CE17967424
-5F2C26106E3546B9D9ACC389749C48BBA619393CE649E19493B918B81B6B6E57
-D65A97C464E038C46F7AF946877052D9206D8CAF1A4480EEFC6D95B805670A39
-BEA382487050F25DC205B3572C64CB87288EEF7E7B458024D55F96B24E7A74A7
-87DC524E5A7E3B7F147E2E79A0EDF219E6E3B7BE8345946D742774F983F2EC9A
-73F5B1D0E4D4BCF5EEE3DDFDCDC08419E594843FE5D5FD41C72306C6AA43E4EA
-93FA44F2AD5E0321533CA468E6A4E086D9A6CCA3BAF1A7C5A96C2E65FD966650
-448BAD418CBE74F12F6F670858FE6E362D1AD40CA5DDAA7DEA5ED5AF2F6FE23A
-6A43A1198F2C026E8C65C7F1614165401C484AF0BB292EC25A651D1B359C019F
-43E21B2F07239CEE4B864C2B818EF7B7E49C3CFC195AA104C75E72FC46CFF69B
-ABC86A00A2FAEF49924FDE58F117484670B655D60404D999E2AFEDAC3B59F52B
-5B1DA087243458A85A8711CCAAC382EE27E727CBD90BBCD51414B2698DDEC5D9
-36E21D3B50D897F78760E7EBB39B957DC044A1557C7D5912E57B23E82ED54860
-6E2DB6181FD8C19A3403C2E57C9F71B904DFD85949010310458D50B23BC39B13
-D0DA4EBDA698D75C9743B36128F8ABAF389B19C0F5CC71CDA37E722209250D36
-742A8DEE4F994D1D71405C5855B2CF8B18AA5F2FFF9D4B9737BDE81B62EFA298
-2B6FC900B708F08D909AAB33857FD9C06D7312F7EFC3DDA166A9B0B110FA42C5
-3DB57F5C4E39A534D1088FB0826B81EE5B672033A5210E5CB9F478750DF96626
-34A9362965A7F51F7C00B5664A95AA517FBEA5EF2F9088ADC2447DA282423BB6
-7540FE63C61B564F60F98CBC3464E77AE8845FD13C349E8836A01BFC83924E49
-757C3CAE8240573B3E194E5CAD718A8D43B28CB6770AA4C89D5D7DF98B1FE6CA
-3B03DF561DD85A0DB4F165AABDE7636EB7B3177055609FF69D0391F7F31AD816
-0EE599DFBC9B9196F433155EB21077A222146C7B1FC54761AB32DCF4DE556C2A
-FC4CA42E22FE5ED9A7C225EB82A070764928655CE7048E6BD62EEAC38143EAD4
-07F325CE53345968BCB486988B3ADF521A440272E6A0BE7AD000D9134F758DDB
-470351DC64D38E8A405E4BDD3AE550F1FE889B708F368D85E2DC65D59BAC1E5F
-854EAC12D773978D2E46316671D8BD27EA45F422B74113C48353DD2600EA686B
-CF20AC731D9A7E7FB7649F1A0878685F5FCE8A9E3E4705B2D27ADDFED696FC1A
-EE7BBAFC660A41812E422C4712EFB79F3A29E21196FB53987C706A15EAB3C986
-0353D345BAF4645B12B441F35BA9AB46BE7C0ACB3E84E0A066EF1B44E76F7264
-E548F7022424819EF56C7A917AD5DD80268898632FED22B6057CBA76A0275E72
-69A3B27ECF7DEE9C1D43F2E15BB7A18D24F1FF9C02F1BB5A737891BD4252E142
-40DF98670F0897B9BF3C60E02BD243125C28E177C19A18639F581AB7C5713D0D
-618BA5EACEF18947E5849BBD2CF752696436D222A4244B1C713FC4AC9D0FEFCB
-2C52B26FA451A61FA9D770212E5371EC2E52A39B8EEFE2967F15504A19ADCF3C
-BB25EDBE61CECD1D4E0A9DB5EAF6EF54071A624161F0113E0FE525D83180AFAF
-8CF5D27D08B51E2AD43B22539734540E8460D1905A6236E07EB2E383DF6E6F84
-6FDFE96B5EEC8759B0DE0F3EE2B4F984BA6D40CEB8654AAF7094F71C51134E38
-9EFAC887361E885A3753650686E6C6797227211ED0D927DC8ED6E9006D4C5B0B
-6EDBF506067E9D237A42C7FA41640A0E2CDD0A71A887BB2745B103FD3941F9C0
-1B1092FBD68B12FD6BF6AD32814CDC85A0AAA9DD55D7243314AD90918F9EEC5D
-C0823FC5FEE0D593627BEFF2DB78157570692E6A849FA0DBAA77AAD8EAE7DEBF
-336AD33663ACD6FAA6355BC80BCF9F8643A647376C973F8497C6EAE0D4D5CBBB
-A8A61CD10FD528775BE2B136C526070BDCA15269375F89731E32A331F33EF1FB
-CD242AB1B191E33B532294EB1283CAFA53F8CD8730982BB4265C89FC674D1A78
-E675AD20F8AA1C1DFFB24F78AEAB8BA223F0E31DDE797032AC643E330AC79895
-3EAD5E107EB71092AF2774E0C3F23824E2DA94F4529B473AB6C0081FCBCBD9B8
-45BD11869A86E267822589F4A45EB799BB613DDB85202DD5E305E3D172CD605F
-30D089E3AE70A158089469899C13BFB769958C8D37BEF2F9ABD085A40ECB5C43
-9B2CFFB9AA0036A962072C282FC27D8FA9BE1F0B0AB113E80F96A455949DCE7D
-CFDEE414406F7798BE6BA284FB860A694E2F81821EB4A95F456ECB407D4504A5
-B0D47152E95372EC6E81B2B91160BDF996614873BFBEB361FB8FDDB22090FC29
-D5A9EAD120DDA69EA88CD80300AE2DDE878DAE1694F46F590BAAF718FEFB083F
-A96FB65C11FF4CDD7BD821CACA9A360C2084F96D15C33827CFEA6C6C36791B6E
-2CF2CD24269128FD7FFBB32AF1E345D5DCC768CA3101404BE06A9DE762A051B9
-C7D1D87BED457E65C244C8E257451C3BC65418E77256516A9AC64FB58882C525
-E1BC1A58CA5E99702F36C368C910156CAAE4118C12CF1DB5B7259011976E93B8
-88CE0FE1F0B203B3E40E4BCA7491EC69860A25E8A705D3DDAF0B9ED24B30A0CE
-7E9BEA705D6D7C02D78341322405F0A6D6E1EAC98C4A7108F9C3A8D10B76B1AE
-5F485BB6E359FCE6EE10F346AF7008B5532B05EFC7E4F0FF5580E9BA357F5ECD
-5D86E6240E0A0EE3432DA7CFE2D15B957CA669C2273F61F8F92709FDEAD7EC67
-420939BAB8EC9B7BF52D8F19CA81FA95D58AB5F19727157018C2AB45CF258FA5
-BADC36BF706D5B191E11E30C1F4F5178A0C5681DE932C2B37B1402FAE1125F58
-0BEF22CCB84A9DD65EBA52FAC12A115CF3B0CDE54CD88833769ED08DFD9F80FB
-1D97D4BEC3692B287BF34BC20E8FA407C675C2E150BE17FF1A0C4008EF3FC950
-BE7A656297838C5737255A18C39CDE6A53518BCDDE82B6A8A43A4685C9350B80
-7F167931298612330A36EF38625F86F8D563A111F8BB3B02D5CC032386C5AA5F
-B2E6AA5E791BD1FE540FF315E6D07947A9CCDC04EDBF967E01BA02CA8E8AD66D
-C693752CB0F1A4BE087D63FBE452048F2513243ED607BB4541767AE959EAA325
-D0DD64A5A55C3CCE1BFE2467DC08E90A1D9DF87B44E0F0268D0B1368997D671A
-5AAB40F7DCC697124C62623466FB10909990A6724A601E76FAC0668C06953C02
-C8289FDBCFCB07A532DF65F562D4FF7FCE9F5166E77A0D82C7F5EA434507BCE5
-0204881294D45DB905DC353EA802F6251831BCB3A874E2E1797061395233055F
-AC844805DAA79DD8402BF902CFE23E6589F50295AFDBFEBD6D37CD0B82C45693
-BD22B4C566B99BC8CA4C46B7089E46BA087FB380BBEF1888938A3A554BB9CA2B
-45E206614D29DDE153C3A5CA8EE3DBBF1D77D2F9905AF06BFF7660CD63D92C96
-D311734AD82D249B249D30EE70D76824EF0A7C7646DCE9A3C337DA87B582A74D
-1B30AE0C5E822C352FF3C5DB0BD0F367275EFFDDB50011A5C39327ADC6A951DC
-A4C80510E7D96ACA191344AFE2D1A5EAAAD8007EEB8A51F581CD7EF460C87807
-0D274570F8B651EDAA317E1E50B2E194B6F762E28CC7D4B1477EB9D31B46F78F
-0C73762DE4A83B9F31CE2AAD9195712562BC40628402843328B1E1AE8D6F4298
-AF7C9C0DEDA42B5481BBF1AAC4E6B3ECE92E6AB4CF48139214187BC609F3B6E3
-D4F1F909E24AA654954B103BB89BD36D9F76C48CE7A0B17C6BE9D8E24184833E
-391A96DBB44B1C9583B8EDF7287A52BB43187F651E4848649EDAAB1DEC3C25FB
-79FEAD19E901284D1E84311DCBF128063973A32FF6FF386B46AFF18BF1E7C64C
-18B069DCB3E5B96EDFA17AD846496F69C1F00DD9B81F4D46B004DB63FCE9E27A
-CE9FCED4E121B8FA784FAC3A49032621CD2BEDFA831B42F73814A97D22B11E1A
-38D3FB4540010715890707828B3CE11B17D1ABD42417238A5AC472D9C8D8DEE4
-AB6736D60759A1003A38AEAED363C71FBD05B51DFFF7D8782B0F1382E9C6660B
-5E35E1BCAC6C69A64CC0B62561DB8C47FD8A9269969B9E6CA02A1D18C0456D65
-C24DB4D14377784EA7490A2C054F80C7569FF90AD1E264B1E1EB3A9A8E0F24E8
-E31C4D63ED7BCE3E6444F485278E4451DC1CA432CB51083F22183FD92466BBF7
-FA4B6535AB0DF6DE9E4894A9B4F135D6C34A16D4D03FDAED260AF506117A66E7
-FA012B2A97EFB0F819B2F579B99C9867D97AB6E6997C908C7D4CA2B8F305533C
-A4358230F2F1D1CD48ADF1C0A82F79DE6419A1ED438759CF1C103A830A1C1D77
-F188FCE9B55C8E17109B9CA82F2DB0ED325FBD1B06A84F72EEAAB6D8D70189EB
-CB5E4CBC49FC1CDAD7CC380D54F7A98D62FB841FF387356FE397293CF0BAF503
-33B992EB79DBC524868D2989CB59CAE125162C1396D8807F02D84CEE97A3DA5A
-18D432F6FDFB91CA7124C135565BB5CE067CA968DD62F8F19733D7B246522D01
-AD892793950ABA979506F15AAD043B4BA66D6A434A74AE41CC84F181808620EF
-165C9C02AB17C9944EB9BEB185215FA79E1B3AFA7E1D5DFE062E35A0939D041D
-6FCA58CDBAFA993EA430DDD3929CC16A75C7D667DC6AA302C24060CF8F9890E1
-56B99508CA4FF83053C9EF6AC3FCA0322DA0E01C9C15560363DBE82CFC54F35B
-5C436943AE6F16C8E99AF94FF64EA384AFAAC1ED0C2A966924BA4CBDB5BF6ACA
-45541DF9F9755E0D5CB9B48530A49427D82201BE60E1CD3BDB389F48447D3BEC
-FDE1D3A32DC028A457215CA2A3EFC1F2E4853291825DAA8FA9DF148FF67C3299
-3C03AABE7A43133D07726A6E98FB8D4A1726AE3A142B5032A7A3597197B47604
-3A3EBD6CF2F410F7FB49FB6CD0D6772D9152D0328DED242054F11B0F2EDA6831
-E36F5B24A45CBB204E884BCA15928615B2397AA1E564E30F15A495C0CFAE9079
-186C2B481F7DE57E3CC324525AF90C7382A6C7445B4BF2BA89F65C4B14889E19
-FA79BF4CECB93C5940A8F1C98DE3CD9E73BDE466A6D8A804B732B526AD4BD51C
-3BCE1F2A49D7F96D4017F9C79BF0E7528E6EFB666E14567E5C60D35D0ACDDD32
-CDFE5D1CF0238A9744E66FB66D5680C24694A88406BF44422DF27E4B2E5C25EA
-C4FB115E0FF66D6A646131FCBB4F2E621C5AD9EBDC5BB04CE4E029C957152D8A
-2D7941E84DF4693A8F588047D70EE69215B0B0434BDB60C3BCA352C507394522
-4B8DA22531827260666D1A719973713153F5F071C0F2EE18AD6A65466F414C78
-78CA9535DCC0E1E56D01F59AAF961D2275EA14DAA97B873994D98C1133092BAB
-589012509E648CC303C60C82F7346F897AA20151397BC47A4FCA4EB5224418E8
-F877A5CE3267AD3C3E28865600649459D8898224614157326BB6C731B0812895
-6D09851A2CD0AC24E3564EBDF859F795BE32DB1DB06FA2601CCCFB442885252D
-565FF2F2CD53399BCCEDDB5552EFDC6CE6EFCFAE5077D7E2EC26FA50E8EF83FA
-07331406CB529C10C2E8834C6DF8A03BFC4460CEB7B0A47CC3A2E5D3F7D4595E
-D19E181443CE00C992B97224B5F044EDD6DF15CDD48CA29F6976E41A67FA94CF
-312D7B5F3FD4F1AE0AB22444DAF14A6563A557E0AD3BD32EF135C8D1281CB608
-15EB09CAE15F4FC36E3A4FF5CB55DD29CDBA97EC9F0A480BA4D809F389F2D8EA
-CBAF9FC3CBC1BC601122823A2E095D5F46AB81E10F7D6E9E6A41FF12A7467079
-E0CC02AF9D4F50F6CC53C16F183EBE4FA08C6C8D14FD51E1D4FE329525647F21
-201FA180DF3792CD3CD5AEE51340B026239B9AB2643C921631C1111712621C78
-C016FC996D1F7EB658A496CBA87EEA09C23020D9FA3D467BF71D6AA1C1D235CB
-BD4F5F76D7631C4A104C91233764DD7805CCEA7D07C7564F2DCDFB03BBE9431B
-BAC79C9FB93002787873B8A6936375F317CB3A2E4BA3E989FDBB2A0321790997
-0241621DD47916EA28415178B127DC9058093250D6E3730F8C57BA3C04EA5170
-7A327543C9BF4A8161334F2C4C1DA720DFC24AF5EB127E38067A12022AE64034
-32DACF7CE8E25B2B6DFD0896F509A89668198D67FCD7472E903FA33501B9A32F
-58491A9F669B98A25ECAD38523956C7EFA01E79AE208F5444B12314D37CE7EA8
-EE90E036A59636D687AB9F56578D9E5A184447A638284289AAC1315B80DC3B19
-1C8D1FF53A5FCA26655D2E4BA6D8779F1E88EC3BF28DDD22140BB975FDA72B78
-02E69808E8607D93584F4CAB6DBDC1789534FDFD6B8719087D6C77992FB5B640
-5BDE8C8BFAFE1F9B691B2137BE874B1A98DBB76576D40AAD985F8D745340BB89
-F95D3EB90ACD2AA4FA63E47DE606E16A78762DB1533F04F0AD55423C2DD5EBFC
-E37EB91C7413E95520E9AF74A85B6BA31372CAC89A91DAF34AF9EC87C1E5C19F
-7EAC8C50F30CC681B4ED75C08197F7AD6C4A6C95C7304FA56732491A4C667631
-8E4B6FCEBB9C8C186536B7B382B10210D157ED4F3FC5A4F040EB9EDC43C0D70E
-829AD7297BF6514FEC0ED86504C192AAC7EC3B57B190AB635B95B36C168A4D1F
-1C7F2CC2E90664D4F0F69DFEFEA54D903D12CE3121A9767C14170FFD867D3D48
-42C6826642AE5B6A5180E3DE0D42170256735CAD47B26DF5068C74310D99F9BC
-04EA14BCFD1F1BF51DDF86B4566D89AA583709340C7BBC3665EA29AB1D061938
-D449A03AA7EC41B595BB0885ABC137B0EBD834EC4691AD71FE0DF9D30996FDFB
-C359A5E109C5EFD0152D4AEF651389BDBDE763EE2C1AA3C7897135F8FA97F171
-E3FD9E1D95AEA8F2D31A4F2F18F45250B452AC3768B1C7D728ED1F4D27BD0467
-CC6991ECD1C2525EA4BA1D9ED5EE70C7C9BF579A6F04F12E34AC933276D92FAB
-F97D45AA75F1CD0C20701F5A9480FF5CC6DF6C8553348EA0A241B44738646394
-DA236F88F53D1A183382B420F6A0D3F7871A39E578BE8F883BD0C6B03BD7EA77
-24E3791D1D6BC2753F1F84EDF2B242A7DE30B354F1CFCFC3A429C427250D2057
-1E879577A62DE28728F96F1BEC12E1BA409D66435D587711CBBB87168E5FD45D
-4C405B2D61E223EDBBEC483010D21D8E6733E6314794ABBF19917A8506B37183
-0CD6931742F24D1589F27EE6CCE04360E0B1C43E440349A731CECEBB62AB59DE
-94E738713F87322E6F4B5F4D403426FEA0E45E23F32746F37B7E0E31A69F6EC0
-DAE7AE4C3EE7DE93AB54DC3325AD405F389814F7622BBBA247A3CB858EC62AE9
-D2489E2252E0D1C0E7AE7C14E5B72E18DA81B4F14FA56AD21BD645FBF3334591
-9956F9D4DB6018FCA070FEEB31E6CA0638DEE5442EEF99F9F0CC4675EE3CD551
-8004B682A1649B050CC874DF5FF1BC5DB4D33A5C6CFB4E529D33A45983047778
-96E38BF80BC18CEEB6CDEFE2BA8F65E51EC9BC43E15E17CD9C64F45820962B40
-0A91ACE263E8B78F440637FA55F506163C8553FABF89662703C094F2EC622F27
-F1D83ACBD9CB18FD179B172DDAF278625BA1CF5C2065D25733D9942A851751FA
-B2A9971A050370B56215C98925E74AC36B2AE4B013CBED8F23C0458EE99C9D11
-B86272D90D984E6C05CE153BEB0C5C2E7A66D8524778C31D82EE325B514F237B
-7988F1A94394F498288B4401D4B639E4E819469A35FD4764BF0D0354EDE9E046
-DF7932C34420471647FC91AF39588AE076987CF39145C28CDF3C82987E7DE26F
-EB20F52A9E2050CA53B8EF1F78B846C70FC4FB7FCAC52D5BED0287B01EF7394D
-08E96544A175405D0C2BE4F443006D1D9348346CB2AC9FF48646709A2BF61BAE
-0059DCC94DB11EF0BB3653A44D8CB7B3275C01B8B6E09B0B389CD7EC5148F2A8
-7AFB64F0E4DFF01DAF8B29E628CC2137924CF68BB433E064FAB734314784CA6C
-AB3771A5BD98FA71DFA8806935C14C9016F3D8674182E3DE603B02D20348F876
-A413255AF23080DED1D288549C4685643A3FEF2E16D05A93CBB7F5C69DED541A
-B3927E22DD1632537CEA77ADD04633D7BDED8C988EC6770CD83F48B74BB32149
-9BE1F4C5364617BB1635336EC1D442DB160A51ABBF8AA3DFB9C93E20D9BC0951
-98AAA43E29527FD9BC3DA340B7585EA73D5180969EA00BA4B393D6D88D33F7BA
-E4B2736AF1FEC5F24B64D6C64428CCFDF53F1CBF3DBC36035708C593258CAA8C
-14611422F204148981A15D01FEEDB3D98551DA34357751C5F47591656C118F5F
-BA3452E7CB4F08F7CF7F1569B37EB2B64E8CAE7BF42E06DA94B3B261C01D8523
-141E1BBE5B1491C0E6968C4337515DD0C0CC523D6E1852695E6EA5ACAF98BBEF
-120E44166FBE2F0EA02EFCC6AB694BBF56A522FFCA2F3C2D43E5533A6890F217
-99498AA38260AD3A4FDDC0521964534A74F99075934086F01E761CC37DB5DEEB
-DDAEB22354D17F4DB58F502BD23D04C2B23410C359E1C0B5B6AE4C45D929D734
-33F500E907D9FD913E0D174C5B01FCA305E006638376E8E2791C39D0878EEE91
-A72942E0F4637169DBE7A7089A7F9C0499CF1AAC87BC8F676980E0B99AC4ED8B
-33F0F531F25392C6B35B5C91C649BBAFFC7E3312B2DE35ABC74C6E52BC042B6C
-A013F7E6B73FBC32E12B2A24CE86FE30D727E7A8F4D70CC52971398E9276315D
-58D5F787068F3AE820A5FBC0EB7ECCA3C5A5C316CFC77DDD23BDDEEBA20239E3
-F3872B6934C4AB3FB522856754143708E6D8BA83493723494329E7B864891A6C
-5866AFE1AFB3E7B1C589795D073A5FCD201222A848C2044E5DBA03A154B6D992
-AA0614CA56BC35D679BE120AF3EA4F5D65C9DE663917897D4001305735D8894B
-C4F92096450CF3B47FB0B0E4E6B703F70936CA5F86CFFD0DDAC00AED05369D2C
-5F0FEDD9438242D96F5CB8B55BCC9BCDEABDA9BD33194200C4C4B6BDDB84732F
-DC9B6D4340B9D1CAAC41097CB74F0DB903F563BD0F83EAF9DD3F72EB33800B9F
-E03839C6C8F58A554F2A6AE4C5D87DEC7554A923E31D992E582F8FA3D87AB199
-E1C9485F60C453126A28F9D713B0703B2E5FBDC6FF9E43DE0042152F81EA13B5
-9F87C01DB8AA4DC7A79A1A0C10F953E284D51990849E20C5F5830C940FC96BE4
-9E8B8A4B478CE51B1BAE7E4F37126894DC9BAFC200EF9E366A4D054B80500867
-31E8911B0B75E16E690638471822B07ED3C230845ECDA423D7AF521BB5A8D230
-29E019DCA98DD25A0E3587EB037FEC117966A28717BD96EE6BBFEEABB437453C
-9563CACAF9F3F0BC5FF1805A596B1BD178ECC82AA33B31A0DC874F31159A64B7
-58B8714958F49B334C285808E051FCB293239C364DD48EF3555D0E442D60517E
-168F8D4480DD284A1B8916130F7A3CC9BBAAB9F95E43C59F8A21FD739523BF98
-D5D851737E3CAF0E5439FF63BC9051BEAEEEDFEFCF491F586B1AB7D8CFF61BC6
-0901EA7E4C9E770A4BFBF6CE909E8A6DCCB3819438D70088BB3F1C87B776A4C6
-A90D03F224851A1480B468E249DDAB7DE3212684B258EE29194A26873ED61318
-492C8C9091F3DDF4094428FEED2B39E9667E8344CEE8E93A7C89137EC66841F4
-51FA538E5733606B1998A7EE5CFD4267A1CB0C01500503EC8759A825B395172D
-DEB3CCDA35F921175EC34A414718813BF9875D1DB7CC6513026B0A9D4D851183
-DDF5E88913EEC31201F22F67773D1DE48DA44DF515A9AA924853E73ADCA771D2
-5F2AAC342DB76EC44D23973FD8CAEB7E1E5303F42872AC1904F4EA6790CABE65
-151EF130A25983B375E9BF4A5E5514B56CF5563AAF41BCC9F5A8DBDC9E3EC344
-C387D43912FC70969FC7C0B6BE5DC1E0BFD0CC1264DD729931396E99D9BEE3D3
-2339B4803BB8185697820D646F8CC15451EB9D8D26124B5CAD7389A8F3F5DC87
-2DE9B3F5A6E4BE87AE282E8B8FAA9EB0F559A369683436E6369AEB562DB3231C
-ECD34DCFE68E8B660A3ED80C0CD85E4B29E56C93320B4434F59F9D36D6F9AEF7
-1001305EE280CFD4C7F84B0CB42C8F1A2838F78C08A041B3827D277831A8C49A
-54
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMTT12
-%!PS-AdobeFont-1.1: CMTT12 1.0
-%%CreationDate: 1991 Aug 20 16:45:46
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 105 /i put
-dup 110 /n put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-readonly def
-/FontBBox{-1 -234 524 695}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
-C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
-3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
-426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
-D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
-E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
-6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
-A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
-0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
-85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
-F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
-C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
-12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
-048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
-0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
-741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB
-9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE
-306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371
-CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666
-1353CC1FC512D59DFF847ACCD3D03959C548F21BF622A6C3224EE815E753BC87
-E0364A12A1728D0762C266515BFD30F7711A9F1F796BC4BCF679918151320681
-D3202FD01EE5901981E7EC55F58812978105DB71D10B0A5A39BB69F703B11160
-71E527862BBC00736D616BF295EA94ECB611548BE15829EEBD0909514403608D
-4C7C220B61E9F004D1CE7760F7D96A75029244E5505A2579171BFC831AA0C18A
-5D09BC573A582787ABBCF9C680DC4A5F41F6D7208A4DE3DD4E566675781B86D4
-7631FB52070FBD290AE6DE90DDCBECF4A71A9C04A88F4DCF468E3256B3E240D9
-86688B5DE5C0EC734599CC85478045BF32033E14B99C532D3192440F4D23BA99
-AABC774E8978CC4CC681102FECA5969C404FD82F9A0E9F772ABA32D9A309E140
-C33E65CD55DA1973802702A9D38953F95734097864C045690EB370F9600CF504
-1D8C256C3F54789A39130AF465468B2EC43496CD305352AB5C50B19B6D025C0A
-8D85950ED3DEDCE064098AB2EFBE0E5470B1553AAA691B108AC28B169609B244
-B9A4596E9DDDBB5017847AE359E7CFAE76951CDB353ABB5EAC83026FDD24BFA2
-40899B9A904389B04CA8EDD18D19574585FC843F2D8459EDF6A296FFA0047F3A
-7D08570D877CCC8AF22684DC4CC7BA11F5E2296FCE728087D5394F3D2E4CD157
-399E3BE34CC8A97E4D9B7AE8A54747C945C23C3A2E3C07307815EA77E3DB8F02
-FDB2E31E2EFC2F4FB10A6CCD14D6C5121AD7DE0BC201BDAB24998DF9797D7F37
-8C00252AA9783E54023EED68AF1D0A7C3DE94C0D51DFD79F6D1CECCC35FCB852
-C7F523D4CAD562FB00A60835EA49753F176913C4B79708A071CF88E1757215F9
-4844D934D0F0DE9E79A4E68328C9AA900C8351B7A51B5504C651FE9C6832AF05
-72A710A16C7693C544D585311E6F81BEC2C33BC8BD3FAE4E82B0DDFCFB1CE847
-B4BF65F30AB480B329774BF6BF1246E2D1F402FA72F4298B90887DDE0AD09DB5
-4CAAC75BBD2437B7B50A9F42206421D0AB69DF3DEBA9F0134BD699BB223EA67B
-B65E5BFD4575E7DDEF810B768D568387AD94DE8A6673134B824C78AE36D0922B
-E21F10BA2267BF39AF9D7C06E64A467D96A0F8C4B6733BC9D801FC391D426B46
-7FB6CEE46D3C2DD27770565774258E5F2C5773D82F491039976FC29DB4E86213
-0A4D9491E5EEFE362AAF37F6C0FC0BD6C285CADA011201809FCE904F0C558834
-FF6EDB62354EB38795A4FBA53A670912FF984A2A702B9898D4723FB993AD10D5
-E8A3CC543EDEC2D6CFC69E6DB0321010D6A7FC357B9B6292A9F6D5BCA1FC5B62
-E769CB1BD40E7711A0298D1A425DA896B11A68DB14795FFD9FCBAE6C35DD3FEC
-6F914A57C65068473594716B2CE171E7B59270B129233571D0A5D6D477907286
-70057B799C2BC43735E2807CF34BD920C25B736BAE8034A6B8CC5E39EB4B7989
-84626CC8667E5912BCFE3C9FD65DA80D6CBAAFA6795E8B9AB9895EFBA2C46704
-64FFB18CA92B5215AFAB89876C41E34E5C1F14118714F73E516210C21D44D038
-F860AE5512AB012BA7931B8411359B63E6013B3599EA007B774D6B6D85E872DA
-979837435B5EC037B756A26BC1DACF1050AA7884F3D694CC4D829688D599C994
-3352EF1436AACE4E456C6C8E1DCF29BC276D6B2130EFA0F2318B7904F3391387
-EA5650743E6CB1768F4A9ADEB48378D1B86513FD8BF92864812921D262407DEA
-276AA0A2ED0C36C7678DD04C5975A8D9CA8A315FA127DB1DE6AEBDF79375543D
-654BE2B92AA5BBC5461CEA72A689751C884E7139AEEFF88BC589DFC285CAA007
-FDE71A258B28A382967D314721B5D29A2D31444C9EC9A3481247E6C878D3BC6E
-43FBDE0B6E18B7540600F0060455FDB2294C88A0C67D635103151F8FB91696DE
-D372C14C3742AEFDA7DB3A5719CAFC7BA3BAE587B239F2D55F33C70347558225
-1C2A16490B20E00C8976A27FDD326D2151C6FF53CC045D2EC1DFC9E01C169FB6
-AD694DB6D8CE3489977471CBB867AACDE52F245BCDEE90C3A23F07BE0E7E2094
-7937446BC05A1705D86BB65AEAEE557E4B922C542EFB6172DB59FB9B49785C7E
-9DFE1F47B9FE21B6C0D6436EC7E8B1A057B8AF5128E5B888589EC1307734D22D
-C2B20BCBCC3DE667F067B44E9D0C9BB639B054CE402EC991B5B12F1A8E2E6BA2
-E50CF2D44A7C4C10EC7DC93C472B75ECEE779FCAD56FB7F293314ABEC48CCF74
-B04B2AF9078D0E57E936440867CE1BC1FA8FBD944E3EA779BD89977B7C0FCE9B
-6B2E4F4895D91654FBB5788FBCA84985E90E92E5366CC32DC874B51ED2281CF2
-2E6FE6BE3B206CC18FE73233F014451BCD5D8C2F4873DB3EF2A393F62D5CB2F0
-B98CB8D8E19DCC6F885C4E8F7BE5F96BC34661DC6FFCB457F3642866D393DC45
-FE66B8AB77F95B02ED26A9D550860BFA4AF0881BBD5D0F01F035FB466CDB8C9D
-B6406B2679EFEC268CA1AD8D4CDEE2D47D6EB641D13AB7F3151722588DE3E2C4
-3EDFC0BE4B9A65D0CBFA0F369C9900CC105216A86DB6FC9338910DBFBC4F3447
-531A32AD80C30F83BE7183E30D9C49D00CCABF3C615A94917851D3145F7FE82B
-B62C60EDD92FEC634274679B1BBCD979F502CCE2D76A7A273D071BFF9A6EE664
-D88B56896613CEE8617A239391A3140C55D8EE40DB0EF84E1E6F378CA62073CE
-D0C24F98F07BC80875B0D07E8D449344826CB71659AF33E196C925256B11A737
-066C9A1FF0BEF8C90B068024B012A25E605F1CAB88856FCCBA52F23ECEB9091C
-368D3616332718EA80A122C74089B911DA55F7AB3E4BCE1C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 46 /period put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 89 /Y put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
-B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
-AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
-7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
-20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
-B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
-68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
-D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
-26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
-F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
-77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
-BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
-C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
-30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
-148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
-E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
-E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
-337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
-0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
-472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
-A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
-331508EB5EA0129B0812E2B888CDC3CF50E799B3526B3BC1B4A0749412BCA144
-8E4844C61DBA2D3BD966F0020C1EF0C843C3E9EC57CC4DCB9DF8FE98B599D82E
-E85E4F60FB8DE19891564CEC09C5E23FE7A76B2178DE7154E823DE4E67DC3588
-DA00666726997B0F8ED5515D0D87A8EBFA3CC83ABF6E64AAC0FDC4EA837FBDEF
-4A7D617AD4EB54799FDAD52E42A8E688F92DD2CC772DB2FE6ADED79DB8D5B322
-20494FEC6D794D5FF8F6179365F6B4B3F7DC24A475C262B9C5179A8C256002EA
-1EACDE24D7BAE607303D20FC50DFE1E923D185F8F391B2E82579090E3C10107F
-673E415D5193AE1B85A27CDCE97DBA4B8F657C84AB0E4CC87203EE17685F38BD
-3697BEF5B063992A01EADEDDD8F6E50222398B2BDEFCF7212924B5B4CFB860ED
-48DA76261A36E61E0547EE52F3AB88C6258FEAAB6B8E8C00E58526A9491FB194
-A9EFEB7271974D9B775B8B6AF0711B6AE478D85988327CA589E7194A609D603E
-F1ED4BA97C8F517EA2D30DDA5B9D56C7778655746971D2ADCC702C2DAD9BAE06
-AB7679BF6F95541424D734ADAE0BB32A4D9C768E2CBDFA303C6DD654A94BBE16
-4FA5311D5710F5D6C345C846C755E6A8C382EE27E759813293E4E29F5B46D596
-5D23F82E20CD41488E941C783AF1B25DFDA38C1C63F87B266907F732BBFFD9DC
-53AC7A64D36CC2C3B0117C8AB706DE2D4E133A395AE5E613EF2C1CFE1FA1A281
-B5122B081A5A50DE24D101AC0A5B9A944ECB3C0BEF9368FFF82CFD441FEDD4D2
-42F92AA0DB89F178D796BD67F2DD6FB2337C5AC28E43DEAC3E506381295BFA80
-526270405AD9F073A6AC3481C148612CD98A69D28D3DC37F8E888D98B6085010
-5FC8F7886CD169AEA494D587FCD51263B165BC9E9C4AC78B42147880D72CA57E
-D3167AC9B0249E9DAD21A36429C1F2F68B19E4974A4C6E23DEB1EC139879B619
-1DD6784815BA75AAE38412E64FA6C90E632E72F3A7C2FF5EC94A2A005523C1F7
-6E49EA466E2657E1A6275CBB04535BF1A7FAF1F4909D3D9159975E2D09961157
-C7F1E897F37C1D9AB918374287746470B6B150F0878DD937D7EAE0FAC0D73E81
-EC97A6E8AD3C88140938702C9C7CA7B71862C8DD2B15A35A759E059187F23210
-A05685580D5838B045E22BF57DF64DE8552D0E0B26DABF29FC2C364B8AFCEAEA
-45A4CB9398E02E7B39A5728233F6A9B0A4D9E2A75798E1DBF8E5BBC7F57C2F15
-BB8E264D7B2754DAFEED40C973FECCEA8B294629377F23B339ABE8859C3CF709
-EAFBDE011B2EDFDFC212FC6017623B615DEE3D1279526DBC4583FA0D8F1727C1
-7C50E3CF94A61AF64CDABA10F25578D6822B6CECA9573E13DC80B9D6667FD381
-7AC2CD01C697864BD647E93443D8A2B995A78C3677B5034BEF367F3944FD7ECA
-5B92D73E5D4D863E9FE11EF1528F5147EE66477C0644B1A2E62D554C9DB118C6
-34B0C08F0C013D156A3E65D855A5E4A0ED2310E2888141369A97532FE1AB979E
-208997056265D86FD622A3DC329A758BBE3DA86C73B415B94A63E41EEA07B7EE
-D83F2FF12160F4725AF9411D92F928265199B240B28E4231E224AF5AD7155621
-F542EDA353B5683BE4683EF7B6E02C8B42C2A820AD074699EA44292C87759F0D
-5CD158332078DBF07CBFD344CB30FF4029CADF79266188819C429DB8F0E713CF
-9AC7E74E7412E27A4DD9F29E1F5DF025087E1A4CF149A890C2E97660EE2D7124
-516B0AEBF00188807240C3392289F1CEA651895CFB959816EA4FA63B06000742
-85BFC4B9BF76701B51500DF80BAF7D216505F92DC7906EDE5D297D675FFE525C
-11E3D3A14203CC64839B27CA804C95A687D24C244AB726D9EC0F5A043840DEDB
-A1254063180F1CCCC3728B2B58084D3C937380F0D3C9AD1438C628B8B1005CCD
-C977368AD58A96AE21862F38776C1E69A03D4B4DBF909B460D6C6F4C490DC648
-7F80010C947BF465016CF687DE437C5FBD275A7D81F2BE27FF146E769D10D487
-2865EECE32BE9AA8E8E273AEE75EB28EC4A43DDB71080A06B4C3A119490B5C9A
-0AE1F8039A78A8F7A509BA89D89DD7E897D93DA78C2886B994260E3FAB054874
-41E044EBD3DD04B972F1482157ADDE2AB6CAA5FF83306F661544897781418A61
-FA998C0B84D4FED7650128063DAB2DAA3815AD5ADCE8548317230B7A5C8215F4
-843C36C634D749426F9C5C25168F9C1931190CBDD21CBFCBF71C072B2802969E
-123367ADE2349AC6499EFEE389846A29070FC13B766D2BA189D79EB0DD47F1AA
-8342C06B95525AED1C05CD127EEF29ED5855D23303B8628BCA4912A22B8BDB4E
-B9FF4C480EF777D25F7C8F76D5EDE499AD6761287BF24681372B7A5D72B2FE6F
-890FBBEC74838B2254060643C6D2213D3F30FA7EB3D46020CAA17963393E34A4
-0AA271C8855362E7C1FB24F66606212860A54AAC16A84AE63D1B83DFD83E3A1F
-8B141360CAADE24D764486704B7915D6586429BFAE1B7DA94E62676FC29DA0FE
-0EE6FA9D8D14492B71DA405AE103D63A3B0C62531334AACF080723A206445037
-1977273C647D00999AA1F5A00BFA6C4616A8E80043732D423415A4E27554FB78
-E078697DCF9959987B9D760845EB89835AC14162DBE219FD5C192FF122B4D9D6
-7BC2A394AEBC0323611B3324BEDB67EA623701B72F0430AA2AB012EB1AADC7FE
-C5CD18CA1DB5BC202FEEC0211D5C1C5531F420AFEEB7F8C4BD65500BFBA2843F
-00B0FA40BA45F150041AA2B9A207BE6F649FA36FBAA3621FF0E65573FF3AC0B2
-EE87C22B09C46FD03D8CD614A020163416856E1E03437256661807E644E5E215
-ECA74612F029F1C2D7A95EDE47C2D83E75D3626B7CF335AD00DE0DC44B073330
-EEB4817F5C14C23A05D8726D6DAF07E0BC4D8F119F7E47A241932D865B9FA678
-1A062C187A0630733028B24E77B6C39A144D94D1C0D183183DD4A239A0464E66
-B220D23F0CAEB1F3932364425E11F8FA299F38FCD93D531B511805B76A9F7E6B
-451567EA2C5C867895C9DC50472262FE04B907B70EF693F14452AF6501EAC25A
-C83C15D0A3E2CE0ACAF6F8A5FD61F9B4172A0446AC713E92ED8C4D5868A6CF85
-6841431C2BBAC89596A9895221B59479BA3A0413BEF8392F867DC74410471263
-665E0004DA97297CA641457847CEEF34270ECE4691D81AD75FE9CFC1BF6AD5DC
-4934086674F86983E4C098713D110269F8F265CCEB6DAC541F91929B997B69E7
-A319E7F6654ABD21EBF40E29909B0C55F107DB1CBEEDCE788DED2E5F0451EA23
-25385C3392E5E9D829A09F5811F867A2DB011D80BCC57E422D75073AE587F28A
-49AD5455E3A9A521AD3F4D44FE3451A2D74343EAD8882238D7D6F3D9CC8139A5
-A4AF7B686E9BC6162429C38149054A5BCF878E8216CF7689FAB7EF22196CA7C3
-A58DC66CF63414BE360C3519C4A0DE51BF2627CE1D0500422B73EA870FA49455
-3D565B21E48028785038677C50FF6264FE3C969C71793143DD8B66B94B54F2A8
-58535E5510117AF66616D8E6EE3E9055270BAE607BCEF7C90943AD24A3C7ABB3
-B3D53FDCB0AD8744B83D8635467448EE1CFB06CBC04ECD92ADF821BD0B51F531
-BF65508E41F4E916964A0AAF5170CDFF036ACFB9A6618E2C4730359121CEE4CE
-599EA8623DA0BCC0BF26B506C4714AE7E6534E7515662380636249FC50352B40
-F71AA076173DA5DE47D7756D91BE8F120538E0D0216C1C33E2A1BAF7B22FE3E9
-45D68D9A11B3E7068146B5DE27BF87A77963413B6C7A82B6A0D11FFF55642394
-A29255F926FC7FFA1508B10D0F26B7865CC0EEB0D9FEAC8E8564AC9AB06F3953
-4ECDB9E742241E26056F329F31E02E6C23A23D0E0858544F6DACF6E66EDB3962
-EB7DECDA9AA2626CEFC4337AB3A481B5C5A03C4BEA4A18B593C643BC5D0E1EBC
-DC3352C3C9B495A94BEBF4404FADDCCC4AE0CF20F80EF3F4E203C68416D5B902
-8DB555FF32D937A21376DAF4FC2F77064656A041028602405941D38D64382977
-E5F6C1E59084026B24AF5D2F04C34855EE2C90A19687CDEBC4CE686C5B12087F
-4C5871282ED87DDCB887C12FC53CDA640D7CE0E38CF2CA405102280886F50D7D
-7861A16B0EF2FFC87EBED9AE375876FF164A7365A9C982BE9229F939C9932841
-7174A853428E225E6C5CCF09B25EFDD76E0A604B1E07D2E83B2628B83B0217CF
-02E23DF1DC505F269A8EF8D2C8BBF02BC435BB8A29A4EDFCC709FC9C0772D3F1
-9C5299A05641D0FE33BADAEA78E618BEFFA43429F36A14797C59A7D89D8999A2
-5531F98706C7ACFAE0D715CABDCB9B2AAEDB14FB7FFE08F919D2C95C58CF35DF
-BC6A03EE984E011B2DEAC3AE3D57DABEFE8B56CC314928786268E469B206F4E7
-52282D27E6CF943428131C97BA1FC94A6A42C9656C367BEDFC357C65DAD3BA5C
-49DFA0308EE4E904977BF63E4DD87272405D755C068CCFA503DAFEF654EA9D00
-87FC5C35F29F06CAE41CCC78361FC103B36EFC21DB4A81F8EF8AA40DF2C6D56F
-4D371861A50A6287668C6B498ED684B19234D0C2083FB1BBAC0956874F5C832D
-E969C997975DFA822D3CC29C2FCB64CD7D0AED6AD6A0CA3D525C0FA3E8823A10
-B99F1AF34A53AAFC4554257C1A1FA00535CCAFDB9329603806321963827C1EA8
-84DDB93152FF10057756DE6AAC76FB1506057606AC94EC14144CEEA64740BFB1
-8284A43B3DB14D8B76CF901200F1B0F3DE0077EA821AD21BC5DBEF05916F8B5F
-BE86BB325A384B5C1E07392D0D3DBCA4D74172FFEABD12136C1B23CEF7FD06A4
-3847062094EF5ED53322E689EF62595AC22C0B4C976ABEB821AB01D44231DE6E
-E8BB1A8469BEC0405D316BF84B6B65C338E67E3CF5C3F85770F84EB92D820C2C
-442D0A6EEE44C4FC804EA49E2EC49739A107D03756619AD5B9B0159328A7448F
-C228D5F494CF3729592C839FD22E329805B3234162E3041C63B15B4AC9122BB7
-EF697C8281CADC824009BDA150534073B704837D11997BB54482D86627F0481D
-F9D697AE86B323D4F38C7A75922DC2DCD757E3D6F6BE6FC469D6CAA0DFDCB9BF
-6EC8543579293A7C61638CCEA3DC15289561601C1C094E0F32B7D1C7517C6F8F
-9CF09BDA84ACBD8E8FE23DF80C38835647230C8DD9D2170C8CC041FD972B3430
-EBEE51AC8C4979AE9E57F3A700F4BA293CCF5D09CD5A4131C3F0DD8A4CDF4CFF
-665004FA55C9DEA74E87F972F60B6ABBF945FEDD5A92E74367BD0B138CF5A480
-E333A1084D91C8BFDDEF637D9AFBF444709EA41AE07701A57847CCC4F5876797
-F6E4175D363C29A4FEC05BF90B87F830A8479BCA8F698998078838F08276BFF6
-75B7A70E651F3163E83A9C27D18957A1CA714CFF0AF2B7578D247AF4D003D6BA
-2E9D7D08C92EA2B45A85A77263ED2B2CD58EE3ECAC00F60DD867DB540FB0ABE6
-2C63D9AF6BE106D9946D7060AF818C568AB329857AD47724AAEE1EC404948905
-E23DCBE9401CFD7745FF57DEE3D2A1766EED47577D85939C38E56E5DFEDF911A
-B94BADEE5AF628C42B8D71D591D503DEE593BA2008207A9ADCBFF86025C8B8A8
-2885C0B7025A51D978BBC22B7FBAA97EB1F201018C74B38D8A1BBE649F15B54D
-1834FEFF96B6398840455AF20A523A8ACD54750EA1DEDD4A5995C2F031E82330
-2DF57363BD4D13B61E6AE7190D7BC6FABBCAAC50770E6A594928017A3A2D437C
-C6C590506A9354AFAE60B89464379405DDBF3EC73780E70DF671539786B60CC6
-9D0F02E99EE891F7A160D8F90C4881362AC379D5722963F6C94370A2B3F7391B
-49EFEF52A21A9C9CD1E887716834DCA776589C2046462FDC16F72CD0A3D0E5AD
-D749A13252ACFDE5DEF2C8ACB12E73DF057AB2D2AF3AE6570543D3DC5942AA2F
-1C6584CD22D5F0D5FA10BA3BE310464BAEBDC150A61C910BF9CE68DECD7A5D7D
-87BDB3025454749112898DCF5877F1DAE5497E5CA1C1625886EE9F0DEA404B44
-2D0D283E02D271F3E893B171948E4168F056109C286B24961CD24FF5D989BF65
-4B3971FB2E8E15BA4F1DB38E08B19641CDBADE4AE4AEE2B5BDB2D1C0F3B0A021
-437727C3552F4C808CE298578A65B4A5CF5A9098F7F4C9C2FA3D1AC0920F2404
-E231EB2FA07F48046E2B3C9963444FE1649E293C289DB715F79A1C84ECC367EC
-36D61AC9FD5E19011B61FF2780F7ADC8AF4309C3FE8498B1E06F6BBD6EECD4F0
-F9ADA8CC95ECBCFCBD0CD6EC52D30472FEB21BD3BDCA896ADB555AC36BF7708F
-69870CFAFE7F0E303CF01AFCCD9B5471E20EDF0C892F879821BD432EE1F48933
-57A8C5783D273B6F40082DE30A7E8BA2752B3AD516A840931038DBD4A1BCE6C7
-C927F62D8E939BA406B81ADC1CF2EC6ADE4F56EFF48ACE5CE528A4046965C610
-7E15DE7D645201112A1C747028EF9547609C29FFF1F03772FF76EBE7A9699FE0
-CF629BACCBE365FBF06C30A67AFD7747BD5EA5E6A6E67E57F69FE61479466155
-E63CD0809E6A3A6B3A5CDFD164328074F88307F31E3ED1FBE44D480A9CC316AF
-E9C98C1DE6D05028E3EE0D4D012067279E8266758698103473218B1E4811447F
-621B4F5A4B5F8D21314ABEACB84BD0668DDCFE9B30CDE6F87BAC289DED99E3C6
-551B5464F324A90500D5A38B049A4EEC8B911ADA812CD8B73EE522B2E192A948
-A6C48150F34D2324E4DAEEDCB63FEE1A4BDCEB4F0EED65C9B5F24D4569120659
-B0A2FE9EEE02030225CA014E7218E545A574A0C4A6BD88EE4EA5B8A537753F73
-6EF2337E222B09BA8E8675D9248FA37501D8EA4D8640D19FA7B06DC6967B7F08
-FD1081819EB80BB6149525723FCB1CD8C2EBA8266102F2559F1D1D0C8EF27DD3
-CE78FC8BCFDF1D112B58F9BB98AD3DB9A0C8B927AC376C3219DDD25F1DB2E7B2
-E9AAF5BE78D7641697F2F15225B570816F2D17E84DAD68E7CAAFF88800781233
-EE6B85CA5EA923D095A7CCC48F9B8B07E32F791B7F8637A49F8FA55054903D43
-37B553E6924C5C018476B5F9BB97B5C14911BB19543D7E320C3062430047236E
-C386CA9C72E456E62FCBF89A5A162461A7493C7067F0A535F2F71BB8B4884D71
-90F985FEF3F5334A761C7AC6274C434DD9B9414444918F9DE49C48A3FDC5F6D7
-C1A0E36C70EB89BA0E9FFDD03CEA0688E49BC1D1BCE226D3DF2B7090199C0727
-672B3661695EA616479D839CCFDB09C0DB5AEFBC3E55844957C0DC3999E5D0E2
-F461874F4EC85B1AA22C804269A16315A5CBCF8587EDC34FB6CA5F69E2584FA1
-E5FDD70B444AEB6DE88E38440D38B764D136B0B6FD943938768F1A6A96F196D1
-3A7563B53524E37434B4A39AB79F8732A3DBDACD40DB37D569D465231BE7CE1F
-5287B2B29FDEDD60B0935028157E83FC4F1A2D95955C6AAAFEAC97799A944D36
-79330E0CFE4CC50679366071A4FB51733E8E9C8690ABE3EBF74B37F2305CFF9F
-C0DA0CCE5F441E0BA1EECC40B8985D812CD66845D49BEC41F488838DC241D038
-1BCB8E04501D4F6BA3B68A50735DE0FEE824B277A70E64580E5147383963E339
-9EF6794890C714F4C1C5726E4DA9076DBD04EC8DC67B418D8DDBE77BDF970BD4
-73C5B888FA4FA8E49821A4C5DE4645B35CC128EC68E05B4389935D28572A7115
-93BC588FD6C2343E6CC1ACF309DE6E3E9B317DFE8C6E7DF7626634D6F4D86FD4
-A7EF24C9EC78B92EE2C658F776D17EC002FCD93CF86BE5ACAB8109DDF04A5E55
-E1132EA4D7B1F0BBDE3EF3D8BCCA5F6A2C75D173C1973FF31C58DC9FDF7692BA
-8EB2AFDB5870708F69BF738BBBCEF4564D68785ED0FBC5E2618710B8B54DDCBD
-87F41469EBB10A4C958621AFE7D538441B916D2027CDB78CA1D2A48456980FCA
-6A13540CF019918A657D985D061E38C9329BF9EFD2D8E46F6EEC1EEC22BFE9E1
-1BBC26AB53DF3F960D44CC4E34F94C9FB5DB77529F7145B317A67396DD8BAC4B
-AC27C112FB80C7FC5FEC5635FB2F1285462C512BA93611A606BFFA756CC63844
-B150E927495BBBBB6D0198CFB15895ED3D3C7072A1BE173674281F30714F7537
-5E0C58B51222FA703FB6BB359BACCD3DDE941E87EEE6C843CA110DB6C9D8CD69
-7A285CDC0624C62F95FF80B94AF6003D0230763483101C3B5696C610E8D7BE7D
-744B7AD5646E3E03296978B4B26FCBAF9FEE4BA8D2BBCD7921A90F51515206F6
-5C5734A3E7B79EB6BE52E5BC7DAA9E25E8212F3FEBD8BB0152DD3E10A354E0D0
-D39A32FF16BB33E7E237A189E22D3EF237A8ECF4A29F2B79732227C7981D5397
-119C02FF86699727DF000CD2455DFF82B9612535ED20121BD2D59E9DA7A730A0
-1F380A54735140ADE866214B1BCF81251429364A3CFFFD0210F43DE4C0F3A18E
-16A4AEFD9B2C8BCB63903895D7E089511F757377C3A0D43E6632C02A7CD173FF
-6E4814D47E921A614C15E1B820E55CD5A247FA13FAF772FE3F8626601D194BE6
-D0B3E54085BBFC07EB177B8C0DE6748DDA218D263627AE581F418D3AF9D4DA63
-F47B7F3CCC97273519B663B0732EA645792523B25C51AC82100B3967C21A50C0
-5E03D101E3E2809C60B3C4E39A4F2312CCDEB4947547AAEFCC36C11C0704FDC9
-FCD24AEF0E222F74797AB55AED4E44231DF417CAA77E407670C1CAA980D20A1B
-9F11A67F0E7D91972E983B7C737F9B88C6172A978AE4724317167E60A440F18A
-D4A6E9267E91F0934DB4D3C4A39D39F081FCCFD81507CFFCBDB05325C9244E93
-9FBFD33484FE4EC6C1785BCBE4B86E54E211CFEEA8B47DAF823AB2B594457AB6
-DE5A4F54B9880F2337AA6D573C0BBEE9297F59152879D819D174B053FC53DDAA
-481EEF7B2A2266577852A135DF521CAAFCEB20353BB261C020F0473E17C6228A
-AB23DB46B8C4B4E34AF964AD908DD9C2BA4D9A1AD550CFA68D90C3F905FC624E
-54686EA5BCF51A9851467531F62D383080D1328E7906B3CDC3D07437F7551FCA
-EC539F252F48D47992415E7AA9DB09151A07019207F6477C036DF8C3938B9223
-8F8CDBFDD54664F2A0856C4E43BC30311B503FE669C7AA9DF8626102E519AA79
-77CBB1B04B3F0D4868E098820E2F62E5294C8F63589428E5587C972B3762A525
-31A4B8D5197C9D7E7B5F053408FCEFC87EE8CADA63DC8E81A8608BF7705F104E
-BF8D270C9301730040345F24D5A501983AF533CCE8EFCD0853C956E4E63DC0F1
-216188DA8373ADFD01E1F13E2A8295C6EBCA5EBA167634FA19EF1842322285B6
-4F4E574252E9E77DC61D9DE2110DDFC71FA79F46A5F5C6E2D2E33FFFDBD2BB61
-8B68780EB8C54BEA61AAF43911840E4446AE19ED0395665785BDC1C3C912CF4D
-CEA2CED3C5CD3B36C2B9E80BD3592B39EEB682CB932D63EA456BBF7B0A616DB5
-7BB7B605C06D7C4FE7DA3C9102148C632BC8E40F2CF013AC8C2C029126A33489
-4350F09393EF045BDE5E949C690CB907F4723669C8C0EA953BC8B4CB89585B90
-86EE01D31584FA1D60384CF8ECB63133BE37B687F0F660121FD1838903A82DF1
-31BA75E32B5C66BBDA89E155D9AABCB3102894D791BD7528276A58007CFD97AB
-5B4F556356F0A07E2F9D1510DFDB87ED66BAB5BD43577D3F47602A297A391904
-2B441E55C73DCC58E6AA8BC145959D5BEC778AD8504CA516A1E086E8AB8E45A4
-504814FFE344D71DA5F8AEE2FD228650F7744D3D80A8D051DB487508187CA5BD
-ACFD14F483A47F490BDD6E5B4B1D4816CF97938906C8B95ABF37D9F7249403F3
-785EB51904ABBE3F8328666B07E546FA39FD0E08A7C81CE60F681172B8F1AA7F
-C9AD47C19042C381D6C65F56ED7C796876763527F00674CB212FAE6CA4227AA7
-91083D6BA175EBCCEFF501C5A313E4DF0F24A3FF04FEDA817D0A43308339893D
-D8880614194F99905039F1E3A3037FB1A793831F6A59DD1BD93717F9BE9C7B4F
-2190AD59CEFEF5F725C13F7423D995905B2BCFD7D5E5751CC337736EAA938D96
-C3B647C884D77DD231FB4F0F12F34C4F19EC624CCE23E79D8819E5973B09FACA
-EA6C4F3E41598F1D85E9B7B2032DCB586E40FF894B7C5F824FC29AA9060A2C38
-1561F32A55D27334FCE5DADF069B70D2D273A90684A476267BE03B45F7E4CC6E
-D218568CC95AA61EDE29EF2782D595D36E6C547A3228BC1896C2895ADCEA6D9F
-C7F867989E19C294B11FC361E4848C517D71A24192600DBAAA35D0FC131F5987
-D0E601E7770A3A21FCA2BA791239D2E828831A5629B5EA5FF5A0AFD1206566C7
-EE078EA1D894567AD302C4D6CE9ABBA5622E62A7C098174D3F4C4DCDAD3C5B1B
-8334DA7DE7ED6F290A1E724E503EBCCBAD32A4917BD0A52E56B17A51F01EA478
-C3AF49E79A6C8322832FD9264C626749838C9468D6813854E6EF5D128A73CBB2
-7C6C3C4D99BC785E5C05EE5F71F48524560E0B9BE7380B07BDCAD174AF60F334
-7E8916D1A27C07B170E56B36AC746A1907201A02FD2D542CB05B10FF6AA0398C
-65DF4B23D4AD18AFBFFB99BD6C4B68BDA3C96BA7ED6B2E43F4CBC09EE1C83BDE
-1E27A33715741D367BDF8DE00631F60437EDCBE59821D5EB05E1C9A431623409
-DBADF50812013FEBD896DCA3CF2D40F2B54E4CA9BED3F7727909F3566DF7C59A
-1944CF20D0A1F3A0F33ADB1EE0E5CBDF689D810614164F6C99107A45680E9453
-46889A48B24F8FC1969AFA923358DAD571B4C8C382451EAADCC1961DB9EF9684
-2879F2A2941D91A650265F0D690FC7CB7E0A03E8E7B29608C5CCDB6EFB503C19
-5FE8CC0600121C62653FF110281CEF44E9CC51BE73087C491FDF1EF9E65D0CD7
-B47B5030002CBA1E661BBCE4F5654AD7611D87F2A6ED1EFEE6EEC8BA9D1FDB24
-7AC23047E333957BA0884433D5477986F3D6E70944276B529D986C9DB106A855
-281855468228D2201399155385316D73D6CB09A4213B25A7E94808B132FCC87C
-5A5E55AA0675ECBBEC02B0D158D466939049D1CFA45999AC664CAECBB02CA229
-26B1D3F3CDD7319A344A6E565B0740A39DE1B12879280422ACC3D46FDF10CE75
-B9EC7A53D08D327943362D3A379389DC56BB1BEC93378F5E1C066F20CCD8A805
-B6EF1094A2EAA18550C7674CFF4161FB650CFA20164840004EAD0BC02F90A251
-3E575F192F04AF0DAE4BB67B920AAB3FA4BD7D29C13F7F3D74A08138361DD5FC
-723627C327A44E146C26B1A3C765E068E3CCA87E4BC43DB99EA0CFD6F8AAE460
-86AD3DCE5580428B79319FD4DD1B719D324F8A22ED3FA5DE8FC644D2448A02E5
-F41B33E40DCF4B5273715C6D826767638F8FA1C2E6A077CC3D7CB1F1B561CD3C
-617B414FDDDB53131C3C0729926C60312A0E77FFC6E7122A9B8C712AE745A6B1
-98B0287848536500E68229B04B9B36998D26C3172D1BB5F969F9C2159FF9228C
-09301197699BCF1E8FC572115E03A6549815A3CA1843AD48F76423A7BE0B5958
-403365584BE04F2533C19C59461D098618889ACCB72D438B6A67C3D537D5DDF4
-739C5E28878865E5B966AF13C93C61141A2096691F720A22845B32E4BB9CDABE
-0B54E93737B5C8EB3A34B33D5004E89529FED52BB20993DCCFFA7BA3E7818887
-7AE16B8E2944BE5A414F4902544AC2980B6941020DB37ACD3206D4097CE9D773
-8ABBE3CB093103AB22BB1AC838E0675E58ADC02961D8C8199C40DF9607BA5724
-C9426B847CF54BB03E584DC1205A5E9A6DC96B6605DFD38853EBFD4D83D58B8F
-CC1B8920B693A8BF2ACAEEA92210A76E499F71AEB042EAEF7BEB1CDA04176973
-0FED3683CA4277DF1A51533466A84356DE67D3F5FBE9946EEB815E049C6B7696
-327BA770004C961E54C7188717CE9EB1365ACD0989D81EC654E103D7E00ED214
-3AA75C0B1A464CAE491BF8A58325BCBD64A053D443A549BAC5A6A3B14469CD8C
-E2E61FBDBE72A563ECEB2F8BDF9FA287D81E0B290F32C71790E7C5A633C00140
-FB5F84F1C479BF050DAECD93C2E55EE8F198217C0ACBAADAAEABE085F8F48096
-81FE220DE481A0B6658D2C442CF70CACED03DF28606572E9F5423378794F2AFD
-59C5AFA3E4812C2A68AC7FD4E108B5E49BFDA7F5DF908AC2002A44BB256CA0CC
-84083E5BEA66CA1BD481915E44FE76E7B7C9222C8AE6AB316BDFE13F78CC8EB4
-E818EE7E151D85B82F66E0AA840A81C2DE92F41A6BD6E891911F0B721A7F8EEA
-403FA247629E32CBA3AF5E9CCC65BDBC858CBE0A73911683A548FF0CC5C59BE2
-AE1C849AC3655592175608912E36C76B9A360BCB16FDFF13EE52009439360931
-D3FCA88A291A80D0191C37AA41529CDB8671BB2B56574AA9891318D938366638
-284C746921B4B4AA52CF54DAF10C4CD7304CB0F3A86CE941D58434BA6928EE80
-627DCB0083E3737E7C5173A1CB6AE76B753E0D52FB7D03695184D25325AB4AE0
-4754BA3EE0435F5A73D1C8E5A0C287020E341FA8AB10C5A489B7C55EF12172AE
-DC47F44DCEF199EB8A21DBA841C06B0C15B0BFF9AFF153FA3CF7EA1D6D5E0021
-FA6D554EDB3E152910BC06835D61971ED81EC6FFCD9BF225B549CF327BF81877
-24E214BB1EC735FB6F90A2088D07329D0EE8C8718367F5A2CB81CDA6668C1570
-2945179792B05042A98A863F2274A517EFE62E1A4D8396D974C55542F7FBA5CF
-E06E127DDD2546D218DCC1E4719253500DB6A0467B073550DC6DAF8510AA0E91
-5C6C5A79EA47C7BFA147815E63DA3AAB3EF365343FE1206E65FED7C0C32F408B
-82F3498CD916141B896996D923DE05A8EB5F67084287B0870ED87EE892CBC157
-D10E59E51CC68C39B7A204AF3D392E9731F0DB1A12B92A393E438A88639B076F
-9A5FA0893BF15F608E675472DABDADFB440F9D9441F2C7480DDAEAC135297E34
-75D680E79D670DD39F4E52F7709899C45179EFFA4731A7A0B93AA92CDF
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.1: CMTI10 1.00B
-%%CreationDate: 1992 Feb 19 19:56:16
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedblright put
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 46 /period put
-dup 58 /colon put
-dup 65 /A put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 92 /quotedblleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-/FontBBox{-163 -250 1146 969}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
-21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
-06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
-55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
-B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
-0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
-1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
-7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
-7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
-356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
-19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
-C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
-244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
-AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
-5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
-D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
-993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
-2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
-E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
-309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
-F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7
-E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66
-AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9
-17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3
-05965AA02B8A67AEB04D915DADC1B84A531A1D672AAA06E9F720BA88419A3183
-63D1F9A3BEF8CB2E23CD1F9C003BD7849F093D3B4C83C153A5A790C1F9E37948
-5799C02F004C61A6FFDEAA1F9AE884DDD40DEB1539CFE3C3BE03C7C33CB54D56
-2C2A0F467049797B56D407AA43EE6B8C3F978A7D945A80BF711C12D6BFFA3DED
-35FA8B22E68BBE4FEC59E4C56D3C57E14995A8ADFA51CC6C3A84D3D775CAFA87
-A1A0F45C0283139FB485B8FB0BEF5232494C0CB564F966DFE0D0566031392619
-3FE8F0BB6747BDA591DFB26132947872D3B209FFD838A17EB1D5047FF880E7CA
-28BA81889AB0DEC353C3435B95D95C2F085D4137A62F570CDEB16C44DBB361AE
-83DE118ADA0DA5161C826F65DC8323D7D8C9CC860FDA7ED795EAA20B1CC97FA8
-AF8EA786924702E9D7923D38C729D4CF51F3FA68583E9CEFE4C7E2C46F7E343A
-78D6B6DFF1CE99695B525932A36FCAE65CBF8CA33F19B5FCC65501732575ADB7
-75275A8B076C41B49F6B9DD98CCEE4248EA55F396FF5FD3F2C535A291657FFAF
-9F8670C5806792CAB5FA50A235A9D2E5357D8D8A0E05A75A790249CF09AD48B6
-05FA7E9A8751BF2EF4D2AA0222D20E405D2471F19DE6D58FAEF624A437902362
-5D81178CD62290E4B519BB1C5003AD7D7FE7A42A48F04D640C744AD138C159C5
-0F88C3FB95A0E541777EA35C392F09182FD45847263DCE59588AC86D95FBB79D
-BCDABA5CE37C217572D6E450C20DC0E84E25EDE104ED8B8E840530134214F0BF
-BBB2EFE76225C286D3FF468E55477CB868CA563C7D28C94733A75DB8947B510A
-3F4699FCE22CBFF8C01FC6286CB0F64415BD65CCE6A80B84CA751BCEBF315BCB
-A3675338D53AAC627C2DAB1F230D056CCF017CFC0DD87A3A47CFC0C126D408B7
-4DD99F2DF57DB3330681F0F9E215366B38CF48284DECEA833DAAC926EBE5A535
-86F0EFA4474CB1AC1DEE03AEA22D5AE1484355BCD2E6B5A715F1BE34FFDC7E25
-5011233239AEE2C49A61AEE7B63068F3FCCE4D8C498E120BA9B13DF0A067285E
-49887B2653BE88CF91C6239FEC6192E9DB3A0EF33095056CB4D28588028D61EF
-16D171D79CC6A01C4C8983D992C72179D08666AA484F8842335B3F348373B5D3
-4284A7168B38B18DBED86BB8E87569A61337D79303F889DE30E1E3EB8A9F59E7
-A5FBE8AD4FA13CAE431276AA758B55DAFB8087E3B4B5BDA6F4E491E32010F7DA
-1622BAA5796897149FD7A0078B9736039D38E61B3F45DFB9A59791207157B4E1
-A9B7A6ED061DD169A3DBE6AEBB360102A01A4A9A939D5B1B4D88354435384C01
-D90646D9FA33F52A6F51AE7BC3C20FD35400B7EB9E0DEF902DCD5C683A812E0C
-317BCE806452BAF0B635924B29155908F9E398DC842325E7A805CFBBECC780E8
-858C4E651DB3F21D7C2A7B0A136320959B4CE6648C443AD58D8940E892160AE4
-EAC7A410773E0447C1AD979935B5FCBD2AD2A4700E60F5C7B2DC3B6F952307A2
-284241E23617650AC6F7D4699032B7AE2A33429A74EEB3147CA630BBCF023F57
-0760E9EAE801D873707FABFB28F845993C74AFC7DDDA61616273420E40D441F0
-87E195147C084FD24F5ABC665BC8404927DE8C7FC1AD3905336D6B5C270AF89B
-E30DC11A608A6CCE6BCBE3965B99462E74F4104B025134F94F9CAF6355CF48EE
-36A0E6E93B01C8A47B6E25801AC20A70055EA99BE72E82781EE7762CECAB33F4
-5D2D49CF6A3762310C0926D9EB6D02EFCAE6AE0F19C90F9EADEE2147665594A1
-61D1F4BFB9F9F026638A63392DF68995369084E8878D0DDECFB9014051A63949
-10A7E2EF46B2E13A6156C7EBC5953AF095AC1DD4D0046E4C5BD5AD4AB5551DFD
-FC79F4B1CB623F49131D78C0EBFABA072734D63AD9060418DA63E769B555D7C5
-503DE5766C2E8E58F18972DA3A971E059D617B6C87BE20C0D7F35C6DB48A87B9
-479E2DC34D28F52E7581E1500ACE5D297FAD917497329D2C861DE6CCDE674AC6
-709F1560B9A3815A137C94B3656A9530C94A8E93F785D1F3D3C6D6B572249C54
-8096B03616551E37F33EEEBB6E8F51487798BB139BF82DFD0B920F30FF3CEA03
-9337A75AE908C570BC7DD9BA08C06A580DC513383EE610E916988B2CE823374F
-24394F119F5CE5B07E764FCBF963378288A5250EDDC7D91DF02F7D5B46F45217
-F7B52D7F80F82E0C909BDA40B366D02E85D35F2C3165B5D13BFDA6C394093EB9
-22AC1D7417C2D8AF50B8EF4C4331FC7C1966BE7F1F9F50847A52CCA3607BE7BF
-6508E15283A54B1532BFC2F35597A006CE5427FF7C114B80BD33B58FE42C811D
-6706A12A615F4B7BC1CB26E1D686ECB4FF2A962F76D5E946EA5C934650BF0816
-988D09E7B49917BC4B33F68982A6D6A0C91A86CF1ADF26EC250FA56FB73813B1
-79475C929EE854F49CB11190E94A9173E7C78A65ECAD54643127F8D64F84FAEA
-A6E31E14C146A3A3C6DC59D0C29C4C7916E6D2B60B17650AA80EEE170ACE051B
-7AD90FED27278C197B82954E63C566AB102CBDF0FA581117782F3A6ADF241ADE
-7826CFEEF17961FF5C4EE4BD84C45047A300648F4EC19FDA8212292DBC54B027
-901EDC9AAB0D6F5274A1A20CAF591A4B2598409676C9DD3522515458F226C946
-7C05F4D88915BD2C149A025027281C92C6EBA700B57EAE12702BFA3D03F5D079
-A58999697C16E18F99865FF93ABDA0EA4D01AD8C14BFE3944704AB250D9E7D58
-B4E2811DA6C1C1AD351EA15A23AC406F2395F1FD1301F23AEA6CE23A8EC34BB6
-032AB1C4B6F3E748FE852BE0C044E07852579E6D0A84B72CDD725ADA718AC14C
-DE1FF077D87D37D7282166BE35BE1D6AC4D0C40A0C11852F3F9001BC78E2BC78
-35D0B4CBE6965C515002320BDA2721D4968C1835406680A72A0B02B6D83329BD
-DB81D24FFA508AA58C8A509C18D9854CB4645A7C05460297B32A2FF9AD1D2F57
-4828A85DDD879B7596564425611A023FEBA4859F1080B4F4AACF4565A152697A
-FFE891139F18DB6691D2C9CC4B10DF957FCCED4CDE00DB326382676C38F25E8E
-759955441A70DE8F722915822357183302742447D892C56CDD3E74D007BCB5B2
-27B25D0507053F4EDB0BC66289C83A47B4633FCAB7E626AD5AAD6D24BB252F52
-176F6F32826442D59D2195B2A7F5DD540599229A6CC6371D4D94422E31A64047
-029DA906D2BDB4B267851488C22347845B0BB402C8A97E7E5E133D8917236A1C
-30806D41551582E7C728AC0FB480C255EC810266DE7B46E52A6423579CBFC06E
-C8E2FF9FF00EF9FCC51FBB22DE4428E280CE1FD5241CCBF81070486A0DB9536F
-B6BF451F7C706EE44D37A0D78793D24CE9049BF285C1DC9AEB61BEED88C4CDF5
-D3BFFED602B26D4B3788E171579289859313C918CBF70EF8F655CD4FB73C514A
-A34BCFB555B6BD835FA0B80997608E9F938257050F1673AE03E6B4C6F96045AA
-A8FE116B8A9C0295D34802D22528B80EDCA6AC2C5CFCD57E12F12ECA8C0BDD0E
-EF7F3B6F4EC14C3A9C68ADB70B6454CDDDCD3181DDA00BB3A9DDE3C64F162D0A
-9250AAB836AF3F3C71589E1DE6B542E9D82B1266E23046AF5A57A7FD5A3EBA92
-B137FA2161E97A54B5C472BD23CF56F3936DAF5C468AB88A6B587226829516C7
-71BCD7CF1D3DD40CEC1A6F7895DC95C9C9BF1A571878036428A9A42E9B363EE8
-64FE7D1473CF558A246F0921C3257F0EDC4EC2C1FE4E342011AA9CFA4472204C
-CA1DF74F5BF01A3D0F518FBD76194711589E02F3F5290599E0F066F617B8F0DF
-6C9196A71F091B8D7A8FA8A72E907EFD9821E1A023FA4583B1BFE762A07CB409
-FE74B4CE4A642AE77B5FFAE5FD7D65A1C03EF6FB31264EE51BCA46A8927907F3
-AD83EC5B5337F738F44E204BB64FE063A8C7738F217BA319F23FDC8A65610014
-D99A05449EC21CECBEB27602F66708B1207810BB167AD4D4FA4AF54767A35B1F
-B17454FD0D82F04386A595397E2246ED339259A4B70854BAF3F41500CD1FA69F
-799BEB5C6FF670D4E0623B2385D545E2F46436FDFEE4F37DE68308BC86551E26
-0DAA88D7A8E54B4E5FAA94B88E322EC04542C3F8C9AD3DB9954CC32DDA1A7002
-8793B4532A5D6D31DA33470BB6D812891A52EAF966AA1629461C25930BFC4C8B
-6B03832F4AEEA5D0B27EDA93F980E91B5493B9618F143A4CBD26B4CD8F0C3D16
-5B2F27AE628D9AAFD99F4A1677557D68AA42A8832A7D44092AF20DC586290685
-48BC89B6DC4734F8E13F714A54742DFDDC2C85EC30E53E39206594DB51BDCD17
-5A68BD85E351CF51E86163748D3AD70555FF1D5F7B0E556E54744181F7C48BA1
-C2C56129EBAADE51F7764AB181B6FBA1828107F61E8047A5CE36B58F5D6C2C17
-61990478D0D44C23B1BE2BE6CCE369DDD14AC25BBAFEB3E33D5D50285E947EED
-3A23B5A8698CF9F42F75A514D7B3B0EE048B2F2A4084912CA66A14D1977AC21F
-7B2A332F41CB33D48E09F8F0AE912170F6019D655DE6827277CC043E001E37E0
-88C7898F6ED2FDB215E4D4EF79787DB95777151B1951A2CAE8A9528D7E2BD15E
-37F3BD6449856E5150075B92F10F9615F66FDDE2111A4B7BB546DAB5536B9437
-2290D2405C5152996CB1D4B217FB16D6628A0FAA3DAE60943C98F4890D18E18D
-3E2740F42CE9151E388827AAFDAD7CE9F12C54A932837464336B5575F0E2FA55
-15DE03FD73C73060E4AB72F7BB3B2FC23D1691FD104F0330193915910A3FA534
-B4EBE0B42222AF6F1F8E2657D3CE8AB1E8CEB40686CD6953C233E52C3D1534E9
-A7B5EC22ED0CE565CF1B414FF50B6E3D6CFC342DE97F723B674E63CF67D8AE5D
-C786A0F6BDE30587A1CCB7BB049B73559AD44CC0BF2CB3934ADF7401E5A8F327
-9D701A04B88CF62B6B57FEEB8A36ADC12DCF241AA96C019969BD00317C36D0CA
-2642B811E7611680AC3B4DC34B1E98426D7F85043A042B74D8711F587EF31CFE
-3AC4F7FD9CC6CCCBA3522AE22809395B0B3BB1B4AB9CC1A5D1EB982E9F8C3F97
-2BF975141C39AC80AB0904EAC1BE6A2C7F97A9AF3B32ED276373AE4D9FED44FF
-4F1A91ACD26F957F9E50E1D4940263BEA65E273B926AA3E7DF828A43F54D9A49
-7AA151A70ED55B8B5717527339C2A468608C1A5D665D0541F53B5386BF6CDE9C
-E07FE982E83975D173824F2CE58A357A1EF179483CACF1C2E95563C2E60345CC
-21556A26D49F40B84A4B4F00EBE05FE36CB920F65FDACB38AE6EA7734BF35029
-9865BF659669E1C829199BD232A128E494B1D6FBEE9D92681BD7C0E430C6F958
-2054B0587017126033B6696ACF3ECF85A90B3894AF9FC37D65A6A8853DBBB25B
-1E016D3BC01EFC65C13E487DA69A7399F57D02FA6FC3EE6FFA7EEB7186D1AB77
-493EB4A36D0FD86592DCB7F28617E4EAD22AB1601138628F521962C978CE0D8A
-384573776F31625C13F19D35CC396DFC57DC36173DEB95F8A86C3870DB90C065
-70481E6DC8F7980CD49C6A2CFDA7EC07CA76FF8DA24E7B8A6364F2B734E1E645
-1829B8652B838E7C55FF037DD51C13B2A6867000D3E8C6652DAA087170804F66
-3F9E437FDEBA6989464E9C03528EFA9D82D5C67B80A06892B23F6DBC7FB79988
-FE00769CB542ECCDC42FA28F34EBDE4C37152A6C6419033854C7351FFD8DFC69
-361909D977C3E8CE7E1AFD26FE2B8A7FE5F43058233310A63B0E11F28C516A4C
-7B82A552BB84C0294DE50E6969628C96A9506B1EA590E02D199A6174C0CDDC50
-B7E822C9312F3534030FD1838B843375F0B30DBD4AFBAA0D0E3A49495971AF2C
-E98061E422984F585528EDC16DAA7ED05B4353424554AD2D6345D6767AC69675
-2151A3A2B5C28561DBFEE99CE0C957E8BF045D790BA25949E2B9CE6F63BE452D
-7786129389D5314E1A0D6EFE59139FA6583DFAD8C130C8BC8C5D4B9D77E778CF
-175CFCA392C7D49331486E34C4A934969F61D00E32750170C7B70CF72983E39B
-79C07A23D10937CCCEC01186C028E704BBE47ADD015EFEC387B6419F6E1CEAC5
-56E182CC28172FD62A1CD65CF7CB008C637CEE19FD4EFFC27E6BE2ABCC70C5B1
-C98E9E4975B21FFF757DBEF194AA8266B0D62FFADC903D525766B90D94F3ACD3
-A7FC9C32DE3F22F4501B952AFA043A333C7D4F5EEFC8B8733EC891B1A8737D06
-867EB30136155DD70E9843E5E240BE2A27B2A5FE49E681CE09FDF95580D6EAE3
-005674C7DDB1F9CCD71599383B145B25B0E2F8D97A257CEC5CB815B87E866C4E
-C5742D0259F6ABE53CEB7F99038C604C3F975E43D8549C79C26BE9D90F3B7E8C
-D4BDF13BDA5FC962ABDD444491851D4C4DFAB33BA07ACFE9BD0FFBAAFE053379
-E2524F7C96C62E2F32A9FF6ACCE2377ED03DEA4C75F4872E9BB2971DCE61F2D6
-5E40EB4A94B72A99D95D10B1EA7380DE2D290F06E6A63F50F1C942AB62371FBA
-E81128E0B72132BC5967C2AC5863B8E849A57A4A9D21635DA15150B3A5F68E6E
-A64170777942B04EB0B06033F5C37CA43F00D2C513D6572370E16B8E381652B1
-D4F4270B1ABA10CD543C1CA4F8B86E4A8A41B75733223D9F7632019B86EF650A
-FC8290993AF5B2AB365A600B766738BEBF9E9653FF5FAA418D73D84C60056D98
-06D94BF718A217725D0EB7E2983DF02FE8D17FB2D3F269A0322839D5B0252A07
-EB950B64535EAD9AD6DF3A623855983B92803E98A5B15AD12BC1A74A439B9C1D
-9374691E7A77F4967AFA1B84034673A932B0DC5C8401347F5126E2C91F775310
-84CC81A0DCE7F2F5B6C94FB0154BB6FF0B4AF290AC3E47AD945E5D5F2E1E094F
-1FA125199DE39E768166F35BEAFD4F013E46E91BD2F3A43B1313AAE36DACF9B7
-3D930CD6196960C6CCF6AC5898F4A74F00C641BB654C72C8F6F4019487892314
-5D7BEA38D16CB807395999F745E89C2C0AF226CB5B4A37A01228457DC91FF7BA
-768300416FA88230832FC3E5DF27756173824D8C4B438974947DCDB17FE523A6
-E26822458D3861C4E3D94679FC72A3E54C11E4FCA8FAE335DEA7D9F09F3EB320
-1DC5E1B69CDAEDF6D01999C3B48F27428FE44CD0EBD9BD2F21D7FFB99EECA344
-83DDCA627C2B934935DB8C6EA42C40194F84581FEDD784F1305B49917EE2D745
-CD43006AAB08048202F11D0461B6B6917E54717A8FCC254A7FCB525167519DBC
-B3A261DA71CA704743F06FBD3BFCFF50FDD815E1C31D3A07BEA05D8FEAA4371F
-968D5593D20D351DEF6829F95A89B836D6F67F43C5A969A5495F8142B3527AA3
-A8B0B484A7082985804922DC8704C9863C30A798854725D31716115801E440FF
-37E1C000A901CCA9316C327F4C5CD651E24629A9D6DB57FF174619AB1BFADE6B
-03F189C1121F12731A0BFEB2706E2E49802AECEB2C869E8F3916808FEB82893E
-D9102140B95BDECE891EBFDC0877CB05D5D693595BE1744486199A80D2F299F0
-1532B5B51D44A81F6630285B775CAEC4219484AB679C387736AB657D2FAB5FF4
-C1F38955043568B0923EED7871A79EC0EBE857CEBFEFCDC56BB88B8DF95A5955
-B1B5C6C3758EBD3961A9AA8EB80F727587D52F520D9C2F3B16D53D04373C40FF
-8B43EF30AA6905E7954B30F8CAC576C961A97D017E38333401D46497F464C58A
-6F6DAEA14796130F4207C9A2C915FD60987A4FADCF15B1CE028E19D84741A4CF
-E92F14975B22E90408636EC2C6BEADBBE2F700D9C52DAB85A8305314D0E9EF86
-7FE155A21200C540749897BBB8446DB0FD9EA6ABCF1EE1384401EDFBC56780F7
-BA296BC9949FD913A6C1465F372FBE8A94ECEEB080DE004F68CA85D8E14E2FA3
-C2C9F25A7AA3107560737D89D424415F4519CD32C08EE537ED3C1D868FD9E959
-B7EFAC23F9A3391952F82B64900A8E823A2C151A507F13B5B8494D969668D5AD
-18E616740BF5FB4FCB456948366D740DB5977F1486ECEEC222BA34275678D000
-E72627EDBA485B582B3D0B8D39A84066E9EC9AEA514C99A610647E8EBD15002A
-2A06B2B774369115542E5819FF5CDC8EFBB376FB8848BABC2A9FE36FE58664CE
-ACC537460646EF5BE3E27AEA3EF1B448F483352A74BB076C6C70F26919DC748A
-8F8C8F00D17DA9BA1A2C6B2EF2991820AFE725820547C323DC5D881A09951743
-CF93DBF69B34DB77E5179489647F10AE99BE1A397C3E9F867E32A41D5E648D37
-D2A23BB0BCEE888C27357C184545AEFFEEDFD381F02CDF27365C2F6081A9F130
-6C093331619FCD8DAA5785ED724C65C750F68AA4F0DB9482ED5A9C7AFCF992DC
-C7E835150F6FB2FA3B7ECF0EF9E2DC3FC4B662A39BB4E6647C970729D6C4AB8F
-CE91E89425D5C3A7CFF43E0DE81B4010EBFD6F4B59E6974D8ED78EFAF93403EF
-2546021413AECAEC33F23DD20C120A352490BCB429609877704A5283163164B8
-36B1F3C515F58DB0539340A6063F88E2846698593D5518413D76184212A1DF22
-DD13C9CD8251056A988A0054F340A7A69CA5B946BA01456FD45BED04A44158EB
-89AC05C4E21BB4CD9D1721250A8254B62795B4F723DD561ACD73A975B84D387B
-FAE002B7854DE9284C72FB4E32BD70F440083A990FCF0B35A7DFC987DF094D8E
-31700EACE3BAE2DF2AF61E8675D5A55062426268A169B24CE0975982C76D36A8
-BBE2559A8A48F3B022DA0E3339FEB3357B83EDDEA914391DF8F6E80EAACF0742
-B31348E509D17A4C02582E854D3838AAC88AA0C0906C8505FCEAF8703970A3B4
-38B0579D7AF0E0283FCBEE979A3E08AD484F0C1171E41F58AD8BA063FE85D248
-60EA777285CBAC139159875E82165494DC8A35E3A67A75D8B9C8CCDE9805325E
-39EA26FFF3BC9BC99BF2D2D70A5F00F410E50D759E1CA678492DE1072966BDE3
-6469C249BC34CD048FA81F3241D36839491656C95313E1BBA617EDEEC4ED9703
-DA7A345DE172C2760FBF66559ED167BCB696C93FF085D81987602B193E87495D
-2A2A19DC6FE716765861A94108BC65FB38DB6EB504E7E351B9347B68886382DC
-B872968991EAE65F67B8FC8DFF6E3E97E94AF46EC98C89D877EBE2A9793CA763
-EB155FF47A65BEA3D5D23177D8CDEED3523026E9B5132F6342F1257225F087D3
-BF2C1177C097AD32E23138CDDE0F651AFB6F10FD173A3B73042669C116081E80
-2A4868ECBE26189E358956839C56678FCBAE2D1705A1E5928A5967596A4CB329
-AA02488FB3E2EE9E52C67FE4FC7D40F2030E7072F160176BBBD66DF7B2AFB1D7
-2A5AF0F3564FAF8049C4B7397D1DAD17A1DC4E2099D3D8BA176FC81EF20A0A63
-C3116BFDC1F0700720DC16B6C58259582B39D00B478ECE899951E5B8084E876A
-ABB69C19482D66277AF4323FAB7039AA9CD3B17539E75FD7EC8AB8474E9BD4EA
-423607C7FAA068A9339ED9ED7B1C67EEE03AF3F3137CFEE8FFE71FFF275D900E
-AC82CEFF1A42FF1955309E22E006B69967452AB7F01A2C3ECC090AA180CCAAED
-EF42CAD566B25CEF7BB035E4C6F50264BDE376609389EBEB3EAE245555F49F1B
-C67BE891C11FE7A4FAB4D9C62974F4E0655A72B36A86AFF1634B6F5E5B569BA2
-3C3C5D9E133A4229C4597D4B767C3F55009E29FEF97A003D249E1DF465C73A41
-6BC404CE79CDE12E861E8455E88A5C8A92E325192599261D99C319B561B54931
-518EC86D45D7BB6F19CC3C66069E597E1CC055C4A3BBDAB813CE6813C6D8BA2B
-DE6327582814F278D91B2BA37035F322B921A22EDF9D80DF29C0F6DD0D81C17D
-7DA05D5668C25720338B7DD5D71683926279031B8F1C3A6585726F45B173E405
-2ACF6F97355BC9856D0597990EA6A35DB3B1EFB83CF1009882AF73CC04FA44A3
-5F4B1D9C72BE9F2441B09AF179D154D7964DD71B0F9469525D314330DD1C8BDF
-0B2312D6ABF64290EC0B24BCD55294BF719A222D945ACEA9E427A42F32F5F5FE
-D839F6378F381BC8194497A8A3B4F042EE1B960DAAB4148B5F1DEAD2049D1726
-F28D34283E1F2A2CE61C3DA6E3D1B25F21A2617377C4C5B3B275678A158BBBF2
-430A7079B4FC2873DCA92DD3B3DD4903C71E544302E76AA5B855A51FFC17C7DB
-D11D7906E024E2F193A10ECD6E74CEC5B1ED8A6A494F4E79E2269AC55A26EA8F
-02A6901D66FCD03C338FC6614B892D011DC089C36236AB07DC5104B8266790AB
-D464B1775BDEDFB991A9015DA95A6BCE1B3E61B71BDB2C08D3C58108929F1E6A
-5BCFA64BBF4E1EE1DC873492B686DA569873C0EB51DF8CFA743FCBBA2CCDE3D1
-F4DFB080A258BB14081593ADA424B77DFBA348CE11E723F091AC89C0D25F6794
-5D0DD2D1A78CAF3AA1DD692EE3D76C6750B1104A0D6512FF293E23CB895D3285
-F9B4CFAE9F4B44129E45102104786D8EFCE9F00B15AF914D27CA7332886D68E7
-F32963740C6ED8D1934EDA3A3BC3D16FD3121E76040657E4C917AE56512E46B1
-B3E57AD1A83FE1EF1A640E9D1F532A30515CD527153C9A597C5257E6B1DA8018
-63A379B4B36F7C0352E184A30A581CDBEDF325D9D92CF9FE2EAF2B4056ADCC46
-817C75FAF27861C519C2EECA730EB6215EEAEAFF9E13E9636E356B24C1FF32E2
-BDDDD4CAD0D46769E3A4CBF16C9AF3D2C739723CAB2427464A9B5FFCF7BC5318
-8365C834564EA5B11F1A22CA59575D07C25C30567983467499F27352D34457F0
-DCD55D488CC9E5AB42DB1AF140B73EA7FE27CD44D8E610D9012FB57EA1438F85
-5DA3A2ED40810B23A6A8F814CEEB2320CE5E1A9A1BB117EC249E409A06BE8BC5
-A37EA89E74B99FBD237917F62EF1CDFFC3893CB8D1BB527779417FEB0351C69A
-06231B2BA6939CC21BD9414B9C1C1295D6BA5745B2F6FFA498C20964AA73DA93
-F2BB60822D88A77C029C81CBC8118F1369AD883B16CEE5E59E892A027681D02A
-D67B1389B10A2A0ABF8F22B6F8382F06F3CB90CFDA91AC45FFFD7AD3A192DCE6
-14201D03D9C5F6331137715B6B10D0547434E4E129EFD3ED59C5B2134356F265
-E2DFA95CB62EFC4B820966A9A172E5B2A134D359D777B68186704FAF7DAF575A
-D201A26C6194B9FA36D41DC291A62613B5522552D2CFFA81D276009A8612212E
-293FCC8A5C85EEDA263009C4FB50ACD7B65555A9174AE37B1DC8264A15225426
-C43F8A6ED11198FF1BE2ACB099D3A03197696AE50238E20ABB729E5E52571C77
-191CF13CCC1401723756C86B0A420A0B906EA5D42A64A44E519F55E03AFC0661
-751F9A3C792E69FC2C33129196534A91F1F939092789965E9477CD9BB709ED4F
-FBE00A1C99CB740844686E0376C00AD3EAEEE30EB00722D4868842EE0892E746
-9659A2100DE024835D5CEE113295339BDDF6DEB2A98A0AD1BFD3B14F635D08C7
-AD869861D8996F6D62C1E427117BD63D64EA42D7BA83524496C4987056CFADC9
-63125C0FE0140ED103B5D6B0E1AB36A0B1D4CBF91F4169A7D9AFD33DE1797C81
-9CE9D164F82D8FE0A418F6C507BC58553625BAE9DBE8BC9C32EBCE696D794999
-0CF08A51E382D9D61BA9A775E65AAF66530FE0EC1AC59169B9BCB4639D7BA735
-3F2EC8F2717E3FE8D5DE9FF5455B965D020917253C4D2547F2181C4D654D212F
-3FC05C4228A594B7210983D1CFD275B1FC3ED531ABF2ED9C2D7DEA0A76803647
-F39332BEF79D7E9BC27B37DB13A0FB28589853079C450D5CA4DF04DB318C960D
-99AC8299307D088A4FE960B7A9825996C0DAE4D079B7432BE00BE3F7464A964C
-5C3C3CAA002B275224F74A1D321C88B5B5A1C75E4BF4D6CFA08A5757A9170235
-D6FC628111A061B5BE909D9DFA94D2C9AAF14485C29C8E989E4AC62BFACA48C6
-1446A1815C66E27532A8C4739EA1B66CF6C2B1958EA6A4D5050437EC38EF0611
-8029D9239ED52DD578381676619C50EA37B607B850897BD128127EEB1E3D309A
-C639B8EE8EE137E869CF4A7ABD7A95C91A92843F10695BF222727E1468E3C441
-8EA028EF7DB486CF36F39B3FF362C8B1EC317F3308593E9161D3344B0EA7FCC0
-D2F9DE79BF85D1FD4E99C08C739F6912D31D564D6CDD5259CD1C4F8A6CD880FA
-61B17D640C53D0FDA25243FE24145E591D5AE252F5FFA4D915F7D5A276F24734
-C1871202059121ED1925B364F6CB73BC01ED20F15C2DE3B8A57BEC3573521A9B
-983424E10A5912C522B1C3910959709D1CA6059BF5D62CD29F839E8990DB94A0
-D2F2F933E6222C7B7D2AD2CFD06A7BE46A88D0AF8DAACDE46F75D49A34C4F272
-AD93FB97BE8954A737C1703F7A0F838F1D0B3D5087ED11B65E48EC276C768325
-A3BE5EF5D572A248068D9E620412F1B3AE3B7946A213712E31318D888CB42AFB
-1747CE163ED1CA8A3EFE18FD59ADD9911A8D8106104514123440BBBA69E5CEF5
-08B630C56C95328280FD4B222DF082439F36A30FA69D24901879298B98925255
-7CAB87C2A1B917A1382E2A7B4253A9FA3A72A7AD0236C9D75910DB3902C6D3C5
-2D81416C240740255CA5703A3EB0DBF6BBACFCA8A76EE8C5F5F00D71234556F1
-5EA0C1FE6AF7D11E5AE2430405A0031F82BC23C50F689D5521205D6188FE143F
-C120F809C26E1628F32CC760D4DA7A4781DC7EF8508ECF12E141F2D9AC668E8C
-6E6A41E979AE5CC8488B365F78C9CB2C9B0B213AB9A57EDF56E618B189129E95
-DDC72CB8A9DA836D83A01C5909BFCEBDF3C696E6DE0D1144E0BA3DA3FA20006D
-C5C73BFE3DEEC1FA9504F2F09B34C269635F6FB343FFFD7BA1562539EFCFB33B
-7448C2A38564FFE17B1D9CA7048901FFD113163499A42776AE0A30947AC65D75
-4735A13414A2A533A0F1575CCB273C435E78398D74A731E940B750CD4F90FC9E
-E03A7A20C25141BDC34A5D729647939D4D90D583CBAD8DDD432446BF28D60362
-958F81E6A99F0CB2DBAE71D6C17BEF29ECD901AC4344F3BA01E631467A9938D0
-A1188EBA5C2F40FD98466EBFEAF7D4BD6E7FCB269B0992FFC5BE3AA4F1FF7AE1
-6A5CC0D5D4E1DD0EC2F1B9B879785048BF5791B06F628482A44159BE758D62E6
-E52911494CF6F0E8D0EB25ED90D0641990FB7A39230B47580A34D29F2A900476
-A515DF6568B93E22C53C98F7C36DE18EA8B4D501C16190A7C4C91EB7BF7BCB60
-74FC91B34B8A6536FABA7E00E0955F5E7A8D382123C7A01D480C8CA3D67B2D74
-10BD37407A3CB7F5304D5B79433FCAF67A27453A29467C231B4C96F0A5244EF8
-66939723C6B14C7B8B12EABAA8B71920FD550DC8B709333C8680EB548DB9734C
-B3759DB19C0AD15F16D3558570A1B2CC7EE67800C4AF664886EFD5198862559D
-7294CA27D656B76DABB77A757DAA94E81AC235978E29AF
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.1: CMSL10 1.0
-%%CreationDate: 1991 Aug 20 16:40:20
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSL10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 49 /one put
-dup 70 /F put
-dup 74 /J put
-dup 83 /S put
-dup 87 /W put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 121 /y put
-readonly def
-/FontBBox{-62 -250 1123 750}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
-08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
-30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
-C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
-BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
-5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
-43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
-374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
-DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
-B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
-63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
-89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
-5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
-C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
-7B6DF50EE617C00966B9A2828882804DB7477F4A8CF5345B7F3568B4F72BCE73
-2E2AA5BC4B4C70E21F3AD9AFC3B8605A00D67EF9ED1F4D13DDAA920D45B43CE0
-0941BF17CF05D2B777C11D4D844AB20C0693D1DDF00B27D9E1AA2D98A4A06CC6
-D342AD8F644F4787B66CA7D861E7CE13FCDA85C1B0C9F94009768EA89838EBA2
-7818F40A3CBAFE9BD3ABDEC16E56A061E3D8BDCAA7496A045A55DB3EB2D2712E
-AD9D0B0A01072845B118D703585D7178D2306EC2D431C59708D066FC0631D814
-0166966BB1D20080DB10049D1022989E3BEA3E88B7D448A6E11CCC2EF181C85E
-07BC7C52DCF06C10CDFD186FE1571EBD33A7320232BC930E1C24E2474128885D
-9119E6EBBAF80BD6015FEE94A5013A074425D65740F1C9B139AFDBCF7AB843E8
-41F9A080CC231064EC885A5252649C7E9FD78E314D50C4DD9A43BE0CA22E1950
-2221EFFAEC3B0D83B1BB3E35F871077622C8B7B2CFAD7DAE3BFF0E3814836083
-8FD3C852AAC0B0728EF54E5F9967C494636B5DC17C6D539B1E72D248F3064B26
-8386B3844794F26DEF6853DCA972E15324CB1D2119D7011C1AF4C3D7B6591EA7
-80883658E0A6807C052F42B61638F650C15D427C253BCBE8F3830B4617014488
-15700EE0439C5CDA4F510DF3465E1AAE17887771B35439B699B3A7A9EEE6CA14
-D02EB76AB25B5B7381415BF4A2E730E0A80C4F72E8D7007D5113FCFC7A9F445B
-01CCBC45E99F86239D840FCD3D588E3E128F6F613618B50BCBF768FBD373DCED
-42125A459DB775A40A7F76E39B0AFC77927EFE9F159E3D1CFD11E41CFF83F737
-28267F4A3128934429DC0309DE53618F51AFB0FD58C2D978C193F1EA19D16B47
-F56AD6643D37F7DA9C396E3C8029F98E65F6A6873537A0B57A852D1F3EEC36FD
-2E3952266E6325BE4196686CA4B7EA75F4A9DB06BC97AD99F948CBAB2EA169DA
-D079DF5C2F300D86CECC35AACBB7B49C1057A70E61886623FB98E25BB3A92320
-F2D77F8A3DDFA2D6FA3D598741DB8DC28367703373BFCBAE3C3009E1D6D39B2C
-C6C094A761C61D7F4723BEEC4F0C9458A528FDFDC344C23F95CC1E26D0309F2B
-D1A2AFFC9B952B3EFDF90E9D645A4B45D63103A8E8D88EE21218D63AD5AE2BDB
-A46653268D12A154DB51C7A58FA4B93E7A5937D50BF187845CE96B248DFB19C5
-99D55346984DA6173D893E5DAF138E16952C2FFA39549E7BBFE927AA995E6A27
-42EF88CD074D779B05670F9171967727DA9CD41ECF5936C45EE71167C9DCF17C
-4C40F46C8234AD63CD79B485CBF4DABB79AEBDEFDFD745FC580B2AC65682965B
-250591B44B95B2FCACB8435258EA75E395B74912F4E5A811016277FEDDAD9C60
-0E3F69F532024C9D1B85C67671A29E46CD6BB7CEED4536C17C583B8A2208CBB7
-C8DF9587DF51921AF0F31360B3391E6D316C40D3B92BE722404AFC3BC2F0D75F
-149637A5DA2585020DC6790E0F415639FC789B5AF7B17ABBF2B9EBC517576FCB
-7E16C10DE1577BD4FFBE1C5654EDBE7BDD6FF6D18348C21393981C1C1E3B4C60
-FD0C2F99719E87138CAC9994E346591E3879BAB9954AABF8B1171FE88B4B461B
-7B3B9594AA33DD598FC1881635FF90CB605951FB20B6726872D82777B37B739B
-9A372D9162E4DB72EBFF4E7D691F24A9751028317AA20DA5B7F463D79725D596
-D3A6203DF5D51D96A82BDF2C62EF925F45B3AEAF135408AD0562972EF01DC686
-8BDE1BE3072E5D717FE9F4623469BA557C33866765D4563FACBA00E615AC0750
-45321E8535851BD89796FAAF929CED94E57AE67F7A8A1163613EE205F6D8005E
-5F7C5D4F2CC25AD3776855F84D827F96FE80103EAEE8B740FED39149FB8162FA
-0F9E76E3213327E7F24CB055FA327C4827A2252375FEBE6A501C45AB528DC658
-6ABE430E25A972A5DEF700730334CB58E54C983DE5A56E41B29B76BD3E2AD1A6
-6C10520A7C651DE43A525E7535E4F4E6A81FCEF5A4DAD2F2541CC26432AD8713
-C09B16FC4A305E44A1DD538803D5936AFAE28BF5870A7585BF40EB36E24A3650
-B464E673FAA258DC6F41BC844EA90EBF80C39B7FF7DB328A394EEFB37E12F011
-BA2A8DBADC26A19B7B818CFAA834F479A182F0AE16F1898D0511A4076B8DE1D1
-3E9BB210FF930779431C100768DC92CB2B981F46387BB7B6B6F9C9CE775CEB9E
-E51A8AEC07B799D58748E7C64A1C030ECDDC4C074B4E1B4AA4ADCF24D8F785AD
-D342BDDD1D49A5071B37EC734BC91E06A599F2F96618916DD73C6722FAA39E92
-03F9F078E0A1E5EEC7D85771CC85D38C0A5D835B3D10C2A57A14D1847F6568D8
-1E0B6C2C34A29ABD213DBA1EFFCC2C0EBF82CE289E5AF8CC1D12325EE22DF17B
-F9F85333A859D69313035A7372EBA717C94442D84E76C517C856AFCAD46B7B86
-5991E71EA0193629440F31D731B0AC9BF1946002872CD75A681080C8A3F9722E
-17840788EB6953C8CC6C8C07079EDCBA9CF1A490E5F21C1F97D73CDFA69A85FF
-624C979CD37CB39388CCDDCC4A9AF90A733A41B4A2AA19B7B460369447F77B95
-80F977981D0AF2FDED3882D2EBD87B4E61003B8A3EEB50D4AA59063AC2B095F4
-455B0E3B5223C50EBCA6726BD030C1B361816774B62A6544C0772FE4B172CD79
-22EF2842F2454B949F1E136F4ECA260522D4BA3B96C360274CF4A53338D9EF3F
-CDA148123993CD1446739DD3A91D8CBCEC2641B18F517705E5DD104942713E8D
-41D9B51DAD6647925A8DACD925CFB31B481978E25934F126EF8D07E2C0528103
-A52AAFA322F93C1C6C7B762870FD4AE5C66DD3CE7092BE49C16CFC9A6B58C2B5
-127B04C953FB1F1D03FD15D93BEE09B2272A2D173A8B8EC6FDCAA69D0C32BB8C
-67B9D2EEBE97535AC420BCC58E3F9BF055C57B4400A58DFE2D240DBD978D09E0
-B464522DC94EF44A0A443B8BF2D73ECC08DBBB49CA8F984D8FCEA9A40B284281
-09E4C0D7EB58BBC0702386782A8E22C6071B23BBA92489973C01D7D77F1A2A98
-D7E670EB64124AA8C09C2550C944E922427071C453880CB1700647F94B194B15
-EEF7F2981EDCDEF3591CA65BB912FD6EAD258A68893D0277E9B5E718EFCBA5C5
-0ACC45329E6B108BE3352CA15EDF9A6ED489438FE8C4A7D193B8D9B0E1145917
-A27E6ECC57F3926AA6A882AFCD751897C4B22A6AD3C6AEF20C4B05F2162868E5
-FB120E5F8D971952B727015499B534C6E56AB71380F78BD93241DE5DEFBD0633
-39460803E947A3BAD8A1D6E2E884899581ACE84137ABF87A595E8A9850B4ACDC
-F61CD5B284DDD28780C24D2941A1062CD433E715D6F4E238CA8CDBA305C3FE5F
-82D6D34B1B368046F3E894CEBE62FBE58CDA9B9B4E04D0F991307BDACB09966A
-EFF08ABF5A2F4B12399CA62EB3E4CE3BF2E47D6BA9B53C5B6A4A2B55BC54022D
-7ED98B399B40B9A702614098D4FD6584DCF539346DC3EBDC15213545BF4153A8
-D5EE8BBF0FF20D54FD738BAE955E2B6F96DD0343D259532175E1B67C4852D31B
-0638692C1E7B49746064F3708A9E09EEC84E93069B0A0AFAC2D5BFA420072568
-B73587F9D160B1344AD7BC659B35CBC02E1F5FB9E94ABD1598A90FE8A1DF3F0C
-95F942395351C765BAE3E4E993EDA98AD3EEA47F248CAFF122C0EA1802A36F56
-A1E7E92246136BECB2460B01F0BEF6915F1C2FA2B377F1857644D79CAC458E7D
-1CD55747511FAFED8863D8FEC568105FE3320C4C5DA5816AE4310449D412E86E
-63C19EC6EB57A782224DAF30C864101287CDA0FDAC83CB837EA787016B40CAE8
-F81E96E186AF5BBC9FD43AD997D2BDE0DEDBC7BB3D77406946B4A73A15D246D3
-98686A1D69AA38D8EDDEB1A950C8F19999BFFD0AB4BF22C855945A76E91F407E
-93218BCB50B407A7A3BC467D386C5178E8B7783CF67A07B2850655D6B02E82E4
-6F7A5A75FC7C5F4CE07DCB94816627F38531239A0333A6E9B5C52A8FDDA9F4EF
-11C9C069AD5E91FB140BAB9F743CB4AA42DE249B99012E73F01562319A45B4DD
-C0D60AE5E829E948DB38BF14CFD8C4FA83D3C9E28B537F704D204806EE161325
-44E4E73D644820539BD992085508E1E7EC278C78804D52727FD40A4A0AD86B1D
-5CBE493941DCE82BAAE014DCF85D7893103726DB2CF7524808336221A97043B4
-7E08671801BA2DC8032424F362E545275462D1C0212F64E439F3027DEFC8FF7B
-27488C5CB42464AE8A289E759CC1431D669B339EBE31B65043BBB9856FD6414B
-CBAEB80F47FDC1C64931DFFBA0B6C552230115A30CD88234E460DEF77583A467
-A67B2B01F6263930F9DBE5DAC38E2C98C340E896EB4DD6FEBE14A5573DDB6D64
-36FFBC63EBB55728873E2F1B0F065A7475DBBD17DB489C6D0BF8C85F94C8D71D
-CF2F8EE428079980742606C4475F475EAB5899C9E80E072134394638428B4FCF
-A9D136A96DCC1D554F3E178016194E52D2AAB4A743D0928517C2D52DCCB645E8
-F2FE55F48D59F328D36ECFBDB21AE2F549588A165358BEAAA0F8D1D9E74AB145
-554E0E5B18D0A547D7EF59D991C56DBCAA96E5C082D7EF46D1C815EAD659A0C0
-601C579087853D66004BA58A818D65891D455C4CC6AAB94B0589BCD9DCF438C6
-08B177F032DEFB683EE5900084FA33DE563485719D632DD7D0D432660FE871E8
-426545ADBA1140CDEDC5F9801C378C534E25CAB24F3331973DEBF97ACBE84C3D
-B56026B0A3D73CB2874B97E7AFFA512C2EA5DB509602ED15D57FD768AF6FFA60
-CB210D64B02284DBADF03C6C15F7F581FB8368A20F9B30161FE79DE03796D59F
-974CC627E9B7BFEEE51EB74A49350B2630EC51132DCC3FDBC157AB39427A3342
-DCF4B032600077D071B600AEB396534C128082A50FA6EAE7D4A8F0F72B933D99
-6BEC6BD8655502AE0D9B23E6D3C49223855320782CF9C5F6386971E314E68F03
-71F7E44A8702FBFB32C40FFB94DE1B3D41C98C85FAF8F9DCFC7E9C3BE042E298
-4369EEB3222DA615FCED23047A9DAB956ADCA061F4B90B2524392CFB9C3C704B
-D2AE92068543F51D68DFA4EEB17D3EBBA2D7C8BFE8CFF1015AD696067CD0760F
-F889C8B0DCD0830FF2095A220E674F32E3EE8013D5408A28CE3367C3CCB260EC
-07BC07D33B327CD80D4A977F10CA839D5F1E5D969E9BD8F2B70A4DF954132F8B
-9F699F4A5537855D2E9176FB19B8FF90373FDA715505F87BF2E03DB6DA2DD906
-B7B31D43B21106898048238BDD2FDEBCBD6F500CF3F52D00B9E1AF28081C04C2
-D3B2AC5EF946FBD2E217729BB37938F8621E0E29682E50AF217D784ED2380786
-B88D30703444C9ADCC2B8DB6E00B703B4FE2817107805419E7CD15D66DFC2C96
-3B11441C1DCF7CCF4D2E7DF6462D9146C02F9C754A0F6D90426C72CED69DF0D8
-75012645B886745241EBC350EB8499F69D1DDCE861C1492692E7A7ACB548FE87
-ACD4D9A014239ABA8F086B3CD16412CC4E2195E51C6E985EF3DB03A98B74A8B7
-F2440C9DDBDA65BB020C89C6DB704BCBE120178F79B1859491AD6D43CB56EF81
-330D3A8126B91F09F751E6E29A06654C3DE21B68B86D25FB93087997267D4EF3
-D46AB3339481306B932583A55066F3BA8A4BFB5822EBD0AF82FB6040262ED52C
-E0505154B618D164F658D8ED4A949CB989004D2CA045BE1B6C13A67E8EC1B524
-EB432FD100858C7054A519FB470C3A5269FE4C25BC000A326E310E8CE55DE50C
-6D9F5C9754E83FF5B08822A01A0753F316E25AF68E4A875348890485E1616274
-2808EB2E24D75580074E9977B8057E406DDE63D54F3405551FD4A57315BC40D7
-9DACA854A6A568EA69FC252C9D5308B177C91F4DF6C43DF1256F65E67449E1A3
-AFB063720152E69A513209CEF8B9DB92F3116CF3934DC71DD70DC84BC93361B2
-C6D6DC275A84F775E25FC5BDC4F1B039A69BF843D2F1799140852B0BEDD56B76
-0ECD00F47DA42000035ADFFB9627443445AFD17845E4C1F140A66D511626857D
-60E264D0B83AC96B1C48D44E41224911D7F115107647E70E1840B49A3C696860
-736C7CD905129FBE0D3BD82AF2AC51E34C920BB8BBB403B1FF14DFE7324354DF
-B6164FF2706C40A80D1A3861BDB1E8C876704D860484FC5F3B9D10CD7A72618A
-10FF7AAAE8803FF3939D99C1B8DFE383BCDC411847D557D2F5B4E383B94BEDF8
-597C8150D4C0C3330951CB09BD2CA5616E4C75583C9C67FAB14F18269A3A215F
-87D7E4A87158F77BCCB230787D7F31C6763B9C320B450C74E526616AF9E5AFC3
-CDCB8ED572B536118C774BE285EAB3B2F50630ECB34E5E729A25BABE4D4B09E5
-59C11EB1BAC23CD74EF2595FE0C39BCF1934E6E16557CCD789AF2C8D248008E6
-CC693CB89FC05A586B96818F5CD4624C99D5195EB585CFD0AB48D2307FC769F9
-46BD64068A370186510415A37DCE005B3CDC993C5E5D44361A8F6D2BB449C3DD
-2E12F12E417A6D9F933F375A66682E6B68C8D08A793795D8E687B1AF330AD61A
-0179974C61BD9352AB4AAD22B5C3A520B777E81D6D3D0EAE03801BF449332D40
-BC6483013BA052AE034C6E74E0304562C4029052DCCE18A4B4BB962B4252BF03
-A6FA16241D5F47E3D31670B4C034619DD64BE7456C6236796A5BB5C05DC4FB20
-A2E1065F3B98A749240BF97C982679D07F2C74D06BE6F4B1BA3F63EFD82B1CF3
-EE2BAE71542E9E7403AD59ED0158CFC8D7D9B680528D8DE3CC753A4E3B350E03
-A90580D592846C0249C8D0F2D24B8D26085821758425233492DACB8A5074B1BD
-E5D531F2610DD9243BED758B000E9BED44113A2D82BCC31E718F4BE8E9DF494E
-5621BC341B37DC790DD97E254F24F57B668B3D6A2562F3F705C27F6F9B564063
-B1952888D847AA7F5701C649C62CF5B83142471715CBF81C4EF513C4260D5A5B
-980A2B96F36F37F52509252F0C8D87D802018C1DBB3768030848BFE3983B4822
-38FDC2A35163C44F7F55AB556C29EDDAA0146E9E66801B1780E86FD6AEB8FB84
-9D73CF495D800F2C09D99293F222272BD613172446EDAC65D131EE88E08362B2
-9270B016CF74D059EFA44B37497C2D694CEAFCE06AFEA6DB493BCBD4CEFE8F03
-30628DAB9D2C720AD94ACFAFF6692DFE5C75D9DA1F09E62ABB647798D68634BD
-AA3EF0208EC3E1F42BB7A7F77617DB452CD7DA99BDF6742742AD6A4FBFDCCB03
-2AADC281CC6493738A45040A20EE8FC7DABA5612A12A4A1C14A2E85A58A8FCE1
-AAC9814F69507D49E458A18321A0A4BB97B38BA3B5A7C2C07240019BF98D2BF2
-1A2DCA37EAFD96E69BCD773163729172E52B33B7E27A56F57BBCB25298FDF85F
-8BE3E9286469CCD28F0875E9550E95968BB46D9546D4C0B3F35BF776AEC9CFB7
-818FD280955293EB672A44083D3D724A2D1445F3E5BBBD6811F38744185928D3
-64BD78F9B5943F9FEF1E83E0E98056433263B4A1085018C332DFE5082443AEED
-318D97E14B48860EF380DA1AD90D4885D3E9D6B10E8686A2A5B3D6EEE8EA26E3
-89A1CD93C51E4C5A26943D86664551E3926B06176905EF00597B71B0D2816313
-63702C0C0CBCF117CAC0A0667D8399ABFAA0E1F6A531FF8A2BC43CAB660A93F5
-8F26550D92F9203E404EE4F45F2B472F5ED9C2A8E18A89383330A3E2EE42FA4F
-B3532CCA28910FFC74E3ABB69CDE0E1B5D2AC466BC52883AE14C88C780841BD8
-4F71BD470B26D17E6E8FD96252BA1FA4DF9516C762A28D659A877F79E23E5D75
-B1DC530905C9927BEDA9AA5289A167EF6BB4CD26FE2985DA4A940015FB15C87F
-230DC5A1B25F40FFD7F4336F9421106873FA7ABEDA96AD82C9E37C9BC7CD3FCE
-2999994F1F213AA69CFFB74CEC9E6A94AC0D579910C7C015CA8DA8F37B34D2CD
-126CDF54B815052E46AA3DFE319167CDDDCF12EF6E71CD663E8B0D782CCE5851
-B82120513461C30820777ECF1C721B5C0884CE48E4E9CA79445FD6FF125ED099
-82B6E10EEF47A8025DD6CFD0CCA8B06BA591984F99AA06F5202127FF29D47F85
-91FAA2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.1: CMTT9 1.0
-%%CreationDate: 1991 Aug 20 16:46:24
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT9 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 51 /three put
-dup 55 /seven put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 89 /Y put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 125 /braceright put
-readonly def
-/FontBBox{-6 -233 542 698}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E
-2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279
-650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35
-F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A
-D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E
-F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1
-4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A
-438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD
-BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B
-A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641
-AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74
-D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB
-CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A
-082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980
-9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0
-4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A
-9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F
-B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D
-42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED
-F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328
-A2C69F817061D6C60B121EEE844CA5008F23DF098C1DEEB7C8525A11FBEA53F6
-98A9BCA2389071966670E9607563B3CE7E25AD67D95D4927F6AD572015F4A59C
-8C618A3E7BA431403BC01F92F345DEF735A30ACA3B55B48B04258A2E82F69643
-BB43967E4537DEB3745B4E276D6AAF0ECB79052F87DF71B2CFC2B8280DC2A205
-30287B658793532220F980F87CFF6CCB40AB0439297ED795BE38C34B19D438B3
-AF779CA633952D6F984C7A5885A627D4578BEA33A4AAB8AD0AA20B3F497E103B
-64F8A3DF99B120CE03CEFD4F53945CD81BA0711100E332DECD15712080E13635
-5EF2AB4C6BC0EF4FAA879390F71E7CABAB22BB3434E03CC272E68638810E4213
-3E5F79D2202097D3597C7DEA0801441AD4ACD6737D8931C161CE677EC7B62D8D
-EFCBD4196B31E622FD652C9AF3219E3695D95C6EA2825456272BE77F58E6C550
-47284D40234BAACB41CAC991BAC730396AAFB42342230DD6CBE47EAD192D0E9A
-0891BF77AF840FFEA18F938E8B8C8304AA7EAB76116C1BAB98577E86F516EED6
-5CB3E3C923DDA90A0F64B612F61289DDB52BCAF6AF0C29EF0CBC9AFF87414078
-588FC1E8CB1A7C515CE7A2C5BC7A192E0A8E0F3162292FED4E663CEA07551CEF
-82487875AE849504645DA2C2A962DBF82374D85C1BC9F2CC46F501A29A58853F
-2FAD42C68AAC9E9EE68C65A47461A6466884E059670099A8CBDB54ACF54D60BA
-BB11B4D4578CD7574EF90B0C03FCC72691A04D73AAA2302E853A93654DBBA8EE
-BD619E82C7D83E77E0C932C2E7062371D8F2DF1F6DFA9E2636C863B83B4F2CC2
-090BCC3925B4682C9C8342708EE6F1E4958ED3F2D926CC2EC3CDE8AEE0BE7578
-D3A9CA50ED1E981D426C1145732D124451183C2E9B3BE6D92337A8DAB42EA95D
-D66F559D7500BD83F1534CBBE228D59CE583260524958EEDDA92C518A08A2F8D
-D3A6C9A663F6F178300A3D1E106CA4368ECA4DC3F1654CAD459D492C612B89E7
-A73B0D580DBC2D8C2F1C4DE9466154B6AFA3D2FD6080FA409B8D57BC805B6F4A
-5BCB9F7117A10A9A62627E8785F82B66A9CC2A6420F57A2A84EA372161B0DE45
-2547D2E2B6100AB054681C488F421FEF1966E14072D65571FE2E17A2DA53F97F
-2AB479094E10827D09E6D93799B071F2358317B7AEABF10A6F32FAE751970043
-AC4EB6EADB7AA211F02803938B8C668250060C961039CC61337CA7B18A5CBC6F
-B0D73CAD8214D70B51BFE9A6F5AA2134F3EA364A5849998963EACA4060437EAB
-B7B1B0282F689C220608E90FE9A48E94EFA1EC325E519E19F1EBDB2301204629
-BE170567DC4ACEBD3C9E77F58A18C9E7674E74DF14C06C9B79F214B1D9D68FB6
-7B00556467E1ACDD873CF9C69B9E9DE4CB6C38385545D03463EF413652DDD8FA
-546186B39AFC9CABF1C03988AF99E40DB41D78DAF0154816B06337C0F548008B
-A296B2C72FEC96D90537F123E349FC71F5FC3211ABF4204A392974F472AB1B75
-BE473257575CEE78B5954B201B07F84F49E3CBEAE74F2344356D1D18C8DCDD50
-3160341232C5C64F6EFE6DEF4366A077DD56419BC5E5AAA46204583282DCAC06
-EFB9ED502FC0630248476D442E4EBCA78A6528D56251E82D1435B537143F5CBF
-9B4D50C8FD5DD48C3404770471A4EC244EA3E1A29712FBBFFE73582AF4B91263
-EA829C0AB264AD1B13419F571DCB6E8FB68F643C4621A68B9EB46AC0A203CF7A
-4DFA6439EB79289099D6150138A259D69A88298F40EC9DE6E0C6D0166CCAB106
-22042C8717E6699746A4E4500BCAD2CFD962BE58BA90D2F3C324899D795835BF
-517AD51325C84354C799ACD9312FD1A68BF321DD1C570A64DA73F09D93F06B14
-3C71FED756E583D7E62651871532A9A9DA08BCCB45AC9DCEC095060017D7BC0B
-F366446AAA9C5BCB400FED24E9029FA9C302A2FD1BE1F1623E0542598D631406
-72AD661D5543C8E155BE180EEF97927F7D297C7891F116FEA273864B4F34D015
-A46D3D4C1B57C3F0147585C25F59AEBA6566D2A1FADC2A2BD501E7049F4B948E
-8C48A046F894F26E401A2947793C431FF80D5FD39411E2FFDCD1CF240446F62D
-E1147CED8F14D7C228EA87C84DFD1091580368000A4C7D72C522D7E8F00F5D8E
-4228568FE0D0B5022E156E78C2FF712D6328AF0749ACBF204AB2733999017D4B
-DD3FA855AD1E814FD22D2000BD82A09DF349A6B04FEC243FC16292CD82A73075
-F14E7C349A61E2902334C21DC5E6BD1F43892A0E293C8D23EC732BF0B437ECF9
-284873394803C28728D538A3EAF598E877A3B6D45DFF61AB8A510627239775AD
-9EB716DC52FBBC941B624BB6A811D1F1E0499032AD1EE979D81F933D83C4F01F
-239F7A51191E747A776262260C606426DB43F5FFDF7413A74C4838D370AC3123
-B888D7557335D205AFB531F4A731E708DA4AD6C6DEC091F24A3AF33F1F8AA506
-3C2E1CE8C7A5893244C69DFA95DA70AC6415AB9D8650DA4A6E9C5AA347159DB2
-ED57F24C7EC875166C12BB7C9E0573F6FBB499CD454D596424E3EABB80C39B40
-1EC7CEE366DA4BE6EE8CB8B36BCA1B7861C9B6E2721163E81BC2A6D87D5092F8
-069D41A0C2036751BBE07745D745836461688E7DB9623D58E01D0E9FDEA88130
-8E7352684D89AFE8DD9E011BAA66598D777155CA7B465614E253B13B63204093
-1F855288C0B98B0D3190ADDBF5E87204455F44556A8CA5540126ACA44639017D
-4AB89665FD51F5B29709B987C7C6F7099FF107BFE7B164D2E875A85CBA8A088F
-D30E56836EDCB684DC803CFB800724B0B5556D2A7C018552BF7AF3056DF735E8
-870FF3658D757FD8F2177FF787436C6198026CFC32E9BC779C0FC5DD1E45F354
-CDDDF4CDDCC822B75CFF4F0F085E9908AB9D645CE8172B1ED969E2B58568BD2F
-BF2263CA6E814BBB0EEF1AD56BA8B3338A707E45F1F63B88BD13048A550852B6
-67DDFCA53B34EC224AD5D318B7DEB4B716B4D7E839865495B9F02C622DE9E7B3
-3A5122936AC6CD85E5E820813B96D5991EB331CCC07ABB27F0610D5B8D93C6A9
-C212FC47EE042D091EB967A16C3B856CE98A6D77925CD90F7CE00E0EF6EFBC07
-092DF61D15356B1086F69016194CB500FC4E78C68026EB5690AC583A39F3BB78
-89CE6AE85B7399531281814566F305A6CC7EE4C23351547970DA591552E55D44
-667746AB7B69A7B9F72EF84CA05C8B55BA2F2813B8A7168C12058056D1C004BB
-3C590491F07752F21889BA6A304C0ACE9E018C533BEFB136A14470D42F2B1702
-CA899800A832B7D169FEC902AD96AC59010F4E760FC708DFC25CA2CDCB18FD1D
-B1CAB76A54B8010A7DBDF8C8259E5692714C9F6865C7E1DCC3DD36D5AFCB3308
-2BC00FFC4AF0FC58390323A7CB5471FFDCE3D0F0DA0C90532768EC4E75B398F1
-1A6A3598CCD0CA764A52DAA7B904089BDFFDE26FCA6C8D79839B59E389BEEEE8
-A316542A1E34FB625D02D53D5CB45C85E992779105FDAAB72336D9A090290AB9
-E1A1CBF308D6F9B4E809A9C9AC6C884A07DF64213C8D11D1F68336E05C90B63B
-F19A613B7325C078816896D24BA0AD823BEF5DAEBCF36A0D21526D997ADAC3CF
-2AAAFEC6434BA32FC483E3751061CDF66956B246314FEF9007610A8D3C5FBB15
-CB195E5DA0BE543ED914D7D8B3A7F91302E27E1D7FD20AFEA563A89BBAE5F5F6
-8446592AAC5798AD1E12A6645A376D1E2A4A3D7A642A21941E08D962C5A1C65B
-A7EEA14033EF11C2141D334F3FB706B8DD973DF78CA023C68956EC70311D16C7
-232918F103B72CBBD6AFA52B332C01A2D70CD4E8115E59756C628A3F90AA2183
-53B362FF63AE235B2B3735FF54CC0AE1B6F9228A63A7D26D37DF6AE0198E67ED
-F582A3D86791B83838D5B6BA78D0EAD90E000DA0091B5E3B0847B7EDDBE024CA
-9B59283BE3A71B3E598CEA4E663024E6C6B91D8D14090D3DA7F9B11C447E92B6
-E88DE37D38A3DC0D054CD58703A849C8981C9446B638FA6077193975B7763E40
-E01E9F64EF040D5215309DEA22B76F428C9DABB4CB0F3C6B0D84759EF1C9AF43
-5388D9E06EDF2034BF3C044CFF55AA4C24C260C6F14905E664BED7BFBD608231
-3163CF949CD4DA8E5804ABB3932310853D79B245CF21023631DA0031F22D0DD9
-B0B888768BA4A388D4E1B7CA211D905E495A5253369C38E8BD55CC440A660856
-49792716D6B133B7DF6C2D0145FD4D0C32E82B36F8D3C4083B13AF8D536C572E
-C44B0A22EFB895B27FEDA2B4F8849722822E6ACCD47D4E7052C61C3AACFA0F4A
-C469446809295E4569C3C8B3E6FD162DDD09E86B78B6F516592497D0EE7D5182
-B50DDC3C8DB358C713956721D2EC1490D535B0A6D0C2511916B34FB6757D4943
-21918A1567DFAE0CF38C8A78E6F0F593A4E0FBE058C3FE7F9ECFAF3AD5FE707C
-9EB61C58EF5224EBBCE0C59C21B8E81A974A45FFC728F139A6598C1DB4B65753
-3E30B21EE83722B6590D3EB07BB0EC5576B078818F9ABF14D4288F78512986AA
-601C898AE24B1F9A234933997A7419C08158F741AB22F5E5EBF60D92ACD46500
-32DE53B95EE857F07CBCCCFA0D6AC16C55084EC3FEE4AE2339582E7BD09C1BAA
-C1037000E1600991E00B56DA3BCAC72B53A949938BAC1FDE9E49B812446FA936
-A1D0A1DFDDFA38D8B917074C93B45F98B57ED664ED8A26ED68CDDB0013FCD1CD
-4A0A7B83C456697039312C8F628BCF268D8FA47100B650128CB50265003F9BBD
-743270196DBAEB0A068B47EED0DFA76446DFE8D79AD99B48681E0A93090F7E0E
-765F44158F9FE895AA5729E9001F851A8CAC45DE0A1F4BD02035121A8A8AE1F7
-B26A243B8BECE53A8318DBCEEC458D93167547B3C48A62D3E72CFB61D7973716
-66F9C238083923289AE863658DCFF1AC7C8E0B63CE038FDBF4E7C3BAA1F04081
-9BA3F81A5874BADBA6D95A9CC8D48DF125BBF01AB7DFC8C829E3B24A7F661FCF
-ADD7D786307CEFA10998080D09C0A97DDA55F33E1DB26776993A3E8FDC11EF81
-47CBE6265BC9EA0769DEE0C82D5B49DADC978B39FFB09AE09DCDD22755B522F5
-BA877717D5EF3031ED6AEC7AA1EA9F1A74E76EF146C51351531E7934C487B5AE
-34A5DC732789CBB19D7D72BEAAF5C4C8270CF02337F8FE0751CC6D25BD5E3C48
-C4C89BDDBEB07E54113AFAD5F4FB7C4F33F84AD8DB5E34D9D64D6536171F6871
-6A67F70874F1485890CAC656C84BC92806D4903C0EC3F29108A936975BA12862
-73ABE73AC5ACEB5EBDF220B509843D658E0043E742BE67312A85039F4AE48157
-93961B153AAFD8CFC1C346A9A4F866CCD3751222388D9823C1B5A9ACDA1F2ADE
-84432734A85FCA3B28AA8F71B0E20FB9ED6BB4CE6D349207E3429A1606CD0A1F
-506AD97577E9FE13871792DE0EE1BB1EE78965442D47383B9079B9310D3C4C34
-9B98F72423D9B3B73A03DB56D2773C3C8689B27A03A1EB6182D39D0637969499
-0ED96CBC49ED0E96FF0176C092DF3C16169AFC5C41D34BD1739FA95D86252CF6
-024AB0EDA56F0CED192FF0CD3C67E65CAAA788C09D89760CAA7788B0B585F516
-437BFF42CB34A1758011A2D26764E510A6014758876D3F9F1E76759C79C8CED3
-9279F0A1B303C44B0350E66607397AD2D7D4057C1AABE8AF47604C867E433565
-1CE2B85A1924F88EF88A995063BBB236A8E6CC61F30E86AA35FC5D0B1EAC4FD8
-364554C9A449FAAE56681D42EC4C1207B4AC56B2C56DAAB9926A49762E189F58
-79192CD73C69DB8959692643BBA6BE6C6032820D1DF3357518C15F25D92A1A9B
-BE6EA98834774FD03067F98A43AC4440767EC905D6EF2AB7F06022755AD03E09
-66F03C5262FCA0B42EC237A238D337A27ADAC00CC7CB3BB364C56162A1355D63
-11B316633F1C77B4BBA07B05C3CB4ECE5F56B66F847AF2343F42E339488557EC
-A637DBBB753E1E7F8A1A26EDCA49A9801A560FB0CD23DE0C5EAAEE1DCA7CA1A6
-CFD18FE33008E5EB9D8A1EAF605F5F0C988830FDB51618D9DC751D2D3F681F1A
-4247942FE023B11B8295815926BCD8972D9A14AB832D01BCE0E9CD7B3F39EAF7
-A5D8B818D4EDF1D00DD24EF93E41FC2C9935B0151073AFF30453C9453B488D2E
-3164CEA20F8E53E7558FBAC9192F157BFF52055C1FD5572D0201B68290E05F1F
-4C12E7EF571D8B6834A916B49191D05F679830BA557F0BE75B0B81F6017DDECB
-FB9FD3668124D666EACE0D92982BF3FE60767BF43DD1BBB9DA49BF3033F0E163
-292ADF1A9C2E6984500AF8162001FA2A182818AFD57804CBF79B1354A6CD22B9
-9402CF3B52D49D52061B342DE3E053F7E87E789AAE0C6A321510793CACB37FE6
-F36D0AFB61BBD354F9FA51EB6E8A3EB87437474CB7C9A2D399A91D99C1D5C622
-4D1C461E309A6DBB534B34C29BAE2166E746C0B267E6CEE71EC9569C64C0B26A
-798C8B634DF3F7CFEB08050A0DD910F7DC3B978075EB23AFB72B46D4AAB8DC97
-9F23898AFDFAEFC96AFA47BADE9AAAA580FB90625A7B0F7C7BC8472CE99767C3
-F80FB3207453742B63B36D063A6CFEA520F744AAFA016FDACB11CE7269DA07DB
-7EAFD778CE065717512035C3ACC049DDE075E8724343C7720C217ABFDE9FAE77
-2395AFEC6A786BB0008015C77E2A124629103FEEF89B962D16F5A9EAA8A74D35
-CEF76CFB6FDA7F8D5A22F2D81308E90E3A51A83D18145057F70CDB171BD5DB35
-89E5AA27C97EB7C61F21753C1E21C9503660B3A1393EE734206E29F161694578
-292939A9967C6C57F9D1B406E890AAA3A3FA0E51D62D4CFDC42C6EB30B979F9D
-2700AA0AB9F5BD032439DA1D7E80283ABAF1621DA6744057E5B275424B1AEEEF
-7CD90A688A9FBFDF25F675B8989735FBF5A71878EF508701BAF0BDCB475FE2F7
-DC4E83B652C7472107AE84B826970DAD15889FB2FEC8C84FC4E382E5C6422EAF
-5F9033A69B2D7CE47559FC0DF1C967C28A140F7C135F21E26966EE00FA23B3B4
-BC5BBE5A48DE5BE5115B7B35D5347A46287C9CABB769F7232D42BC3991DE8159
-886B89B6C193177D72850DEC1271CB4C6E4B66C8C7A238FEF6D519F2CB656B8D
-3EFAD3ABC2712B4D791AA8EB182BE80D7C314EFEB596081FB473291A2836F192
-69117152F0DF4D152B97105B538260A2E8F031D63032C79880072164646A00D4
-3C4B11114B106D398F4E1118008688E28182796D63B190B9702503153B706463
-9AEE5BE245B371F1A8AE5C089DB1B219185B62460B700EC1D9E8ECED525E256B
-5C340E5DC616DA271E4558A411B669C05BE555BD209E89447382EC75EF809E71
-2149DF776FCD686603D55208D81583CFE66FC21B212030029ADAD999F4A2AF5B
-A69A93A0D305362BBCFB3607E06643B810B5361F7257220EEC801EE13BF568E9
-B1E43D1AF42B3AAFC1980329A1B76782D1FD1DA499510749C69E1DAE204C07FF
-B6033B4217C56C3DC59C56E3A986571200344FD8A7BF7AA5921D584E34A0134F
-BB3430FDE1647981B07EEBC6D6E3C0FE31BFCAE4F9D79922BD7FDAD1C947D360
-54AB08E7A3DFFF8EE646EA0C650ED778C601A42C99B1CA4820DB8E8129C6A291
-794FBC008E51A096033D21DA7E2C3BA027005CD698B910549982196E3927793F
-AC1B48087C7B71DFDE6B3BEE69F4BA8B85BBCF4040BC6D390BB0C67F753CAFB8
-F9D5406FD5C6CC0B239FFAD514AE5348C3E91E864CF944A2152BC183016ABD86
-899C2854E79E37423A2A6B82D3977CE545BE8138FC338843C8E3CE90D4488A30
-61D64C3852E5B0E614C290940CB533EED07638D301D295A5A3D0A2ADC1766588
-050722D7C56875941788C5FA73DF6C15AFC82EDDF1BD7D5F74D4C8B3B2A9C26D
-DFAF46E7D80AA4B75428923E8F8A0C7D76FDEBEB8B18B977169BE83F210177F1
-C48FCB3C57B166AE4881FC60D8BBFADBDBA79179E0201DA04ACCCBCF835B90D0
-49AF9BC25A34488811A0D8AC5C4CD30FC7405A7CB311980A8901DC335C100A20
-6D2F85C3F4B850E82B595D67333A4E19EBA8F8E3F7FC5AF6ABA6BE2ACE252489
-5A635F6A09080E68CEC7CE86290A1EE1917942F8215A6CFB9F325F44D8502B39
-9FE6C58494ECD32E3E24107D58F1F192D1EF6388C385550034FBF5F71CEE3508
-5E58E2FF3DF78F3D6C2DC680B4B635C0AF556CB21EE29FDB8837F4ED58F704FC
-210EF15DD2C7FBFA57AF9CDD22CCF4DBB14AF0240F8B5BA407684556910D7A88
-8DB22639BDF0AE9099FC1DDDD01E887F5DD40456412EEB4DC8B92EC01C0DF4C5
-AFA824FB2B49E5D266776007C54630D725885DB2580A0E4A2EBAB48A83F50FAC
-9AE8D4313D416192488B53DB7D1FC758418E6393B0A31B2EDA0B47FE639074AC
-6B5A103DD65912A9F3661F7C4B1C961831D4CBE95E56281C8F6B4802E0CFA812
-5E89E8A4E801C83B1E1E671C8C29148D9E66CC733C2FA909F01D14B22B9DE54D
-8D946D30B5BDA3D9D54BAC8DC0407B22E04844A426C3C4F850C6AC08969EAF88
-D57B7DFD591162A2CC3B39D3DE42F59FE1075B22C354A32CF5C18344CDB5DACC
-8F34E10AED2166FFFA93413DA79837BBC312D523048AAB5AFF710EC013187F08
-16BB6B81C989215AACEEE12E8B275ADDE698B525F558C7581E953834A190072D
-7F5AE1FBE21BAB680B00435BD48E127E66F0B1293E6AB6A739D313A3AACEDBAC
-F9A948D8806581BE8D786EF8092FFCB0F045E6B389621A779649225A9883984D
-6549CD8DF7CA2B9390BD02BA122BB88CC8E774D57003F5DB20C813B7C7682C21
-0B3A9AF46AB39C065F55CF8F5E82125BDF90AC23C65940DEF36C59140468D341
-86EC9135929C375B3A6669DBF35BBCA30FF06874C50F40F1BF6A9686AA3442D2
-60DE0B7E757D25F0C81EDE5E4CF20ADC257029D2A2973769326EBF823B814691
-4450BC52F93E8925F11580A6EBB7BB09C42DB8463D7A6B1AAC66A476F42615BA
-1B6F0161CED79859435C7B685F9832E790BE2BE87C4107ABA3B09A31BA69C796
-73E0E4850865AA0D6901E8F097C50CADDDFCFDA9B846D27E82489A8385517629
-3AC365917DADC0FBEBF882651C037EE822689BC241C382DF7E899ECB140217D0
-B17F794227DFFC0ADCCB5B21CCF23218462708F69649A48C08D3E0523F0D2695
-67185082444282FD6251BFDA4D9766546CA3735AC552E7A201AE5DC2DECBECDA
-039DDAEC1F6382A1C980FD579B89774357452859830FD9F1EADD31B8EA1972D9
-1A8563D85606421AD645F6AD1DA776420868FF06007E131C9965EF4CB6301902
-B3AA06AF96A0427B230C9A8239B48A3C9E67D5834B44B369BB7BA55F681D52B2
-B77532C1CFD4B5FD02569A0815EAEB358129790687BBB7883A11D88C4FCDAF2D
-8CE6F48D18E81E880FDF21F48874CBEFAD71B7F75F6E3608EE10B91FB2DA2885
-C58712ED9A73B2316E0B031C69C3E13E6DF414C7923DDB181130E648A72BBBE0
-AD2F8284C5F32A0DEFF238AE3F178717296120E0CBF85F17496ED4BEA82521C5
-7201087E18DB95380D29B7D41C71AAFAED7DC7F386A059F37CFC1C5E036A6DAA
-EEBA2AC35D8CB5513341BBA2F66A3A8C2DB5254D5865D2A09C28EB8866BCF77A
-C6C642792C7D5B8B98494B1AB50DC7B7B73F84C0D9E689B320EB3F78802CDBF8
-1932BFC97189065795665BA7D9C0B996205BBC33E7E953A942D436A848D60C31
-AA3EC00C9259A35D46D3AD72B12BA09FA5147FAAB88BF98AC03BECC111C92338
-E5C32B051A2338E3F7124B2C2331117F0E3BD538213ADA1E2BF9C67501846F4D
-CE12524A237A92475B151FDAF3FEF6EF44AF8D73DA89E4BF2F26D01497DCFD44
-28452968DA88F5EF37FF82DDE9AA2D26572702C95E300D6BCF8EE4F6FEE550AD
-2069E15A8B02336C72F3DB247E756700A873C15B22D0C678FC4ABB5FBC0E7BC7
-6AEA3DEDFC6A4D67BE32F32579C000CFC858419E393A3617F495806381D9C473
-459AB0512A4765B29D7339E1068554BE5514A31C65E9CBF6B137C7B6E6230ED4
-2AD4292E54237020C0D59FEA10AE705CB0D66F8C7162C10D2BEDA905C239B633
-48B63918C848BF07B5060B93CEF98638592CA1A1F378907CB3C119C8FA9F0AEF
-B232A578E97B1D219FC4A4E6B468EE9AC7302F315E8FDB75AA0DC7C5F4AF8D02
-063CB56BAA9081D337161644EFA77AADEE5B5FD0A9E23D1E6B2C993CB5D9861F
-F933130EC98C4997EACB99BB0651C0A62D00E6FE21FEA867D7BDC218A83B7F0C
-60707F0864651897C9A94777853989524E0F879DDBD37E0E16DA4193541C2A0E
-E848337BEE596177A695FCCDCCDA2815DC916C75ED593492D47941C0066F94CA
-D255773CE31976784AC8D96C42A8531B496BFFA7C004EEBEE2EEEDCE7C0D12E6
-3460E1A6A3A29C3704FDD436E4BFE9B392F4D039C5E82876196BC1C6EAB58B94
-6621BC406ACE07DC8EA0B966A7BB1152CC69C0B2C4201A3108D025229F444F04
-64D60965AC96C7BA6CAD1E384D21181D9F7C6BFE82AB2178BAB8C57146696F4A
-A314E37BD9C2D30328068FDA5196284BAE10588E1762FF179714AEA6E23B983F
-8D4AEC80B4244CAF00C08D799D71BB86971D21F0AE08C5D6B1547B49B07B97B3
-6329398A20DBBCD1631DEA7F1655C8772AF48E255EF1307878D648EDFDA3BDED
-A449846BD016F844E54CC83A6AF4C0351CCCAE7866A5605A75F8BC4863EEAF85
-8C4D4F2EBC3E68EECDF01D149F94EA59D6DE1E23457700099320B9CADAA2F25C
-1EE36EF641839E1C66BDDFA078F6C0E57531DE99D5B8FF93EFCD27BAB14821EC
-144398E095677BDCE884D08B77A43C3CB84898C2F47D2BAA047C39F747A9FB2F
-C2256A3D69A96E5556BB42CAB20A3479A4BDC264744C1D21D09388672F2124FC
-5ED76FCD3DB8CE9E83128DDAF38EA09C5F5BE534B7E8C763818967D6774AEFFA
-943F41D49E165FC6312D9A2919868F18FBDF421754807168F3D0B46D6FFD94B8
-EA4AA76745BB42783BC3D6E180E249BA2F49FA9EA93C7C803E6B60957FCE0462
-F37220D1F02C0609FC8F86B0BFCB36AB362D65FDC9E4006972F8827DDF0B74B0
-6D75CFBAFEEE0666A3E635D6BF6B82ECD59A0EC11A598ABA9C719516D40931E3
-B88807B0B97679EED2750DA89CE72490045ADAD93E2149B2F4DE824EDF4F589B
-BED47D1A68FA443B43B12627213ADB4A13955941A414298369E56C9296A08948
-ED824B5AD50BFFD1278012CBD25C2900947DD36C7BA84862BFD0D6E5C8804DFE
-A009520243BEF0FDE4E28A09308967AE5C17557905522070944642A61E0C3ECE
-DE6F930581CEA7D90722353094AF344FFB6A9AFD77DB33F5BCC4C389EE337093
-C729A8EBE416D38592E391419773533361AA40A4A069DD2E513E01529379A770
-CF1E4B6AAA04E6859C7767A7A8DABA86A47F00504D97FE89B9EF06C2215F3CF3
-EE4C1AF567E96FBE44DCCD55C5700D7B8978B02AD4AC66D75B444BD75DDE1694
-A63B83762C0E16096803805F6D0DCA0D860854CDF5EDF0505A9188358952F936
-76CD51B7C1B080DDBE0EE98844C63F603E8A20C30B82E9FD9666127DE42A3EB1
-8B1351970E27C4ED14DFF0A3B233F5CD1B0C29F83EB364326306509EE34291C4
-42F3131380CC0CC7044B27360733FDA81FCB46CE50C78671E7805DA1168E9E1D
-C0412304730716E52F48BD729E2715EC9DD491C30BFFDEBB47C8253430C3BDBD
-3A943C3E39DBF1063B33BEF0C9E6B8241FCC3255F76A731CF80EB31B57439231
-4A0C689379136CAAD5E640F7A40232B08538C6EAF28C00DE6D26100D792250AE
-669E7DE50FA71A511F3B9AA23DE99764999D7E04EA0B6E133CEC569E50DA13E4
-F8A6232646C3C501DCB6F11EEBF2C7027EC938ED135D3397C0EE21A2887F6D6C
-D5476A118374069148C7528B8F2F755CBB26FA6632CC5E1A63CFB6E54FFD685A
-0312B80D606D31B04EF73A53BE6A5389EE90A6E39A8AC664638C63DFF4454205
-2CA6F1D105D12E90D1D4022FFE7F80B7E14A300B94E31ECB6301CCB7F75AE168
-B4A38B67F5568BCEA87C4A4E39F9865FBD2325F7F1ADA633796A9853BBDE6A52
-A1427B9EB6E36F43085E5099F2955E3B26B4E3A19E888D7BF716225401C284DB
-5452653EDF68D540DE39065356267288D831AFF2507DB7F0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 13 /circlecopyrt put
-dup 15 /bullet put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
-27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
-5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
-0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
-DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
-71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
-4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
-515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD
-5F3D998D8365AF76D4CF6A06FB66E1CBCFDB3A67D8880377CD677B9705EE853A
-D849F88A828E244FA5816B7D081D4D1975A56D771790C21AE05809BEE6613452
-953F26C39CE61F0E134BC35404FE2F0B7D244D9A6F66E4D817D1C65024013AD3
-5F242EDE94633B8E20EA42B07F83BA649F12B784B2AAFA542BC597C6C2C9AE9C
-39D60FBA6CD16AADB5DFDABF22F37E244DF3987FBFA55031CFCD46ADF03650CE
-D6CDFFD87BF7407FFB63F3FE4C29FE753896101B2CEAB9007B66E29D6A5B85D3
-FF91F888E445677157A5996FC7A3BD19BAF3A3BCF33F0719B992A0F013B1F0A1
-82E42DF6F651071FB407F448DFF37653E2A0569BDD8EABC3280B3582745DB98B
-644E5B341F531B0D81ED85F815B993C2B8B34CDDC6AE97606F6B3B1C5427F174
-362FAB82B935087B568E6F526347058C406E878F1CC2DD05C26D35565347C5A5
-7575891BB4
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.1: CMR10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 34 /quotedblright put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 61 /equal put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-/FontBBox{-251 -250 1009 969}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
-92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
-295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
-409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
-4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
-2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
-0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
-B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
-24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
-43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
-D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
-5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
-96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
-7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
-0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
-B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
-AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
-97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
-FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
-20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
-0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
-F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
-3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
-A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
-5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA
-2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9
-0E172209FBE3857AF495A7F2B34BC893D942C145C2204CFCD6A5C69FEFC25B60
-E412CB2BEAE7F7FAD03AF46344F6A7D483BBB1E896BF16B0F4C363799DF23CE2
-E8127996DE841B6F9D8A9E56BD799B6A938582988AF87151BB8D3AEA85C49857
-DD862B5E10D9F33D57795D656FB616BC9B8397B3612131A2B0F472656700958F
-739A548F7C3A348698AF9F6F9821D7A9FD4131781ACBF7EAB885A3AC254DBF94
-02FA697941A0F97F048861788BEACC20DE829764413CA58F9D045A6B38BCD6E6
-E4827247EDF1171F64E3B041A69B244308DC07F66643FCD7D5FD37F36EC4CB5F
-957D4ADAF91850A3B1A765E0E580EDC77556593D1B2E1C22685268469298688A
-45C474C9D0472D019CE1E83F25182D084AD85A49C502E8D679C227DA8E32045F
-8055D1622C478F8FDA342685F858DE3F53F1CEA0D70BF3FE09037D981E9E7FFB
-BC3F896535D0DCF53F4C85A1DA5D0B632484D1F25460E3EB38E251D2AA17817E
-F3B25A2A49C0AEDE0B89E277F52CBF744EF0243C409FD71FB0C574640CF11599
-117A4F42F27D8D282D34485AD116F7E753A8DEBFDF7C552A1179C02B7A37782B
-743D0DF85C15A333BE9EE82C13DBC9CB007DEB5900954AD9309902E08B3D5BB4
-E8414211B971CE8B9F05A61C15F400D9297745F606C6419E8A8A9ADCBDC39243
-617EFABFDCF9F836D14411BD72EE19D0BDE89234BF7D52E7A68ECC952FB74FE3
-33E1A87DA39AEEE9E90406E2B1CF3799C63E9BA858D54F38918B814C0DF0B696
-839C820C26FB473ACC5C08E2056457A74123A398806EECDB427BB183F5458105
-2B66D7E1FC3529025D3243A045625E9DD9417FA089B3C7C394D2B65C0367FF73
-79F17ADEC6B5D27A5D3D3E244A0839E38267ACF07B2D994C2B4E7F30A416EEE2
-D1688F167D1641A72A795B1F4DA3350F75AD6D546AA118B5F8A5085F5794E6E5
-28256CD31D250D8328C9620B8ACAB03E4A33DB4595E959F4D0FB1C8CE85A710E
-22F1940067C036A7DCED7EA48F1EB81AC4735FB26A249A32AC2E3E7636B32D31
-7D76FBEBA106D6C67C94A3BD4256B786B71C6EF8D191CA90CAD8D2EEAD42C6DD
-8BB4BEA7DAD4ECB6E002F3B71C2955A5A401E34D55F755BED68178C270109BAB
-FA0AD848347EB977325530B27180661A59447D7DB55A62D65309DE24B6638986
-1D3A539BD37E74C2C00DFED3336B5C6B28D915AB7188FFBCE3ADB3CB903944DF
-1BA5923A1C053D4682BB8616F44E81E18DB2B58298F4B1A6289CA993DF3E7C73
-B00DEA3A9B747FEEBC4A11E5B9B8B05CA2709B8AA935A42159D3DE399544F5AF
-AC1CC00F6CB94AB69856078C9A2EB2046BB9055CDD6A0622112F7D3710143F1C
-20CD8DAB4109CD47BC00EBCB88314081C1D6C43132412F261CE0262FA28DB7A3
-C7D8534BCBE1A60488EA230DC558B73C72AE87539A9D7E28C2BE05FC05F58DDD
-87117FB7D26E271EE319A45AF58B5060BC504767962151AA0BE18386D7A6B067
-DB4EE68115AAD6C430A83684A650CAE13BDD3B2273062E649AF34CFB7A1E33CC
-4459B32357BCF9E9D240B4B49480E19266F35591878434DAA5C22547994C95C4
-24836FB59B23DB98769E02DA06763496C34278BB44E9ADB6B0A4F6F25513491A
-5DEF85F52B2AEB160684F2FD877B1C0C20AB9CA213CEFA13DF43E8430DC07E84
-AEA51089F7DB2D5A2DD2B41A09C6DC4C0E94DD1A1F9B5D4B948AEBB424958B80
-F1CF7424B30C9459FCBF8ADFEE2DA11544583C2A6D44EE145C1848C52E01EE0C
-7AFC55A87FB3A81657D41098685A17A181D0CBC519C1579B64E8AA9A56665016
-221DD4F776B39E4B1C7A6E06E92EF8586B9BC24692F3F850EC07CAF38D46F388
-07B36DDAEE4EDEBDA728B444B69CC8C86E8A316338EC254E0D39527A6BA0101B
-DC4A7C0C6B3A57325B671E16E7D565FE32AEC8F12DDAEABC4C0F5B81ADC4FBFB
-3058680581EF6A59BBB791A36D25CFFC73832385B74AA2909E2532E12C17416B
-9C753552C5CA9F257B49FA4DC9E18DBA9E74AACC73891AFA4EE5AE5270A49AA1
-F21534BEB46230E1443B2CC1BBD7C8A53A4F81A94917F2C8033B81B3A5147009
-6FDFBE24DDBA427A8710558A3FA56FC095CF43965471C12B7E0317A055181D51
-613B637F6DC09665B21627566D893D99E8FE05DB46054A99E9BD96C905457807
-040B91EA8AB82DC2B238DF8299DB9D96AC80C58EC470E44AB57563C69ED0766F
-4D7897A49CFF983CF4210633F5556ED3EC9269C69036DECB0D3F95D70C4160E3
-CC03EBB3EED2BC58FF82A1441ED504DD64141BFB1D9577D697123FFDDEAA86DD
-122B65104DBA6FA94273E11F847C3F6AAFB171F13C6A9CC35490A7059FA99C53
-EB841EECE3E2FC7293601E799851ABB94E61D5F9E19577B5C5D53FF307739FB5
-8AD96F4C982FBB42AAFEB06FB5B985CF3B5A94D347795D9BE05F0A2DB35DA51B
-6C6EE6F81B9A14A470FB8EE86DF5D17C4749F9C64F40AD82CE6F5DC2A0E61355
-FC3845139194F4F5009E8299E9FFF9EC7D12FD49E423874D41FA8737009E610B
-8ED0B8F4DA3D512635ACB23828E19A26307B7A2D3EF8345B5D8121DB386D8976
-AE7D6792C02EBD15EFBB17B514D4258A2981D64A800AAD53BF194F5167DEB3DA
-764499D825A23BDC6565EBD942063347874C34413B02569C71D90B785ED3F7A3
-BA9987350892CCB89A75A77A4CFD7DD6383E14CAD21FC4F7A73FF4271E57EFB3
-A0F543FD467E29B02115D124F47DCB3C02817123B4EE694B9AA846F7CA86F432
-03B64474879A2D94708721A0CC8FA8693A72CE3EE4AC1F4D6A47C5EC92BBC1D9
-A0015887829A47250A0B9B19ED203DA3231C66BE6056EC2495BE6DB3E8EFBC6D
-D47ADE79FC302ED199F8FA1385747D3652F5E3C3A311D4D6FF082953B3188EB7
-C7D3FE68B51DF57AC4697449E539FB149BF6797E0B14DB1BE89D97B0B93BFDED
-622694A35DEA11D8ADB4F117D9351F73BE0AADC51282F4DD00158D0DF10A307C
-6D20394A15C86CBA42B818F6A68A89ABE13A14CA4DFA4BCA19DEAC249F83CBBF
-7AB2074FE43424EA9E92BBDFDC3EE2CC7A8F3666D0D30452409D8DB80AD1EBDB
-A12846FCD4226A6B357AE6BEF384A58E2FAE1C79D43D5E474E0EA2FF1D833899
-6C386610786C056C54C826F99585E7296C4CDBC846AC36D94EEBBC0DEE84FFAD
-210AC51E2EF34126098AE612DEECF8EC4533EBFF700F9B75BACEA7B771CB397C
-6413830C7DB0E333151B30D32627FCEF266E170A4D4E9D71883DF60C4FF03D08
-8EE3EFC8FCF74EA015E7EDE94C5E9906A3AAED85DC255CDA01D9063B124EA9D9
-54F2FDDB8E05829C8FEE07C6C027732D717A9515B3417BF705870EE6364DD785
-A3203480FB548EE57AED6B3739B3F1C6C2CD68BD1A0A052E373C81D661753994
-7C751E6F15E7EE2C075F1C43DBED60E8FF8D7581EB2D2112F62F15A3C6893026
-6651E3AF5E655AB85C63F34360C4820D327F6CE24D5BF665355035972DA992E5
-3BDE376CE6155BF5C3BC0C05ECE69D824061D2BB29CE02307B6100BB8EFF7ACB
-87659656E6C175E8D064D4B9EFF87EA45E42CE881484809FF86A0DB01E783090
-81B04CAEB3D27B34ABEE1FF55F6E3BAD0F9D47DC8E2DD2D75599C17C187D3E9E
-3F0B2D57D03F42EBC7FEAC40D62DD2545A297F7CD1C2D3C28BEAB8F069937A60
-76AEFA5B77BCEB2AC85F000E046F4D9B009688CA306970EF923E9BDC60E4E9A3
-628AB4D1E0D643D1A0A18375000ED121B460ECDF65B191E43182FC69B62BB2AC
-991320BC421EFC03419AD216AAF307ED3A2222A923E57A43A13F18199D5A2393
-2C2779A6EFF51DB8A696EAB9E648CBDCF606654BBB7DC9CF5E05D64EC7433A2B
-23C713A4AAEE6044DF5231C866CB126CC8D179EBE944872FE00E5647FAEBDD31
-069C5BEB6DA336A45583C87856C0D8409D8A02A58F0C16D712665667CFAD187A
-DBD8CC8AD1962DD6494B792FCB6A410BDAAA2E1B9C8EA0B57316C15D17EEB68C
-080A43C5B803A58565E93F3BB30832496055E861F6503AAFF4B48BEEA5657992
-AA29F49F6E89AF9C7A16BA8F271E09CB0260922A3D706CA4E55946FF3DA900FF
-A8EABC97426188ABF8BFC2D85224F9D0BCA5038EDE33BC6EA20B1BC2C5B1A683
-A5AF575CE5EA826EF7D777F1824AEF9A456D8A1857E79CB21E75C1877CF7A0CA
-4E3E1943BE4F614CF9F8D422CE8BC3744A09A12BF2F0E0B9EA8412ABAB1050B5
-E5F423F3974EB0F2C323A9D5942BF0B52217B616A178B51DE68ECCDDF3D852BC
-3CED3FC00C8358BBD9621DF38709A7BC7CA7F507CAFAECD058416622C8A6778E
-56DD0F56D087DA40E09429600FC97DD913C31491AFC81CFDD915D2D3BF3811A0
-8FCAA9F7B9A1E800E4E3CAF640898FF358B3B3AFBF09594DE760D03B2B21EE6B
-38EC7B48A4EC277FA6E52434D9FEFC5C90CF038E7F8297592057CB484B697E14
-145D80B40B9FE18D453AE12272B4165DA8ACCF5D8161303CF8AC0C67EFEE09CF
-61EC2BB71FB74AE4936C20AD50F006D7818A1B5F6546385280062D5FE1BD3B92
-AA7B6D60AB4000F75D7ECA2BC27090B34D313AF755BD6E8D2670929ED5D9A7B3
-ABBB2130AC0AAA0552FBFEE360F0491964A823B54AC07DB43D526B1646F70C08
-C9B143A0092EFC0C680E42BE0C7104CC23ED2103678AB9805BE6AB0501010416
-22CA00A41D88E36048B3C871A917D8311B88031931DCD15F687AF5380CB73CFA
-933F9682D8D616DBCB68CA9E1FC7DB0CA94EB42E40673597589E4AFCF1313C67
-D0B6B2A380D4CA41AA89417B19E5B4BC2060CEEF5676B49000D717250D796359
-CECDF88AAF08B71AF8859BEE17A9BFD57998A6C66419232E7973F01E3E8A3B3B
-C4160A1F51D1AB8D21B32F8DAAC9653077F752CB0B141589F171B312ECCE4AA2
-A1ACE97D0825DAB81A577613EE062BBB62B3D75E3D045E8B0155D2A9325F6AC5
-29DEE4C20A015E03DE5B60DBE04E2BA16228F6EAE52913AEB4570044C0E817B6
-ADDD0596149BC6C429F46FDFB0EAC6FB4A1CF298495B59C8A70C2B9D240C6F20
-93B94A632BC46C7C2755CD234DCE75562990C0258C2D615DD8CD4092D10B0FA8
-A7697647846DD95794C141A571BD27295A6498BC8BD6B2ACBBA73D6239B677DE
-0701EC5B5994FD981017F5B314CED6070CABC53356880C6CEE6DA1C519198B7C
-D390CCCFD01B089375003D055B3D704D3F67CE6150BF41ED2CF7CD4701230728
-7F89E00C87705C76B3CE3CD1C3929EAB6000E193D01E9C7264BF29030E9EB051
-FBB094633BB51629DD1DB40CC5F3FFA9A70093E59704C129FE895152BD6C5BEB
-66E46DE52CE673316344555B00BA09F7B60455C10548EBBBF13D1FD485585A36
-00061D31B7DA74AEC16AB236780E004D8602B29120854C950F29FF6F15A4F853
-83A553319C5D2DE26011722C90563043AF87E0B851FD47C01E30A6E73546E0B5
-822A1C591AAAD550429CC1143584B3E827C0138A6AC5D24D3142459A996AF5CE
-8177F93ECEDB4661107DCC38BA9815D7DB51E35E7D9BFA11AA6D4FFCBC95DE64
-1A563634B42202994844A9D1D6CDCFC0439BCE6B058D8E902A279DCB44F36DCA
-186C5C15434D987ADE64331BAE39CC537D826F9803B7E9461E7415B66327602A
-83E73050816AD4B284B7F38D506A8C8F3931CF92B7774D3D4AAFCE1B5D2DED59
-E15CBC2D7CFCFE79664AAD7B4A005A0313403EF78DB7543DFDB0077C146E056B
-FCF76BE09EAAE4CE8C4C5F6B9A400574C3E02BEED4C40BD49BFB2C640042E6DC
-5B6CB5D793E27453B4ECC044D9232C3901DFE56A5BDC07FB95E6B19E431A8728
-6E2FE837973B10CD1A207D5F52DF1CFFCFECE436B4753E4120B6075B43DA9F43
-3D09EE27ADBB9E3461489F3F8AB70D85EA3D551521E208421390EE9B97F6C7D1
-FDA6A6B9BDD9C7FA025FB6EC31CAB096D467BC25F07BC0B9F064E8A02DBE0411
-233C350BEF9874B22C783B8290A6878D7475F6905AFCC9B20DF5D9453449B90D
-106805613B924CCB40CC607140C1D8CB4C66143DA11EFF15ED437B23FEB505B9
-62F3502C4CC0D8F2AA7E595C05BA4647CBFDE86238A9AE6F4AE3E616EE8EB11A
-2E57F499C5BFE242D1F4EF7E6AF94EAFA6F029D78572FA857883410BD42FE17D
-53FFF9CFA96544326F5CCE7A29379B231734F06CBE7921F42158FBE5D7D650D9
-618D4701FEBA560CA102DF29E9595B0871585CC8D810341987537EBCD0C003E8
-AAA0FFBBE730247E15DFE53E820EAB442E042A180E41B1AC45C3D35310049E96
-6619E36CC21AF0F69D6C0A11466FF49DFC0C5F30C5118CD95A8A36888C822676
-128015D05C755FA399CCBDD108FACF02CA2D66EAF830FC2D8A4413A18416C52D
-B87F9E91317BC5B1B50E8E67ABE67AE5F20B16364B0754B682BF918A9E8262A8
-25D1DBFD6597DC5B635A73395A20F310AD55D47059931ADBA6BE34BFC0183F51
-54B4A1E638D954589D823F65215D79264626E3A935DDD6F0F5070C2301F0CBA8
-7B51DA5CC2CE2993F68AB04A7C83155A4FDA32EB7B02475C2E0DBFBF65086E12
-26C5AB818E7108D6E275C226C5BA55D9BD89107BB73E4F3302AEA534C67274C4
-5AD6DDE7D1348799803AC6428F514688408069A6EE0DB338C422EE68A21D7CBF
-A5AD9AA7934C7C06639064B0257A80447BF9433A7BC0122002E45CF9F2032415
-58191AF9038449A4B780701834D1D93C4BF49AD18A2296BC2B4E43B425D34933
-110C63C8442A989B08ED916A97EFCB6B4363DD66240359C4E961BDABB9EF406F
-50B5E99461D5C8E133BF7AF81474AB31F8140B803B99370FF3081D80022837D4
-D3A3706E9B0B3972A81E4D2E7139E255AF691F6A4678D01DF3BD2A32693A588B
-44E3B60BB102DE737CC83D432FD76260355366E09A7850C4F269101EED46630C
-BD80499059F066A2BE0F3C83B0D8E0A7D6440A9F79291FBC4C218C57A3B6A487
-EC56CAFC64A6E517E2C4D3267CAE196248E6051FFB2824552D0FCF656A2BBA49
-8E8DFF9B3227D820CF942FDC5722A7BA220D0029C28465666B99132D551FE278
-C93D4E92FD003903CBEDE56E64D7DA481297409E5B63423D0FDA65431E6A59B6
-5ABC9EA077F0F08F26C3AECBF7D5F51317C4D8EFF5EE1CD6664DCE57022F2965
-8D3520633288A0442533C847915E969FE7808B485003FF34B3F29850F037A930
-583DE61E0C92E56EDF3F08227146C48545EAAA72975FE80C405D98E1634953C4
-8469D25036B107F3E2FAB78EFAC01F1A7C266BCFF7D4AD006FC21ECCA80A1F44
-8396C4DEEA7F14F7C051B24A76F0027B8AC80956CCDB9D86907BC6299484F168
-C20BAAF6D131C506AD51FB477118BE491E72283697DC88DFB1E5225329F3E7CF
-F0C061C3C8433C8B39B81BEA0396DC7A0CC0A9DCBFDB7E634CAD538AE4CAA055
-88E63B4D4CC99355DE2DAE6555BE3B4C633709751EE1053C35D59882B3F3E559
-0FB569FD4DBCAE28B2B415B444BA6746C0968ACE6CDBAC2A81205B0D7329026B
-E8F1133A3C02CCBC4772A8700CEFE0F4FF6FE5D95B6CE6329819F4370F3461AE
-F6CD85F4F903FB220987A51696D3C141ACFB90BE00C2A9263F42DA4AC7128E8C
-B4960BD94617A0BE1E9EE443E625C3A19F6988A52889424F52F10259CD191ACA
-DC0863C3F38A85EF445482DBCFF9BAD900E86A37F82B64C48D5C8B7EA961C476
-EF43151EC824376C450610CE2A3074FB84EA257E52E8CC690527833B70B08150
-DA3907DBC1645613B9F02C9E97AA3E46552528AA8138A9DD54CCED001FF3A0B1
-248C62BB75B842F56B7D402A00FBEC7B3660E1B85BD2B2149545FF83697EC13C
-0FB36D733FADC3AACA584E110B4C97B34D29E9F62A69BDDF8663DCFDCD7DD89C
-9FE559BA7EB195E27177B9E6FC4A5EE4E707749A0DCF391448D2B83EE91FD91D
-EDC44C2013C9444399BC2A49077AE821BC0A51494638B7307F4ED02A0B93F685
-765A2CE63373C2ED943BA0B92AC29F589A34391879D513D318E659192EB96800
-F70C097613825CC6F0A83BACB6128603D5D1DF74F83FBA4C55CBF4ED0251796B
-8034371CE0DF07D49AD6435D048C2B11F29B8F7D3D259566103E645592CE6185
-9532BF90BAC105F042466043D52D8E323E1C241BC7D2337F3E420153DAC45279
-902F35C33773C30327F7B1D5EBD92F4C6DC2002905DC00B9A60BF55491829C6E
-0A8D4B4BD39948DFE749E2CD13665E5DC253DA2DA9878B8C88AEF1CF492E6726
-0D7DCD188C5E8190F41AF40C81057C88A55466667296314A5A5C42C012306071
-15157E2EAA6A731AC77CFBC990F1193CDB767480CB4DC849B723E873AD0B888F
-4AC0D820357E1C5DBB0477045D972FB10F0053B967D6A5BB70699D5199BB9240
-4F69F592E637B26F23956C4FF9F0E18FD7D55BFE558F3E1D274845DA4F3F5F51
-6943DB48B2B5CF2987B0C11A76E1976F36FC46C6F2E8BD831104722D5E5BE602
-85979C654683172CF19B202C13F2D4DA2E0B6393CF9CCF0695A457E71EF6E697
-2607BEF44DEF2F2EC35A060C70C2C1021AF5F989B8296AD4A173EC092C49BEC7
-D60512EBAEBCD4D508B476694F13E338B574935626BE65D0B7388268DA6C569A
-571BADFA2F3A36A0F885689C98A6972397978A146725C8B4936A4CC9A78FBE66
-29208AF22F8A37942A24CD96C3D4C7E41882B73A874CFE293CC8189CDEE9086B
-94938576622FF3C92E42578037FDF6219768F3D4B3656E15C9829883BCF7C174
-D30D8D4C747FC1007B4280863DE13EFBC8F3381765AE9615551B9DF4F7506EE7
-058B18333AE4E956802D68C3F9BC72849912D2E167EC3FFAA0E8B9B61D29099E
-C735FCB73FDD8C73FEE70D45C266EB87F8D6A2D37E79EE369D111F18852836DD
-4287CD0DC39A1B8A4E4790D0C3E1CCB2148E52E53FAA3A59953544BCFB083959
-42526D744C7C4B6677779AF5B5E23FED05C286F311225365A87875586E4E54C7
-F8AD27A09D5BF5D7FD077B4034CA24C10E082F6A2E5FBCDAC348655DCE737592
-80BDA2B6BC4C38F81F6C5DC8CD5F01AA169CA580C78B60B1B2B7AF314FF226B1
-C9F8179B629259602454ADB36F176A188C667C5146795986CE173FFFB1081C57
-75664ECFB354A62A590DA0FBF09EDA7FA3B6D1140A9A67EAD3D73DA028C19C7B
-399AEED3CDDCD7C4419F4B64256190CF73B681C25B59323A1644E2FA58957599
-56478F8824957BE1A74F6687EAEA3530D45F09C2B8E2DE6EE6379154D02FBECB
-99EFCC22A17009272C905E0C3B8E9011A7398FEEDE844591189BCEC4C1142738
-BB8AB10879E20AFF186844C9CAEADAE55D9493608AE7102143535521968B699A
-14D9BCCED59CDD95CC786B3939CC6CCECDA720102533C05C18E159C18921C8C4
-05FC5F150FEF9EDF4D15CBED48DAE8822CF9BE839AA4CF75C62D45BE75AF800B
-83C277AF3CFC6A4B99C7978F942579F27258A42A503D970BD6BCB84FE984EA53
-2DFF57F083D6B339AC6B87DD15D50CBD6120330BF5D6926BB15365F494CC8E2E
-563B1FD178B9970DB6A2776E1993C787F8C10CFCF177566FDA26B32EF7D2A200
-F010F38C6B91A23FA6B1F96237C23F8F3436460792768F9E1A4BC232907F8583
-85A6A25FBC0768ACE15F2E116972224AF1836C3F543035786589A473C3D76E18
-70D2B01CEA0B390F0FAFCC543340E57163B9A8AB387B258289F260997DC22AD9
-9540088A6CEA5ED000950781F5F6389AB4BE7C6A8813BDAFE941056A7E083C47
-8AC4C0E8EB9DD42AD319F846B633E176769878AED838F0E9856C954B341D8A69
-63D6259E5C0B0E3B45066F57CE561CB24FCDB31ED2D84CE5EDA8FCABBDDF9DCE
-F4294C7D7FAC96519FD6BCFB938E327A231F8EB522052D0CC707067F7C71FD17
-822C1EC08784C04649108D75EA9289E6A5D7083663F44DA57FA48F72208D58ED
-B7817DF355FC52D7AF73DD0E06A2EE22EEA87A54FB92B3CB944733CFF5BC3FAF
-8E70909D392177C9BE87F4ABAF30F184E51F44442134599958FAB1E7C3C2A1EE
-A409BDEA1D48245C536639DA7F4D5D14F6485032070079F5A17C15C10599BAB4
-351E6EB7AB2147410D850BCAE443F2D8CE8F1122BC7B85B5A8C4893350381609
-9E2C0231E38FCAEBA2053756659D0AFEC1950DE731623281CF5D65ACF2BE8F68
-825D65A5714F26F24B588C48CF7B671D1720BF291A2605E9F7C7BC0C99C42098
-1813545D6AB190F3772CD1B7BF879F2D7FC1567EFE7D797CF7EAC1B82B693323
-B4D4CF2FF6F0EFAAC99A0C994438806413FD29766AE223940DDB26B1544D7D05
-A36E7202F2163F93E6F90E7BB0122A953A06480F44A5D281A703DA043AC524A9
-22DD04205F96750A1B64CDD7E046461E42A392D651F7FD7846D359E91354508F
-0779BF12AC1C41054E3896CB116E67F503061B38CDD987E8D29095A943506184
-F4B30302905F10A7491F4A9F4A35E0B30FA89693114CCB61DDC7E71E6BABCCBE
-AAD2FF8AD99D9029C205606FA41324B98414B5C797B8F431F31F50C68E224ECA
-5F2C70779CBCFFF6548928CB638697845A2EDE4B64BEC8063CB30E04AC983DDB
-1186CD7B88B2E37AA33493C1745F2932C0FC3E52E2D8F8DFB8187B0AEA11DB05
-74AF52E6ACCE06CC069ED62E4918623608AD5B68F0B82901CC6DEF80653535E8
-B73B0ACF9355A710BC55D945A5161A68EE0FD265BD0DFFC6276932507902F923
-6220C3A5C467EE1913B81204102515C90B375332C1583CB976FF9829004FA63A
-65F97D2A873B5ED0CB78F3C43D3B9BFA7A309F26530F71237BA2850405A30CD8
-224D4BA64880BB8676E41C6F9DC03BD7C5D1D12AD80F9C91F5ABC60D1BB1C24C
-EA4DCFA355BB75BFDC5079025F9AA783F346826594DC7502E816024730435C6C
-8BFE5CA1B52F56A3309593879A1BBFE764044A0AE0043B65AA05BF42CC8693DB
-A9FC848E9BB33D1FCF56BB01C68B3643A761351D048990F18B26039A5CF7E170
-BB5EB48AD76A9244F3D217039BCDBBC94A2C55B5170406D3ACB2072EC05199B0
-9A83728ACA69390C7FBBB3D51F51ABA05E0A2C3DB089EC8B3158C9EA036E2202
-B6A744EAD50EDFD5140BFCEC3A83F858E5167D99D692882175F396DDA828D198
-0ECE9559D54F3EA1BB55632941A22D04AF8B48C1357EAF891526AB55CD428637
-5FA1C3FE913AA9A3D638D44874CDD0BE614971D841F80F4E3D39C2003737B9A4
-5433FE9116B892B90DE2ED7F20FC4E37167E535974DDA396779D0DC00B50465B
-FEA6569E6826B258904F7F197E7781BF1479E39D6821EDB69F23733058F29A8D
-C384ABC7B82975FF67F193800AFB7DFD8D87FC587CD924D976788A3A36A273D3
-618029D11E9D78B299A8D8D125F0B3E47B53D8BF2E21A9C1A8AF80BBC0D2F1C0
-70F9FDE4EF23481255015F393416BC4482DE3E42EB0B6AA6383FB3CF99E27DFA
-3117798E6360680C83B4676C3811677E233EFEFF9E2969819C11F26CCDCA8786
-AC0AD9FF7FE358443D90A3198688614D2588594E48D5CD09FCEE5C4F4457470B
-7F92DBDB3F042313AA8E47AA6FB63F2363F88103D7FE34BD4A6BAA07B14E63C0
-12471954CEACB0CF176275C6FBC6A4ADF857C2F51F6D0D2DE2C02E03EBCFAE3B
-D8005D76954B140D067909E5CC0B2E4FBB23B8BD9AEB44DB233A28B45B031346
-E16F97552647FFAFEDB3A1A6EA3E64D27F8DFA9EB8B58D47D8B12AE4E5E29DA2
-898CC843DB8E7A909810C33E2AD1697423DAB1994B22FAD8DEF79121CF130D28
-E1700AA8357B1082E352A0A68244F663A0A9F37C47A90BA197CFE9FF7EF0CE60
-4D68434FBD743D877FD1D65CB33604754BCB1CB9E8FD760B3A0A506DEB55C186
-EE41E005F8BC980F83BEFDDA40CD0C88881D21A786434D1DBFBB407E1D081256
-0F37489E075C495840746627A1F0F77E7696DC850B3E3F54B3D2ECD09A35761A
-ABD9C648EEA41F399B8CA49469759667F1E2BBDFD1DFEB252AE7BF0C088CAFA4
-4FFAE41CC8916D70BF5DDD90A59D8B2AEA048832B0721BFDA97333D29C7B0276
-D4366A7C06F05932963443A78187574325BE8F86748AE61923710860EC7DD014
-22EFAA051AB129A6B8BBB38F528F3D21189A273022B43EC0086F09CC32C738B4
-2A3E846ED36696737CAD442A3FA8B9A7441E3803DB48B24E72C8B6F5E7092771
-739C234900D4C81C57F57C51DE7D38BE6CAE358F4A96CF2295C1A083D9B6C6BA
-B5CEB5DF8154C63E666EA04A336BCFA2B8B5194779BF09104B1992C7371C109E
-8C89A82225E2E88D078731946B58CB9D8F5BE95E2BEADED02E7A68B88570A83B
-98B6272AEF6FBA7BAFFD8BBF6503EDD077FA4244C2A1995576E796C7F324DF9C
-184DA0FC40E487F22F23D929C3A3F40A7AF4F83B298A3A96E31F7143D4B46712
-112F92D723AC14FA4E7856A1DD292E369B0C4EF9F87352C5B7DC9116D1E17D8F
-76F6661DC710A1158E8DEF2D2BB03899DAA6C307082EBCDD583C1CC060CCDC16
-3713F2DC8C1A5BAD6EE2D5DB652D466054539FBFA2468EC6B482D7712064A008
-5C86DFF6ED79996A0F02FE7AE3173B53AF7685C3F5DCCD27AEFC3CCE239E4816
-12B13D7A9D11F00699384D1CE947605EFF14997105270B833F828091B8F5D749
-F5FF4A8B913E898782694D5B8DE8F97891BF6C956C2C2454D664B9947D799324
-F488E9F4930D0CACF85AF21B44D2693BD6994C2FD9F0C0A23A1187566BFD309B
-43F7625447132894A4B5CC3162752BC890C9AF9115A925F9FD12E069B1447A73
-E01B55B9F2EB050ED0D6040F5023221F95D2DF816062C5AA1AAE0DF5A4E459D2
-3FF887B6AB8163179FBC3F31B64A59D76534290D9FFCF1307373238CCC379F7E
-4F847BEA63C1C66D4559E785BEE9DFAFCDE279CF37F306B6BEC2F1938F6187E7
-DE8BB11CA4FC0371D15AC3D9E6E46A89DBBD9F690AEA8887976B107F90BF38FC
-2C6C235569F568454C24EFACC58E7ACFE2ECA40FCA4734C3F4C4C614549F669F
-E8A489A0F80277C09061BEA823992C634AD1D7041A20BDA7DDC6FC2A44F4A27C
-7E0BF56A658ED3513CF151E908B40B1F7AE014E26D7C820D9A0D2FA4A65E4BFA
-0448FA66B4BC9775448EA7FC89CF3C59980D2E64BE4E8B76F26B987C113DCC86
-F999CF295532FB6CAFC47CEBDA3202BE846D80AB73739BEEFCA7C3228FC27F2C
-B35F6D205225ECDC06E0932641E9984CE3D53AB056D51C4C41EEDD6CC2A177AD
-8230F95DB829EEAFB51F1B888A67DFAB9D06B485C260ABC5B086BADB74DDCD83
-BC4E93A3B45639814CC7B7FE027E63AEE77D89436DBCA67562CC60C03749E750
-DC3A09FE290AA918F48805C57292EC7CDB0E44BCD7E736CAF27DC2691EBA3A7F
-84C38CC9C8395D17F20C5B198CD168CDAE8EB233D46EF930874C25F3B1D7F6FA
-69401DEDEE59D3087628C5AD0B6D1DD979A646B37693EC4F8CC44210F3EDCFB6
-B22BEEF692B3C2E4E71D87EE75D71A3AF0178BB8BB90ED8BEB5CAB7C763D3DAC
-67B426AAF471509682673FDCE4135181A09746377E398CC9BD28950E7400BFAF
-89E32A8EEC6B879AC6D9EE1D48359A2478EF7A1D3CA9D98B8BEA11AC6452361A
-4EE844B3152F6373E3843F58491D52615BF117081DD61154BD54CC524C98BFB7
-693FA7D9B96CF43E95A02249CD9259DD7515C78258A2CC55284CD5ED6E3B49D9
-2AFC2D5C0D984D02394157D5E6EA35086DF6AC26330FE2670F5695F0B1DDB335
-4F162E15D35E1E44A9D837CBAE7D1650A2B1540D329CDD92FFD3E1382A17B6C5
-023C14EE5B4CCE6A7128BACA9EFD6CF2E84C8F9B341620033F291C5A598F28CC
-A4D142EA99FE0572E657A3F6DA85A2551A968AB16A58A21465E24EC65457533D
-A3F08FB9C12AA161BB181D54AC7A2139615EDE6307EE24D10CE7BEC6D7752534
-E6E4A487A768FF6EB2525D7C9C55D8D3FDE99F659D26AF0094122E42A6C9747E
-BE331E26A7B5087E1D56859E67C461A513452ACBCDE8ABA296E76DFB171EA477
-4139E5920137834337DA64773E240DE83F8EB8391CDA3ED38478D9759BE53F05
-095B75D4B16F4241372856E37D038E5E3B1E10583CFF6C2AB9FBC1BE200F040A
-F20A314527D30B1F488A8F90CD82088F0FCFE8341653887E367EDA6E243E6001
-49FDD7D7F9DCA04536D02DA2EB209BE0517F7315764D7F9FA6CB90E51183C161
-3E9AC2B6BF5B3F1E6DC53239999E0E30FEA8B60EA1F63718CF53D446261883D1
-24D454DD505171EB522986C2A2BA9F765A109546EEAFCC2034710A899F200236
-80BB8CA61CC64BA305495AF2F4146761642FC4A0FEAE74865E05235C81EB1E6F
-00758DF5BB2256AEBD61899C476E2C613E44235FC01DBFEBD4C8BF1AC9EDEC93
-FC8542FE7667BF5BFF4F98CD568AFDC1B0CF7E5B874A217BF8AC214DCD1C3454
-E6D91DB4AAEA06A749CF084EC81674D420BC6D42BBF6FCACA805ED46978897F8
-26F2A56CDACDBBC059C2E343E662CFB4E52CA740AB9F74917D644184D15FD02B
-65AC2910CC284948F04EEAEE320536D7F682274FF77505F5BA1197E06D0A2274
-309B3FED9CD2151B9F75C0E2C36B0DB65374B707DA050D6FB5D074A3A3673241
-B48525013CBC16E647A50FAF625D05CC0D9725E6DCBB5F6A0A8F6589AD435399
-0C10184EF4FDFD1F53EB305EB64F1EC3604B4AA0B3D9C2BBC7905FACD16CDDB6
-1EA236E95C4E63E0A8410D077863F63B371AEE7F407AB462CB08E1F346A4FD71
-F0DC11366AC190C7808D9465A4B3E1179972251BDB5180E282CEA3B277459C93
-238D787EDD1CDD76FD70147762C42D339A5D8DB85ADF65B8766F342EFC00E57D
-497DD1929FDDFECD8CB01240D03E318820D669B8205B345C73EE5109B9AA7EB1
-71C8579B6F78A35AC7722AD682D35D8852F453A95E67B948CCD605AC3B6F47D7
-E7CDB2A9464A0B07D396D36D25AC402CC8E9BDE1E38F60DFDC677A95D498432C
-EE8BC8E957595E99161B03702B885E6302E23EABB179899C85097667CD5518F6
-40E7C12820B85A94D9FCF21B8DD01C65E16E9196650402B4E04AC72E99BFC394
-5B207552F71251FBCC365A9E2355F35C8E059423A8A0BB8FBA0D8E2147F7B5DD
-CF73E36063A501398CF9EAF08B2D783F66A06C4B660B928FE138CD3CEA3698AE
-DA23E6F875105FFD363B968EC3BE27CACABEC135849DA164A9D320471A7F60C4
-F5CC6FE898B1DA69525F6F3BA5CC70176B1F59BE78D655FEF04F1EDFF18761CA
-C25CE5A8F14CC617A837EFF994D269F30070DC58721DCAF8B84E12DC6DDDE605
-347E41FAF0E108AE69E9E0B71802F8F98282E0D8FB3276B6D9A33EA7417EADE1
-67500A498068810BA357213D6E90EA892F410155509B8CED08554C56525F9C4D
-2DCD9178BE3BC8CC6320C646590FF4925AB9599ABA8D8168CC4F8DE1FB815AC1
-D8031F9A3656D002E773459844DB987AA4ECF9F5FE8B2A0690ADF811836F2BAA
-F5DA7FB2A1D81E2C38D8E15BF3DF895BB2FE4AE915DE304C55567EA18D3CD1F2
-829FAE6B28447F589D82BB70A52918A5DCDE9587C50969D4CCF574144C1F8D9B
-4CADEBCB324686BB0937354013975F3C303F58080EE244A6DE2982E2970DAADA
-288C54D4C16FB3F8F5AFD591327109C298FE05240D6C361BA72D9044EF5E9BA7
-21146E4F107F7C4F408C04108CC330BE7EAEED969A66BCCDFE27F10F22C213CC
-896EDE048DC4DDCC1984117866F0CDA39E44AF09FA7CA3F29EC68F8A35D7560D
-3DFAD13A5D46682924A3C43B4FDE357D315343D2A192DC434053E6F22CD95151
-EC038AFA00E6C0639C36BDBAE0127F27E2DC2BF7DB7A8D6CB0AA5B0B194320DB
-2586D0059959EFECCA1677447CEC6C199C80A76788A61B3D1A4B69B051192E61
-CA528B0AD3EB7F2D37E23A04F34D54A2CAD84AE483703FA0B323A198A2B06806
-5C7630B9112BD7CA5C2032D1080E8F6EB7886CE7C9B864141D31154FD8D2B2FF
-680E1D255A0CCF227C4BF80C5150F371E0DA2C422E6B9CB4449D06606477625A
-56B0142F136DCEFE950D8ADCF88D34E305BD96D900D0784F44E40E736CB86C3B
-6AF394FED5AFFC61321BA9D511D7520BBC33AFDF2C4F53BE2B7CB11D8E1B419D
-9F698C305CFEFE7E391D190E608BD5E62FBC3E193DAC65F1B21EA0D535CDA3E1
-70781C4819F1B98165287D0A7E9F2A0AA9BC27D02218047A5D3247D41B387677
-FD5419E5BF713B9F9863C77EA0218E509B036B622F157F382093DA9F32DC1778
-B47FECF95A630218FC13AB09829A5D7E5A874ECF40F240FCB4177C7FCA7A6365
-76577CCD1E19CC6C9AB15542EAF6A4E8136222F29AFAAF520FA06C40E038B43C
-DB4C341F31AA25F3DD92EA498661FF852937D1146260D5BBBC7E627D84B31800
-1B362FCD6C631FBED0BAE0BD019FE4767A468A94E8E14400A0F5C845DE5AFD74
-280E72812F50457152EE943295A3983DF3AA8FDEB4A09B94B4A25BBF5839144B
-5C6C6E04BE342B7A744B3740D6E8413034F72E32FCB965232041229E432AF5B2
-F2F2D962EAF147ADC361D5F776783D59600EACDCEA4BF130D39B042C1F707407
-323BF1A510CF4B11631786C12805EE232CCDDBBDACE94BC3D283F5D0D3FDA65F
-AA3800A395044516773D3F596595BEA5ADED5BCA272EB0C5FAA47E091BC0C77B
-C12D502AB17F760968573E08E193445EABB202E0DB01175297C984EFEEA6B956
-B9C9A746DA9846B5A5862A82B1FF6D3D21DAE713939D089854106FF83C898E11
-58B9EB9DDF744E1C4AA5AB1CBE4BA3DE83921121D0E835406E7AECDC1C49F384
-A8711329BC7FF65A0D66E6852F681505DBE0CFBAFC357112665098CB7782DE3C
-2A3751A44887BFDCB414788FB7C5E981C2029F8F661B494761EB8048692FDFA9
-9C2AE1FB18F18035BC0B572BB5FF87C13779DF90465F66C9F22EE4F87177A8E3
-56E32BE71E9C4A05050BBA76849536267E3F49634D833FFE863857789EAD7CE4
-ABDCA696B0AB9064D4A9FBD592134972A9834C95D8C2D31858FAB6FE0D354779
-B5E0D44A2996F3AE1F4A1444E9A3BD944CE4D015F5DDFD4A6FD285DC5BB5B3D0
-02559620703CDC4502229532E16345D7CD7C20660347DA827CCD009D78819CB6
-6ABA23033E23AF8496452D058F04AD64BDD9C19AE91AE9DF1B3C72BF5C1D5AB3
-8AED52D9BC552E3F531CB676C6E3657A013D020ACDB57CC48297BA3CFF1096B6
-679C7040831AF0734655905D088850CCD3878513D09EA3FDA53F8FFF344906EE
-3661DA4B3F4A66500A5B9B7B2A18E48D7110A4375A9DCE3A7A7DA63FD80C2440
-5EAFAAA1C2F773E1C58A54E0775264A8BAD6EE25DCD32DCAEF4070946DD65558
-50CED1BE599AE6B444FF7CBCB68EB63D09E98286D14ABFA4DEA41D8AD92E9AA2
-98CA01111924E80CCC0427253DB78D1EDF14758CA5F6AF562791F2716951F03C
-A5907B3D91BAAEB7E5A08B9F9EA3172F32B2D6E1C7586079AA2B1E2FF31281E6
-499B21248EE2D344DFFFEDE1B7FBAD8BE06FA96A299DDF903BB844E961833FA2
-11EAABC22885A67896558FB2A4E315E02BBC24DD4B700174FFD171D824E6F32D
-E34AD2A210D5D93193DAF1CB368D5E83A660323D8B784543C9C3A3F072C3DB22
-5AEF8D3B2A4B05F54F28254845AE3C1F843C8C7BF098326939D8BDEE50D7A666
-25279CD08CCB9CD140B8E0A91CE26F7FD4290F46DE997B4F98A4C3A72431230D
-F236F3333BAE93805B0C6A757F37317BA8FCA78AFD2F7A9F58853996B9AC8135
-060E92184C4DBC346F285E1F2A094C41BD803E738A5E58840BEA4D6196C29446
-7FAD1A09B0E0FD587E13239E9576C222914092DDC1405F52BAB6B37F122E7F40
-9369049979105670716CF10CB3AE1E1A57A752D6E0EF8F4C08367461B7E3572E
-E5020E1C0A946777C0CF4700B448C38434C67C67DA7CDA01A3C01E145F107F92
-A817FD3762A07A8D6D08A86B6EFB6ACFE56E7FA99A370350038FC1AB1C3358A1
-FDE3EBA015EDE9CDA4A600401082DE3920D0EFC5521AB03140323E3A032DB577
-DFC16F83E7159603117BFB685637674DCB4E897065FFC5A44A56CBAFB42F78C4
-027C2820CC42FF5D8A6A8579E5B7E153955CA8443EE32F696F286B613CB11F99
-6D564F921C6765DE8568187B138F3609863D2A6E5D573E4789AC2E248DA97A06
-37A7F693180D51F9CC75E2B2D4A0ED4C1F1A599820C9FC3A12B7668198B5297C
-7E76C8F8885B7556AD4F31D705BD4DD482C7C6D28DC61257F486D2AC8C34CF8A
-6CEA8B398AD69AB6F55665CDCB9B2A743A09C9CDDD019F64D2829F76135745DB
-24C6926FD744EA9DDB8710CB029B9DFA7EE03FCB6E3263964957C1C634468B5C
-16A959326883F6D0D118346D12391C757889D54631F892EA7BDAB541B36E7953
-B4D6FB36FC4F2EDA95D35A01571C8675DC792787D06BB6D4AF3BD9C914F0EC89
-AACF7BEB5D40267CF8EB34C303C6851249A1DFE4BE30A79BAA95FF83EAF7377F
-6C361D31B87D0379B67EEB6260E6021C38A86793A00BC86F97F1E6950EA877FA
-514E53902891A9CE840B97EF393AA874E5C52AD0980640A8D7267E9DD1418C29
-63144AC596F880896EBA77C1B6287CE441747745A5DE244506BB48B1D938B060
-9F388E3F5041DDE6EA36A538BF58444C86DE6D1746ED6AF74119CCF81CBCCE00
-7571F824498CFB82BC86551E26330EEB918469ABC25781641F261CC395C52CEF
-9F65D9D7448FC2DFB35ABE03F203771E9830CE1D4220B6921549D2E089E8C4A2
-7C82ED52AE847B53A6675C37C77C26C33547AEA0361D788397FEC78CA3EA12F4
-74D04E6AD1DD70E06958D2FBBA37CC91C6243B58DB030B669A95CDACE3B1E5AE
-775CCD9FDB741059D6B3B7450F5DA98A92AE99394396DB92D96C37051C2823B5
-22DACD630ACFB1254B40001C3A699F75ACAC6BFCFA00A6C5CFA13D867E607C88
-5470214ADFE4295B643E57B3AD1DF8AC90F90B8D935F0D9ABCBD7BF46E58A568
-D829C02AEADE3435AAF6DD9CAFD7FD57854D9FB4869B681714238F9F2B1EEF21
-D48AFFDF33FD9C8AB50EC0F719C18EDBC0F876AF50840CB89AC517B8DC65CA6A
-03CC999ADB424FAC6AC907283B3BD3953002DF77C1E132E0BABFC0CF29E645C0
-EFC844A0E15C7D9494527CEFBFBF7E87F50E1AFF8C52C9A3D2A3FECD061BD216
-2A59DB2A6FD82B2557D384676A77AB1F9CE2674B2CAE1288566A4089689BE473
-D17825C17B5B04FE0EDC6242B102660BF2FEF961D8EFD908A933E42A55954172
-77D48159D281D0F5180164A974B8DBA5103D23966D971CC482608FDD49DF1471
-921AE08EBF2B43B37D60F7FA3808118421BD114E30AE0AC4407D3EDDBA22CB8A
-542D606DAF3BD3AE6FA4C9DAD9C0D44215D71D1E4C7EE32416991A52C001B9FD
-2FF0A566172A069BD6ECC90E17FBF0DEF8518D2048A1547A48AF50E65B767CAF
-0DF408E5123216A30D25103D7D9DA3A4E099C49EB05F23B351B23FDC78146A6C
-AC55A81FDDF51F477AFC7BC7FBD7E45793CD05B66A861113C03F7D3BAEF1C3AF
-59C0E89D028E1409218E6D75D0C9DF4030C96F6E7B8CF6054009000FE8D9EDE7
-7A6488621A69BCAB5ECB521CAE729F09E49BE076C95035BE44C16438943D3578
-499ADE9431651D3D38F95C908E055F40379B2D14580D7E2BF5C7FDFFA5E2D0A6
-59C6AB6EC5905D1053CD02566231941D92B38E585DCAF42DA4C86C5FAD2ACB44
-A4131F3A74F6AC0D4B135A05088B858D5073AF7865899F059A9FAB43B7457C36
-CDD0E5A411A083E4AAB62645FE71112C1D143C7CB838D092EDAC57393439A429
-559129E946EE237C5B4CB2BFDFC3D32ECD99A0360BC89787A38B0C57BBB3CDAA
-0960FE7FA232D95B888D195578601C30198BA517F526C8368D426D7B1049EDD6
-FC36C9CAD2DCE7AE87F007233F4F1783DD06FC306A55CB0692D0A668D0A8FD4D
-62D2BC739AFAC84541EEF28BCCCA352FF095BCFCD4EED4563350BF61A8F08517
-E5257AAE5C9A6CE12E6714653EA552E03612CBE4E898FB1D4D745CAF81813E05
-13D86F72F2175F9B72809CC01CC7EC3D57700F817028526AC4AD2B184F046631
-4F5F8E2840304DD1B90DF28A4F596374FCE81192C4656A0018AC6387886D85EA
-4F8206C8CE899D825669321CED0DDF9642522E3A3D4317223ED5CD24BF0D7D64
-6375E46FF7C8A440B483CFD6C9196AFB2D35D8EF2491BBDC5A22A7078F08585E
-5C05297B9A7C06BEE85810349F1675A24A3D1AB78672D4A633C8212BB62B84F3
-CDC1D5E350F30B08154A39BBC8FC28160A499A2B12D66AA6B8E5183D8201D4BF
-FCD8EA1C9597C33AB92C4F42B1A52DAE32B9E859616D2E4FB8D0CC127B03C14F
-3EC6A6923541FED895C775306DEF4BD8E1169016AC4846FAE80BF3F2CD21E65E
-49E325D669E9134375C597B4959A612864E585AF8634E68563B25FB5482BC5AB
-6AF17D9CD13FEC36C46AC83E0ECAABC6CEAB0599FD227A4BE2699E9B14773694
-FC0FB23BE139E9536614C4D97077FA48CBBDE26A776A7AF1A392167A7C66216C
-6FAFEFDADFC5621E81F6A4B70D291A3BCC7E336DB32FBE89020880FE1F242024
-5E550B3C5C6520D7B962CE689805125AFF169EFB178A06ABBE374EDD4DFEB861
-F3B4AE7313A01ACFA26315AF290365FBA57BF85D4DFD2334954BF8606FDC8D3D
-3E6EE8CC35C88BB350C8CA0843697710AC03EFA6597B0D1C2F832982CD8A2AF4
-9F5179D8370642E347B43C4E194A24B411D390A5EC83CB35269A2746ED576D2A
-ADF58236ABBB4DDAE6C0B8C8B0F5A556B8C41BF15461084D434C14C72BB8744B
-90424BFA46FBD91A07A5697F3A4189E1967D45EC7E829209340E846AB4F313BB
-5053C3B8372C1DFFF614BA4BC26AE1B607F97C2C0C9F25E812256B136609E913
-9803082AEDBD7961220DDD1A23D69A48A7D81087FE47049DF6DB4ED9095186E9
-4B5F70AE4687577E3DFC94D2EC884F0D61641E963A361266CD46CD42129EA6E0
-896DDC893ABB5A67433D0C368A08A486693B54E5A154AFFDB87AAE3F406668F6
-D0C454A7E3C2318549F06EE0ED9754D37A473BCB8AAF13510EC727FE0718A72D
-8DE699F09687C6999345C3DAE7F0E90EB774950D1B67F30807FF9D44F203B751
-DE2C383BC1BA4351C0277F5EC8DDF26FBAC7CC6CB735C501B959853A2B0BE03C
-6B245AC6357A5F853D007F704915EA09760E8A979B4D4B93279727D90AF79FEF
-AA2966B003371EEEAA21AF2576D8FB025D1346CF993D388D7D6895042C873B05
-26157A9D64E60788CBAE03B51A95B1B73C65BE645FA2F0C31C09F9EEEE9BF70E
-3148979C2AAB48B64DB687139F704EEFB00035D785081FD8EB4F3B1B1B86A68F
-012087AADEF617
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-TeXDict begin 39139633 55388455 1000 600 600 (./gperf.dvi)
-@start /Fa 197[25 58[{}1 90.9091 /CMMI10 rf /Fb 197[33
-58[{}1 119.552 /CMMI12 rf /Fc 197[21 58[{}1 74.7198 /CMMI9
-rf /Fd 133[34 41 1[55 41 43 30 30 30 1[43 38 43 64 21
-2[21 43 38 23 34 43 34 43 38 21 10[58 1[43 4[58 70 48
-60 39 28 2[50 1[59 55 54 58 7[38 38 38 38 38 38 38 38
-38 4[21 4[21 39[{}47 74.7198 /CMR9 rf /Fe 147[25 10[44
-97[{}2 90.9091 /CMB10 rf /Ff 139[52 52 52 3[52 1[52 6[52
-101[{}6 99.6264 /CMSLTT10 rf /Fg 214[35 35 40[{}2 90.9091
-/CMSS10 rf /Fh 136[52 1[52 52 52 52 2[52 52 4[52 52 52
-1[52 52 2[52 1[52 95[{}14 99.6264 /CMTT10 rf /Fi 133[48
-48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 51[48 45[{}25 90.9091 /CMSLTT10 rf
-/Fj 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{}9 109.091
-/CMTT12 rf /Fk 134[65 1[89 65 68 48 48 50 1[68 61 68
-102 34 2[34 68 61 37 56 68 55 1[60 9[127 1[94 6[96 2[96
-1[46 1[96 77 81 94 89 1[93 12[61 61 61 61 2[34 41 45[{}37
-109.091 /CMBX12 rf /Fl 141[62 1[62 8[62 62 62 101[{}5
-119.552 /CMTT12 rf /Fm 133[37 44 42 1[42 49 30 37 38
-1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 4[47
-4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 1[65
-1[68 6[28 11[28 33 5[28 4[47 34[{}45 90.9091 /CMTI10
-rf /Fn 134[48 1[66 48 51 35 36 36 1[51 45 51 76 25 48
-28 25 51 45 1[40 51 40 1[45 9[93 3[51 8[47 3[59 20[45
-3[30 25 1[45 42[{}29 90.9091 /CMSL10 rf /Fo 141[74 1[74
-8[74 74 74 101[{}5 143.462 /CMTT12 rf /Fp 130[39 1[39
-39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 1[39 39
-39 39 39 39 39 39 39 39 39 5[39 1[39 1[39 39 39 39 1[39
-39 39 39 39 2[39 39 39 39 39 1[39 39 39 5[39 39 2[39
-3[39 3[39 39 39 39 2[39 39 39 1[39 37[{}59 74.7198 /CMTT9
-rf /Fq 134[39 1[39 39 39 39 39 39 1[39 39 39 39 39 2[39
-39 39 39 39 39 1[39 39 50[39 6[39 39[{}22 74.7198 /CMSLTT10
-rf /Fr 129[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 2[48
-1[48 2[48 1[48 48 48 48 48 48 48 48 1[48 48 1[48 48 48
-48 48 48 48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-34[{}80 90.9091 /CMTT10 rf /Fs 134[85 85 117 85 90 63
-64 66 1[90 81 90 134 45 85 1[45 90 81 49 74 90 72 90
-78 11[124 112 90 120 1[110 1[126 1[97 126 1[60 126 127
-1[106 124 117 115 122 9[81 81 81 81 81 81 81 3[54 45[{}47
-143.462 /CMBX12 rf /Ft 240[45 1[91 13[{}2 90.9091 /CMSY10
-rf /Fu 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37
-71 1[37 75 67 41 61 75 60 75 65 7[102 3[103 94 75 100
-1[92 101 105 128 81 105 69 50 105 106 85 88 103 97 96
-102 9[67 67 67 67 67 67 67 2[37 45 7[112 24[75 78 11[{}56
-119.552 /CMBX12 rf /Fv 131[91 45 40 48 48 66 48 51 35
-36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51
-45 25 2[25 45 25 1[68 68 93 68 68 66 51 67 71 62 71 68
-83 57 71 47 33 68 71 59 62 69 66 64 68 3[71 1[25 25 45
-45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25
-71 1[45 76 45 19[76 51 51 53 11[{}86 90.9091 /CMR10 rf
-/Fw 141[89 1[89 8[89 89 89 101[{}5 172.154 /CMTT12 rf
-/Fx 138[108 75 76 79 2[97 5[54 3[88 108 14[149 13[152
-19[97 1[97 2[54 6[54 39[{}14 172.154 /CMBX12 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-<< /PageSize [595 842] >> setpagedevice
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 150 1318 a Fx(User's)65 b(Guide)g(to)f
-Fw(gperf)f Fx(3.1)p 150 1423 3600 34 v 2005 1519 a Fv(The)30
-b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 b(Generator)2528
-1627 y(Edition)f(3.1,)i(20)f(Decem)m(b)s(er)g(2009)150
-4958 y Fu(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p
-150 5141 3600 17 v eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 150 4152 a Fv(Cop)m(yrigh)m(t)602
-4149 y(c)577 4152 y Ft(\015)30 b Fv(1989-2009)k(F)-8
-b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150
-4286 y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d
-(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m
-(vided)f(the)150 4396 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s
-(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g(copies.)150
-4530 y(P)m(ermission)38 b(is)h(gran)m(ted)f(to)h(cop)m(y)g(and)f
-(distribute)g(mo)s(di\014ed)f(v)m(ersions)h(of)h(this)f(man)m(ual)g
-(under)f(the)150 4640 y(conditions)44 b(for)f(v)m(erbatim)h(cop)m
-(ying,)k(pro)m(vided)43 b(also)h(that)h(the)e(section)i(en)m(titled)g
-(\\GNU)f(General)150 4749 y(Public)27 b(License")g(is)g(included)f
-(exactly)j(as)e(in)f(the)h(original,)i(and)d(pro)m(vided)h(that)g(the)g
-(en)m(tire)h(resulting)150 4859 y(deriv)m(ed)i(w)m(ork)h(is)f
-(distributed)g(under)f(the)h(terms)g(of)h(a)g(p)s(ermission)e(notice)j
-(iden)m(tical)g(to)f(this)f(one.)150 4994 y(P)m(ermission)j(is)h(gran)m
-(ted)f(to)h(cop)m(y)g(and)f(distribute)f(translations)i(of)g(this)f
-(man)m(ual)g(in)m(to)h(another)f(lan-)150 5103 y(guage,)41
-b(under)35 b(the)j(ab)s(o)m(v)m(e)g(conditions)g(for)f(mo)s(di\014ed)g
-(v)m(ersions,)i(except)g(that)e(the)h(section)g(en)m(titled)150
-5213 y(\\GNU)e(General)h(Public)e(License")h(ma)m(y)g(b)s(e)e(included)
-h(in)g(a)h(translation)g(appro)m(v)m(ed)f(b)m(y)h(the)f(author)150
-5322 y(instead)c(of)f(in)g(the)h(original)g(English.)p
-eop end
-%%Page: 1 3
-TeXDict begin 1 2 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(1)150 299 y Fs(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1477
-521 y Fv(V)-8 b(ersion)31 b(3,)g(29)g(June)e(2007)390
-663 y(Cop)m(yrigh)m(t)842 660 y(c)817 663 y Ft(\015)h
-Fv(2007)i(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32
-b(Inc.)e Fr(http://fsf.org/)390 882 y Fv(Ev)m(ery)m(one)h(is)g(p)s
-(ermitted)f(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)g
-(of)g(this)390 991 y(license)g(do)s(cumen)m(t,)g(but)e(c)m(hanging)j
-(it)f(is)f(not)h(allo)m(w)m(ed.)150 1234 y Fu(Pream)l(ble)275
-1393 y Fv(The)e(GNU)h(General)h(Public)e(License)h(is)g(a)g(free,)g
-(cop)m(yleft)i(license)e(for)g(soft)m(w)m(are)h(and)e(other)h(kinds)150
-1503 y(of)h(w)m(orks.)275 1644 y(The)c(licenses)i(for)e(most)i(soft)m
-(w)m(are)g(and)e(other)i(practical)g(w)m(orks)f(are)g(designed)g(to)h
-(tak)m(e)g(a)m(w)m(a)m(y)h(y)m(our)150 1753 y(freedom)k(to)h(share)e
-(and)h(c)m(hange)h(the)f(w)m(orks.)51 b(By)35 b(con)m(trast,)h(the)e
-(GNU)h(General)g(Public)e(License)i(is)150 1863 y(in)m(tended)25
-b(to)h(guaran)m(tee)h(y)m(our)e(freedom)g(to)h(share)f(and)f(c)m(hange)
-j(all)f(v)m(ersions)f(of)h(a)f(program|to)h(mak)m(e)150
-1973 y(sure)35 b(it)h(remains)f(free)h(soft)m(w)m(are)h(for)f(all)g
-(its)g(users.)56 b(W)-8 b(e,)38 b(the)e(F)-8 b(ree)37
-b(Soft)m(w)m(are)g(F)-8 b(oundation,)37 b(use)f(the)150
-2082 y(GNU)j(General)g(Public)f(License)g(for)g(most)h(of)f(our)f(soft)
-m(w)m(are;)44 b(it)39 b(applies)f(also)h(to)g(an)m(y)f(other)h(w)m(ork)
-150 2192 y(released)31 b(this)f(w)m(a)m(y)i(b)m(y)e(its)h(authors.)40
-b(Y)-8 b(ou)31 b(can)g(apply)f(it)h(to)g(y)m(our)f(programs,)g(to)s(o.)
-275 2333 y(When)37 b(w)m(e)g(sp)s(eak)g(of)g(free)h(soft)m(w)m(are,)i
-(w)m(e)e(are)g(referring)e(to)i(freedom,)h(not)f(price.)61
-b(Our)36 b(General)150 2443 y(Public)e(Licenses)g(are)h(designed)f(to)h
-(mak)m(e)g(sure)f(that)g(y)m(ou)h(ha)m(v)m(e)g(the)g(freedom)f(to)g
-(distribute)g(copies)150 2552 y(of)e(free)f(soft)m(w)m(are)i(\(and)e(c)
-m(harge)i(for)e(them)h(if)f(y)m(ou)h(wish\),)f(that)h(y)m(ou)g(receiv)m
-(e)h(source)f(co)s(de)g(or)f(can)h(get)150 2662 y(it)e(if)f(y)m(ou)g(w)
-m(an)m(t)i(it,)f(that)g(y)m(ou)f(can)h(c)m(hange)g(the)f(soft)m(w)m
-(are)i(or)e(use)g(pieces)h(of)f(it)h(in)f(new)g(free)g(programs,)150
-2771 y(and)h(that)h(y)m(ou)f(kno)m(w)h(y)m(ou)g(can)f(do)g(these)h
-(things.)275 2912 y(T)-8 b(o)24 b(protect)h(y)m(our)f(righ)m(ts,)i(w)m
-(e)f(need)f(to)h(prev)m(en)m(t)g(others)f(from)g(den)m(ying)g(y)m(ou)g
-(these)h(righ)m(ts)f(or)g(asking)150 3022 y(y)m(ou)37
-b(to)g(surrender)d(the)j(righ)m(ts.)60 b(Therefore,)38
-b(y)m(ou)f(ha)m(v)m(e)g(certain)h(resp)s(onsibilities)e(if)h(y)m(ou)f
-(distribute)150 3132 y(copies)30 b(of)f(the)g(soft)m(w)m(are,)i(or)e
-(if)f(y)m(ou)i(mo)s(dify)e(it:)40 b(resp)s(onsibilities)29
-b(to)h(resp)s(ect)f(the)g(freedom)g(of)g(others.)275
-3273 y(F)-8 b(or)30 b(example,)g(if)g(y)m(ou)f(distribute)g(copies)i
-(of)e(suc)m(h)g(a)h(program,)g(whether)e(gratis)j(or)e(for)g(a)h(fee,)h
-(y)m(ou)150 3382 y(m)m(ust)i(pass)f(on)h(to)h(the)f(recipien)m(ts)h
-(the)f(same)h(freedoms)e(that)i(y)m(ou)f(receiv)m(ed.)50
-b(Y)-8 b(ou)34 b(m)m(ust)f(mak)m(e)h(sure)150 3492 y(that)29
-b(they)-8 b(,)29 b(to)s(o,)h(receiv)m(e)g(or)f(can)f(get)i(the)e
-(source)h(co)s(de.)40 b(And)27 b(y)m(ou)i(m)m(ust)f(sho)m(w)g(them)h
-(these)f(terms)h(so)150 3601 y(they)i(kno)m(w)f(their)g(righ)m(ts.)275
-3743 y(Dev)m(elop)s(ers)i(that)f(use)g(the)g(GNU)h(GPL)f(protect)g(y)m
-(our)g(righ)m(ts)h(with)e(t)m(w)m(o)j(steps:)41 b(\(1\))32
-b(assert)g(cop)m(y-)150 3852 y(righ)m(t)38 b(on)e(the)h(soft)m(w)m
-(are,)k(and)36 b(\(2\))i(o\013er)g(y)m(ou)f(this)g(License)g(giving)h
-(y)m(ou)f(legal)i(p)s(ermission)d(to)i(cop)m(y)-8 b(,)150
-3962 y(distribute)30 b(and/or)g(mo)s(dify)g(it.)275 4103
-y(F)-8 b(or)35 b(the)g(dev)m(elop)s(ers')h(and)e(authors')h
-(protection,)j(the)d(GPL)g(clearly)h(explains)f(that)h(there)f(is)g(no)
-150 4213 y(w)m(arran)m(t)m(y)g(for)f(this)g(free)g(soft)m(w)m(are.)54
-b(F)-8 b(or)35 b(b)s(oth)e(users')h(and)g(authors')g(sak)m(e,)i(the)e
-(GPL)h(requires)e(that)150 4322 y(mo)s(di\014ed)42 b(v)m(ersions)i(b)s
-(e)f(mark)m(ed)g(as)h(c)m(hanged,)j(so)d(that)g(their)f(problems)g
-(will)g(not)h(b)s(e)f(attributed)150 4432 y(erroneously)30
-b(to)h(authors)f(of)h(previous)f(v)m(ersions.)275 4573
-y(Some)e(devices)h(are)f(designed)g(to)h(den)m(y)f(users)g(access)h(to)
-g(install)g(or)f(run)f(mo)s(di\014ed)g(v)m(ersions)h(of)h(the)150
-4682 y(soft)m(w)m(are)34 b(inside)e(them,)g(although)h(the)f(man)m
-(ufacturer)g(can)h(do)f(so.)46 b(This)32 b(is)g(fundamen)m(tally)g
-(incom-)150 4792 y(patible)j(with)e(the)h(aim)h(of)f(protecting)h
-(users')e(freedom)h(to)h(c)m(hange)g(the)f(soft)m(w)m(are.)53
-b(The)33 b(systematic)150 4902 y(pattern)j(of)g(suc)m(h)g(abuse)f(o)s
-(ccurs)h(in)f(the)i(area)f(of)g(pro)s(ducts)f(for)h(individuals)f(to)h
-(use,)i(whic)m(h)d(is)h(pre-)150 5011 y(cisely)d(where)e(it)h(is)f
-(most)h(unacceptable.)46 b(Therefore,)32 b(w)m(e)g(ha)m(v)m(e)h
-(designed)e(this)g(v)m(ersion)h(of)g(the)g(GPL)150 5121
-y(to)38 b(prohibit)e(the)i(practice)g(for)f(those)h(pro)s(ducts.)60
-b(If)37 b(suc)m(h)f(problems)h(arise)h(substan)m(tially)g(in)f(other)
-150 5230 y(domains,)28 b(w)m(e)f(stand)g(ready)g(to)h(extend)f(this)g
-(pro)m(vision)g(to)h(those)f(domains)g(in)g(future)f(v)m(ersions)i(of)f
-(the)150 5340 y(GPL,)k(as)f(needed)g(to)h(protect)h(the)e(freedom)h(of)
-f(users.)p eop end
-%%Page: 2 4
-TeXDict begin 2 3 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(2)275 299 y(Finally)-8 b(,)34 b(ev)m(ery)f(program)f
-(is)g(threatened)h(constan)m(tly)h(b)m(y)e(soft)m(w)m(are)i(paten)m
-(ts.)47 b(States)33 b(should)f(not)150 408 y(allo)m(w)25
-b(paten)m(ts)e(to)h(restrict)g(dev)m(elopmen)m(t)g(and)f(use)g(of)g
-(soft)m(w)m(are)h(on)f(general-purp)s(ose)g(computers,)i(but)150
-518 y(in)h(those)h(that)g(do,)g(w)m(e)g(wish)f(to)h(a)m(v)m(oid)h(the)e
-(sp)s(ecial)h(danger)f(that)h(paten)m(ts)h(applied)e(to)h(a)g(free)f
-(program)150 628 y(could)h(mak)m(e)i(it)f(e\013ectiv)m(ely)i
-(proprietary)-8 b(.)40 b(T)-8 b(o)28 b(prev)m(en)m(t)g(this,)g(the)g
-(GPL)f(assures)g(that)h(paten)m(ts)g(cannot)150 737 y(b)s(e)i(used)f
-(to)i(render)f(the)g(program)g(non-free.)275 881 y(The)f(precise)i
-(terms)f(and)g(conditions)h(for)f(cop)m(ying,)i(distribution)d(and)h
-(mo)s(di\014cation)h(follo)m(w.)150 1128 y Fu(TERMS)44
-b(AND)h(CONDITIONS)199 1287 y Fv(0.)61 b(De\014nitions.)330
-1427 y(\\This)30 b(License")h(refers)f(to)i(v)m(ersion)e(3)h(of)g(the)f
-(GNU)h(General)g(Public)g(License.)330 1566 y(\\Cop)m(yrigh)m(t")e
-(also)g(means)e(cop)m(yrigh)m(t-lik)m(e)k(la)m(ws)d(that)g(apply)f(to)h
-(other)g(kinds)f(of)g(w)m(orks,)h(suc)m(h)g(as)330 1676
-y(semiconductor)j(masks.)330 1815 y(\\The)40 b(Program")h(refers)f(to)g
-(an)m(y)h(cop)m(yrigh)m(table)h(w)m(ork)e(licensed)h(under)e(this)h
-(License.)70 b(Eac)m(h)330 1924 y(licensee)43 b(is)f(addressed)f(as)h
-(\\y)m(ou".)76 b(\\Licensees")44 b(and)d(\\recipien)m(ts")i(ma)m(y)g(b)
-s(e)e(individuals)g(or)330 2034 y(organizations.)330
-2173 y(T)-8 b(o)32 b(\\mo)s(dify")g(a)g(w)m(ork)g(means)g(to)h(cop)m(y)
-f(from)g(or)f(adapt)h(all)h(or)f(part)g(of)g(the)g(w)m(ork)f(in)h(a)g
-(fashion)330 2283 y(requiring)d(cop)m(yrigh)m(t)h(p)s(ermission,)e
-(other)i(than)f(the)g(making)g(of)g(an)g(exact)i(cop)m(y)-8
-b(.)41 b(The)29 b(resulting)330 2392 y(w)m(ork)f(is)f(called)i(a)f
-(\\mo)s(di\014ed)f(v)m(ersion")i(of)f(the)g(earlier)g(w)m(ork)g(or)g(a)
-g(w)m(ork)f(\\based)h(on")g(the)g(earlier)330 2502 y(w)m(ork.)330
-2641 y(A)k(\\co)m(v)m(ered)i(w)m(ork")f(means)f(either)g(the)g(unmo)s
-(di\014ed)e(Program)i(or)g(a)h(w)m(ork)f(based)g(on)g(the)g(Pro-)330
-2751 y(gram.)330 2890 y(T)-8 b(o)31 b(\\propagate")i(a)e(w)m(ork)g
-(means)g(to)h(do)e(an)m(ything)i(with)e(it)h(that,)h(without)f(p)s
-(ermission,)f(w)m(ould)330 3000 y(mak)m(e)c(y)m(ou)e(directly)i(or)e
-(secondarily)h(liable)h(for)e(infringemen)m(t)h(under)e(applicable)i
-(cop)m(yrigh)m(t)h(la)m(w,)330 3109 y(except)34 b(executing)g(it)g(on)e
-(a)i(computer)f(or)f(mo)s(difying)h(a)g(priv)-5 b(ate)33
-b(cop)m(y)-8 b(.)50 b(Propagation)34 b(includes)330 3219
-y(cop)m(ying,)39 b(distribution)c(\(with)h(or)h(without)f(mo)s
-(di\014cation\),)i(making)f(a)m(v)-5 b(ailable)38 b(to)f(the)f(public,)
-330 3329 y(and)30 b(in)g(some)h(coun)m(tries)g(other)f(activities)j(as)
-e(w)m(ell.)330 3468 y(T)-8 b(o)28 b(\\con)m(v)m(ey")j(a)d(w)m(ork)g
-(means)g(an)m(y)g(kind)f(of)h(propagation)h(that)g(enables)f(other)g
-(parties)g(to)h(mak)m(e)330 3577 y(or)k(receiv)m(e)j(copies.)50
-b(Mere)34 b(in)m(teraction)i(with)d(a)g(user)g(through)g(a)g(computer)h
-(net)m(w)m(ork,)h(with)e(no)330 3687 y(transfer)d(of)g(a)h(cop)m(y)-8
-b(,)32 b(is)e(not)h(con)m(v)m(eying.)330 3826 y(An)25
-b(in)m(teractiv)m(e)k(user)c(in)m(terface)j(displa)m(ys)e
-(\\Appropriate)g(Legal)h(Notices")h(to)f(the)f(exten)m(t)h(that)f(it)
-330 3936 y(includes)k(a)g(con)m(v)m(enien)m(t)j(and)c(prominen)m(tly)h
-(visible)h(feature)g(that)f(\(1\))i(displa)m(ys)e(an)g(appropriate)330
-4045 y(cop)m(yrigh)m(t)j(notice,)h(and)d(\(2\))i(tells)f(the)g(user)f
-(that)i(there)e(is)h(no)g(w)m(arran)m(t)m(y)g(for)g(the)g(w)m(ork)g
-(\(except)330 4155 y(to)e(the)g(exten)m(t)h(that)f(w)m(arran)m(ties)g
-(are)g(pro)m(vided\),)g(that)g(licensees)g(ma)m(y)g(con)m(v)m(ey)h(the)
-f(w)m(ork)f(under)330 4265 y(this)37 b(License,)i(and)e(ho)m(w)g(to)g
-(view)h(a)f(cop)m(y)h(of)f(this)g(License.)61 b(If)36
-b(the)i(in)m(terface)g(presen)m(ts)f(a)g(list)330 4374
-y(of)32 b(user)e(commands)h(or)h(options,)g(suc)m(h)f(as)g(a)h(men)m
-(u,)f(a)h(prominen)m(t)f(item)h(in)f(the)h(list)g(meets)g(this)330
-4484 y(criterion.)199 4623 y(1.)61 b(Source)30 b(Co)s(de.)330
-4762 y(The)g(\\source)i(co)s(de")f(for)g(a)g(w)m(ork)g(means)g(the)g
-(preferred)f(form)g(of)h(the)g(w)m(ork)g(for)g(making)g(mo)s(di-)330
-4872 y(\014cations)g(to)g(it.)41 b(\\Ob)5 b(ject)31 b(co)s(de")g(means)
-g(an)m(y)f(non-source)h(form)f(of)g(a)h(w)m(ork.)330
-5011 y(A)36 b(\\Standard)f(In)m(terface")i(means)f(an)f(in)m(terface)i
-(that)g(either)f(is)g(an)f(o\016cial)i(standard)e(de\014ned)330
-5121 y(b)m(y)e(a)g(recognized)i(standards)d(b)s(o)s(dy)-8
-b(,)33 b(or,)h(in)f(the)g(case)h(of)f(in)m(terfaces)i(sp)s(eci\014ed)d
-(for)h(a)h(particular)330 5230 y(programming)44 b(language,)49
-b(one)c(that)f(is)g(widely)h(used)e(among)i(dev)m(elop)s(ers)f(w)m
-(orking)h(in)e(that)330 5340 y(language.)p eop end
-%%Page: 3 5
-TeXDict begin 3 4 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(3)330 299 y(The)24 b(\\System)g(Libraries")g(of)g(an)g
-(executable)i(w)m(ork)e(include)f(an)m(ything,)j(other)f(than)e(the)i
-(w)m(ork)f(as)330 408 y(a)k(whole,)g(that)g(\(a\))g(is)f(included)g(in)
-g(the)g(normal)g(form)g(of)h(pac)m(k)-5 b(aging)29 b(a)e(Ma)5
-b(jor)28 b(Comp)s(onen)m(t,)g(but)330 518 y(whic)m(h)33
-b(is)g(not)h(part)f(of)h(that)g(Ma)5 b(jor)34 b(Comp)s(onen)m(t,)g(and)
-e(\(b\))i(serv)m(es)g(only)f(to)h(enable)g(use)f(of)h(the)330
-628 y(w)m(ork)c(with)g(that)g(Ma)5 b(jor)31 b(Comp)s(onen)m(t,)e(or)h
-(to)h(implemen)m(t)g(a)f(Standard)f(In)m(terface)i(for)e(whic)m(h)h(an)
-330 737 y(implemen)m(tation)g(is)e(a)m(v)-5 b(ailable)30
-b(to)f(the)f(public)g(in)f(source)i(co)s(de)f(form.)39
-b(A)29 b(\\Ma)5 b(jor)29 b(Comp)s(onen)m(t",)330 847
-y(in)38 b(this)g(con)m(text,)k(means)c(a)g(ma)5 b(jor)38
-b(essen)m(tial)i(comp)s(onen)m(t)e(\(k)m(ernel,)j(windo)m(w)d(system,)i
-(and)e(so)330 956 y(on\))c(of)g(the)g(sp)s(eci\014c)f(op)s(erating)h
-(system)g(\(if)g(an)m(y\))h(on)e(whic)m(h)h(the)g(executable)h(w)m(ork)
-f(runs,)f(or)h(a)330 1066 y(compiler)d(used)f(to)h(pro)s(duce)e(the)h
-(w)m(ork,)h(or)f(an)h(ob)5 b(ject)31 b(co)s(de)g(in)m(terpreter)f(used)
-g(to)h(run)e(it.)330 1212 y(The)f(\\Corresp)s(onding)g(Source")h(for)f
-(a)h(w)m(ork)g(in)g(ob)5 b(ject)29 b(co)s(de)g(form)g(means)f(all)i
-(the)f(source)g(co)s(de)330 1322 y(needed)35 b(to)h(generate,)i
-(install,)f(and)e(\(for)g(an)h(executable)g(w)m(ork\))g(run)e(the)h(ob)
-5 b(ject)36 b(co)s(de)g(and)e(to)330 1431 y(mo)s(dify)39
-b(the)g(w)m(ork,)j(including)d(scripts)g(to)i(con)m(trol)f(those)g
-(activities.)71 b(Ho)m(w)m(ev)m(er,)44 b(it)c(do)s(es)f(not)330
-1541 y(include)i(the)h(w)m(ork's)g(System)g(Libraries,)i(or)e
-(general-purp)s(ose)f(to)s(ols)i(or)f(generally)h(a)m(v)-5
-b(ailable)330 1650 y(free)31 b(programs)g(whic)m(h)g(are)h(used)e(unmo)
-s(di\014ed)f(in)i(p)s(erforming)f(those)h(activities)j(but)d(whic)m(h)g
-(are)330 1760 y(not)g(part)f(of)h(the)g(w)m(ork.)42 b(F)-8
-b(or)32 b(example,)f(Corresp)s(onding)e(Source)i(includes)f(in)m
-(terface)i(de\014nition)330 1870 y(\014les)g(asso)s(ciated)i(with)d
-(source)i(\014les)f(for)g(the)g(w)m(ork,)h(and)f(the)g(source)g(co)s
-(de)h(for)e(shared)h(libraries)330 1979 y(and)g(dynamically)g(link)m
-(ed)h(subprograms)e(that)h(the)h(w)m(ork)f(is)g(sp)s(eci\014cally)h
-(designed)f(to)h(require,)330 2089 y(suc)m(h)k(as)g(b)m(y)g(in)m
-(timate)i(data)e(comm)m(unication)i(or)e(con)m(trol)h(\015o)m(w)f(b)s
-(et)m(w)m(een)h(those)f(subprograms)330 2198 y(and)30
-b(other)g(parts)g(of)h(the)g(w)m(ork.)330 2345 y(The)h(Corresp)s
-(onding)f(Source)i(need)f(not)h(include)f(an)m(ything)i(that)f(users)f
-(can)h(regenerate)h(auto-)330 2454 y(matically)e(from)e(other)h(parts)f
-(of)h(the)f(Corresp)s(onding)f(Source.)330 2600 y(The)h(Corresp)s
-(onding)e(Source)j(for)f(a)h(w)m(ork)f(in)g(source)h(co)s(de)f(form)g
-(is)h(that)f(same)h(w)m(ork.)199 2746 y(2.)61 b(Basic)32
-b(P)m(ermissions.)330 2892 y(All)44 b(righ)m(ts)f(gran)m(ted)g(under)f
-(this)h(License)g(are)g(gran)m(ted)h(for)f(the)g(term)g(of)g(cop)m
-(yrigh)m(t)h(on)f(the)330 3002 y(Program,)29 b(and)e(are)i(irrev)m(o)s
-(cable)g(pro)m(vided)f(the)g(stated)h(conditions)g(are)f(met.)40
-b(This)28 b(License)g(ex-)330 3112 y(plicitly)h(a\016rms)e(y)m(our)h
-(unlimited)g(p)s(ermission)e(to)j(run)d(the)i(unmo)s(di\014ed)e
-(Program.)40 b(The)27 b(output)330 3221 y(from)37 b(running)e(a)j(co)m
-(v)m(ered)h(w)m(ork)e(is)g(co)m(v)m(ered)i(b)m(y)e(this)h(License)f
-(only)h(if)f(the)g(output,)i(giv)m(en)g(its)330 3331
-y(con)m(ten)m(t,)33 b(constitutes)f(a)g(co)m(v)m(ered)g(w)m(ork.)42
-b(This)31 b(License)g(ac)m(kno)m(wledges)i(y)m(our)e(righ)m(ts)g(of)g
-(fair)g(use)330 3440 y(or)f(other)h(equiv)-5 b(alen)m(t,)32
-b(as)f(pro)m(vided)f(b)m(y)g(cop)m(yrigh)m(t)i(la)m(w.)330
-3587 y(Y)-8 b(ou)41 b(ma)m(y)h(mak)m(e,)i(run)c(and)g(propagate)i(co)m
-(v)m(ered)g(w)m(orks)f(that)g(y)m(ou)h(do)e(not)h(con)m(v)m(ey)-8
-b(,)46 b(without)330 3696 y(conditions)30 b(so)f(long)h(as)g(y)m(our)f
-(license)h(otherwise)g(remains)f(in)g(force.)41 b(Y)-8
-b(ou)30 b(ma)m(y)f(con)m(v)m(ey)i(co)m(v)m(ered)330 3806
-y(w)m(orks)40 b(to)g(others)g(for)g(the)g(sole)g(purp)s(ose)e(of)i(ha)m
-(ving)h(them)e(mak)m(e)i(mo)s(di\014cations)f(exclusiv)m(ely)330
-3915 y(for)45 b(y)m(ou,)50 b(or)45 b(pro)m(vide)h(y)m(ou)f(with)g
-(facilities)j(for)d(running)f(those)h(w)m(orks,)50 b(pro)m(vided)45
-b(that)h(y)m(ou)330 4025 y(comply)34 b(with)f(the)h(terms)f(of)h(this)f
-(License)i(in)e(con)m(v)m(eying)i(all)g(material)g(for)e(whic)m(h)g(y)m
-(ou)h(do)g(not)330 4134 y(con)m(trol)i(cop)m(yrigh)m(t.)55
-b(Those)35 b(th)m(us)f(making)h(or)g(running)e(the)i(co)m(v)m(ered)h(w)
-m(orks)f(for)f(y)m(ou)h(m)m(ust)g(do)330 4244 y(so)29
-b(exclusiv)m(ely)h(on)e(y)m(our)g(b)s(ehalf,)h(under)d(y)m(our)j
-(direction)g(and)f(con)m(trol,)i(on)e(terms)h(that)g(prohibit)330
-4354 y(them)35 b(from)g(making)g(an)m(y)h(copies)g(of)f(y)m(our)h(cop)m
-(yrigh)m(ted)g(material)h(outside)e(their)h(relationship)330
-4463 y(with)30 b(y)m(ou.)330 4609 y(Con)m(v)m(eying)46
-b(under)d(an)m(y)i(other)g(circumstances)g(is)g(p)s(ermitted)g(solely)g
-(under)f(the)g(conditions)330 4719 y(stated)31 b(b)s(elo)m(w.)41
-b(Sublicensing)30 b(is)g(not)h(allo)m(w)m(ed;)h(section)g(10)f(mak)m
-(es)g(it)g(unnecessary)-8 b(.)199 4865 y(3.)61 b(Protecting)32
-b(Users')e(Legal)i(Righ)m(ts)f(F)-8 b(rom)31 b(An)m(ti-Circum)m(v)m(en)
-m(tion)i(La)m(w.)330 5011 y(No)44 b(co)m(v)m(ered)i(w)m(ork)d(shall)h
-(b)s(e)g(deemed)f(part)h(of)g(an)f(e\013ectiv)m(e)k(tec)m(hnological)g
-(measure)c(under)330 5121 y(an)m(y)30 b(applicable)h(la)m(w)f
-(ful\014lling)g(obligations)h(under)e(article)i(11)g(of)f(the)g(WIPO)f
-(cop)m(yrigh)m(t)i(treat)m(y)330 5230 y(adopted)e(on)f(20)i(Decem)m(b)s
-(er)f(1996,)i(or)e(similar)g(la)m(ws)g(prohibiting)f(or)h(restricting)g
-(circum)m(v)m(en)m(tion)330 5340 y(of)i(suc)m(h)f(measures.)p
-eop end
-%%Page: 4 6
-TeXDict begin 4 5 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(4)330 299 y(When)25 b(y)m(ou)h(con)m(v)m(ey)g(a)g(co)m
-(v)m(ered)h(w)m(ork,)f(y)m(ou)g(w)m(aiv)m(e)h(an)m(y)e(legal)i(p)s(o)m
-(w)m(er)f(to)g(forbid)e(circum)m(v)m(en)m(tion)j(of)330
-408 y(tec)m(hnological)j(measures)d(to)g(the)g(exten)m(t)h(suc)m(h)e
-(circum)m(v)m(en)m(tion)j(is)d(e\013ected)i(b)m(y)f(exercising)g(righ)m
-(ts)330 518 y(under)35 b(this)h(License)h(with)e(resp)s(ect)i(to)g(the)
-f(co)m(v)m(ered)i(w)m(ork,)g(and)d(y)m(ou)i(disclaim)g(an)m(y)f(in)m
-(ten)m(tion)330 628 y(to)41 b(limit)g(op)s(eration)g(or)f(mo)s
-(di\014cation)h(of)g(the)f(w)m(ork)h(as)f(a)h(means)f(of)h(enforcing,)i
-(against)f(the)330 737 y(w)m(ork's)28 b(users,)f(y)m(our)h(or)f(third)g
-(parties')h(legal)h(righ)m(ts)f(to)g(forbid)f(circum)m(v)m(en)m(tion)i
-(of)e(tec)m(hnological)330 847 y(measures.)199 982 y(4.)61
-b(Con)m(v)m(eying)31 b(V)-8 b(erbatim)32 b(Copies.)330
-1117 y(Y)-8 b(ou)28 b(ma)m(y)g(con)m(v)m(ey)h(v)m(erbatim)f(copies)g
-(of)g(the)f(Program's)h(source)g(co)s(de)f(as)h(y)m(ou)f(receiv)m(e)j
-(it,)f(in)e(an)m(y)330 1226 y(medium,)33 b(pro)m(vided)g(that)h(y)m(ou)
-f(conspicuously)g(and)g(appropriately)g(publish)f(on)h(eac)m(h)h(cop)m
-(y)g(an)330 1336 y(appropriate)e(cop)m(yrigh)m(t)i(notice;)g(k)m(eep)f
-(in)m(tact)h(all)f(notices)g(stating)h(that)e(this)g(License)h(and)f
-(an)m(y)330 1445 y(non-p)s(ermissiv)m(e)d(terms)g(added)f(in)h(accord)h
-(with)f(section)h(7)f(apply)g(to)h(the)f(co)s(de;)h(k)m(eep)g(in)m
-(tact)h(all)330 1555 y(notices)37 b(of)f(the)g(absence)g(of)g(an)m(y)g
-(w)m(arran)m(t)m(y;)j(and)c(giv)m(e)i(all)g(recipien)m(ts)f(a)h(cop)m
-(y)f(of)g(this)f(License)330 1665 y(along)c(with)f(the)h(Program.)330
-1799 y(Y)-8 b(ou)27 b(ma)m(y)g(c)m(harge)h(an)m(y)f(price)g(or)f(no)h
-(price)f(for)h(eac)m(h)g(cop)m(y)h(that)f(y)m(ou)g(con)m(v)m(ey)-8
-b(,)29 b(and)d(y)m(ou)h(ma)m(y)h(o\013er)330 1909 y(supp)s(ort)h(or)h
-(w)m(arran)m(t)m(y)h(protection)h(for)e(a)h(fee.)199
-2044 y(5.)61 b(Con)m(v)m(eying)31 b(Mo)s(di\014ed)f(Source)g(V)-8
-b(ersions.)330 2179 y(Y)g(ou)27 b(ma)m(y)g(con)m(v)m(ey)h(a)f(w)m(ork)g
-(based)f(on)h(the)g(Program,)g(or)g(the)g(mo)s(di\014cations)g(to)g
-(pro)s(duce)e(it)i(from)330 2288 y(the)36 b(Program,)h(in)e(the)g(form)
-g(of)g(source)h(co)s(de)g(under)d(the)j(terms)f(of)h(section)g(4,)h
-(pro)m(vided)e(that)330 2398 y(y)m(ou)c(also)g(meet)g(all)h(of)e(these)
-h(conditions:)379 2533 y(a.)61 b(The)28 b(w)m(ork)h(m)m(ust)f(carry)h
-(prominen)m(t)f(notices)i(stating)g(that)f(y)m(ou)g(mo)s(di\014ed)e
-(it,)j(and)e(giving)i(a)510 2642 y(relev)-5 b(an)m(t)32
-b(date.)374 2777 y(b.)60 b(The)34 b(w)m(ork)h(m)m(ust)f(carry)h
-(prominen)m(t)f(notices)i(stating)g(that)f(it)g(is)g(released)g(under)e
-(this)i(Li-)510 2887 y(cense)i(and)f(an)m(y)h(conditions)h(added)e
-(under)f(section)j(7.)60 b(This)36 b(requiremen)m(t)h(mo)s(di\014es)f
-(the)510 2996 y(requiremen)m(t)31 b(in)f(section)h(4)g(to)g(\\k)m(eep)h
-(in)m(tact)g(all)f(notices".)384 3131 y(c.)61 b(Y)-8
-b(ou)36 b(m)m(ust)g(license)g(the)g(en)m(tire)h(w)m(ork,)g(as)f(a)g
-(whole,)h(under)d(this)i(License)g(to)h(an)m(y)m(one)f(who)510
-3241 y(comes)31 b(in)m(to)g(p)s(ossession)e(of)h(a)h(cop)m(y)-8
-b(.)41 b(This)29 b(License)i(will)f(therefore)h(apply)-8
-b(,)30 b(along)h(with)f(an)m(y)510 3351 y(applicable)k(section)f(7)g
-(additional)h(terms,)f(to)h(the)e(whole)h(of)g(the)g(w)m(ork,)g(and)f
-(all)i(its)f(parts,)510 3460 y(regardless)h(of)g(ho)m(w)g(they)g(are)g
-(pac)m(k)-5 b(aged.)52 b(This)33 b(License)h(giv)m(es)h(no)f(p)s
-(ermission)e(to)j(license)510 3570 y(the)c(w)m(ork)h(in)f(an)m(y)g
-(other)h(w)m(a)m(y)-8 b(,)33 b(but)d(it)i(do)s(es)f(not)g(in)m(v)-5
-b(alidate)33 b(suc)m(h)e(p)s(ermission)f(if)h(y)m(ou)h(ha)m(v)m(e)510
-3679 y(separately)g(receiv)m(ed)f(it.)374 3814 y(d.)60
-b(If)36 b(the)h(w)m(ork)g(has)g(in)m(teractiv)m(e)j(user)c(in)m
-(terfaces,)k(eac)m(h)e(m)m(ust)f(displa)m(y)g(Appropriate)g(Legal)510
-3924 y(Notices;)49 b(ho)m(w)m(ev)m(er,)c(if)c(the)h(Program)f(has)g(in)
-m(teractiv)m(e)j(in)m(terfaces)e(that)g(do)f(not)h(displa)m(y)510
-4033 y(Appropriate)30 b(Legal)i(Notices,)g(y)m(our)f(w)m(ork)f(need)g
-(not)h(mak)m(e)g(them)g(do)f(so.)330 4194 y(A)38 b(compilation)h(of)f
-(a)g(co)m(v)m(ered)h(w)m(ork)f(with)f(other)h(separate)h(and)e(indep)s
-(enden)m(t)f(w)m(orks,)k(whic)m(h)330 4303 y(are)c(not)g(b)m(y)g(their)
-g(nature)f(extensions)h(of)g(the)g(co)m(v)m(ered)i(w)m(ork,)f(and)e
-(whic)m(h)h(are)g(not)g(com)m(bined)330 4413 y(with)27
-b(it)i(suc)m(h)e(as)h(to)h(form)e(a)h(larger)h(program,)f(in)f(or)h(on)
-g(a)g(v)m(olume)g(of)g(a)h(storage)g(or)f(distribution)330
-4522 y(medium,)43 b(is)f(called)g(an)g(\\aggregate")j(if)c(the)h
-(compilation)h(and)e(its)g(resulting)h(cop)m(yrigh)m(t)h(are)330
-4632 y(not)31 b(used)f(to)h(limit)h(the)e(access)i(or)f(legal)h(righ)m
-(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m(ond)g(what)h(the)330
-4741 y(individual)j(w)m(orks)h(p)s(ermit.)54 b(Inclusion)34
-b(of)h(a)h(co)m(v)m(ered)g(w)m(ork)f(in)g(an)g(aggregate)j(do)s(es)c
-(not)h(cause)330 4851 y(this)30 b(License)h(to)g(apply)f(to)h(the)g
-(other)g(parts)f(of)g(the)h(aggregate.)199 4986 y(6.)61
-b(Con)m(v)m(eying)31 b(Non-Source)g(F)-8 b(orms.)330
-5121 y(Y)g(ou)29 b(ma)m(y)h(con)m(v)m(ey)g(a)f(co)m(v)m(ered)i(w)m(ork)
-e(in)f(ob)5 b(ject)30 b(co)s(de)f(form)f(under)g(the)h(terms)f(of)h
-(sections)h(4)g(and)330 5230 y(5,)42 b(pro)m(vided)d(that)g(y)m(ou)h
-(also)g(con)m(v)m(ey)g(the)g(mac)m(hine-readable)g(Corresp)s(onding)e
-(Source)g(under)330 5340 y(the)31 b(terms)f(of)g(this)h(License,)g(in)f
-(one)h(of)f(these)h(w)m(a)m(ys:)p eop end
-%%Page: 5 7
-TeXDict begin 5 6 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(5)379 299 y(a.)61 b(Con)m(v)m(ey)32 b(the)f(ob)5
-b(ject)31 b(co)s(de)g(in,)g(or)g(em)m(b)s(o)s(died)f(in,)h(a)g(ph)m
-(ysical)h(pro)s(duct)d(\(including)i(a)g(ph)m(ys-)510
-408 y(ical)37 b(distribution)d(medium\),)j(accompanied)f(b)m(y)f(the)h
-(Corresp)s(onding)d(Source)j(\014xed)e(on)i(a)510 518
-y(durable)30 b(ph)m(ysical)h(medium)e(customarily)i(used)f(for)g(soft)m
-(w)m(are)i(in)m(terc)m(hange.)374 655 y(b.)60 b(Con)m(v)m(ey)30
-b(the)f(ob)5 b(ject)30 b(co)s(de)f(in,)g(or)g(em)m(b)s(o)s(died)f(in,)h
-(a)g(ph)m(ysical)g(pro)s(duct)f(\(including)h(a)g(ph)m(ysi-)510
-765 y(cal)k(distribution)e(medium\),)h(accompanied)h(b)m(y)e(a)i
-(written)f(o\013er,)g(v)-5 b(alid)33 b(for)e(at)i(least)g(three)510
-874 y(y)m(ears)i(and)f(v)-5 b(alid)35 b(for)f(as)g(long)h(as)g(y)m(ou)g
-(o\013er)f(spare)h(parts)f(or)g(customer)h(supp)s(ort)d(for)i(that)510
-984 y(pro)s(duct)c(mo)s(del,)i(to)g(giv)m(e)g(an)m(y)m(one)h(who)d(p)s
-(ossesses)h(the)h(ob)5 b(ject)32 b(co)s(de)f(either)h(\(1\))g(a)g(cop)m
-(y)g(of)510 1093 y(the)24 b(Corresp)s(onding)e(Source)i(for)g(all)h
-(the)f(soft)m(w)m(are)h(in)f(the)g(pro)s(duct)f(that)i(is)f(co)m(v)m
-(ered)h(b)m(y)f(this)510 1203 y(License,)30 b(on)g(a)f(durable)g(ph)m
-(ysical)h(medium)e(customarily)i(used)f(for)g(soft)m(w)m(are)i(in)m
-(terc)m(hange,)510 1313 y(for)k(a)g(price)h(no)f(more)g(than)g(y)m(our)
-g(reasonable)h(cost)g(of)f(ph)m(ysically)h(p)s(erforming)e(this)h(con-)
-510 1422 y(v)m(eying)f(of)f(source,)g(or)g(\(2\))h(access)g(to)g(cop)m
-(y)f(the)g(Corresp)s(onding)e(Source)i(from)f(a)h(net)m(w)m(ork)510
-1532 y(serv)m(er)e(at)g(no)f(c)m(harge.)384 1669 y(c.)61
-b(Con)m(v)m(ey)40 b(individual)e(copies)h(of)g(the)g(ob)5
-b(ject)40 b(co)s(de)f(with)g(a)g(cop)m(y)g(of)g(the)g(written)g
-(o\013er)g(to)510 1778 y(pro)m(vide)e(the)g(Corresp)s(onding)e(Source.)
-59 b(This)36 b(alternativ)m(e)k(is)c(allo)m(w)m(ed)j(only)e(o)s
-(ccasionally)510 1888 y(and)29 b(noncommercially)-8 b(,)31
-b(and)e(only)g(if)h(y)m(ou)f(receiv)m(ed)i(the)e(ob)5
-b(ject)31 b(co)s(de)e(with)g(suc)m(h)g(an)g(o\013er,)510
-1998 y(in)h(accord)h(with)f(subsection)h(6b.)374 2134
-y(d.)60 b(Con)m(v)m(ey)37 b(the)f(ob)5 b(ject)37 b(co)s(de)f(b)m(y)g
-(o\013ering)g(access)i(from)d(a)i(designated)f(place)h(\(gratis)g(or)f
-(for)510 2244 y(a)j(c)m(harge\),)k(and)c(o\013er)g(equiv)-5
-b(alen)m(t)41 b(access)f(to)g(the)f(Corresp)s(onding)e(Source)i(in)f
-(the)i(same)510 2354 y(w)m(a)m(y)30 b(through)f(the)g(same)h(place)h
-(at)f(no)f(further)f(c)m(harge.)41 b(Y)-8 b(ou)30 b(need)f(not)h
-(require)f(recipien)m(ts)510 2463 y(to)42 b(cop)m(y)h(the)f(Corresp)s
-(onding)e(Source)h(along)i(with)f(the)g(ob)5 b(ject)42
-b(co)s(de.)75 b(If)42 b(the)f(place)i(to)510 2573 y(cop)m(y)c(the)g(ob)
-5 b(ject)39 b(co)s(de)g(is)g(a)g(net)m(w)m(ork)g(serv)m(er,)i(the)e
-(Corresp)s(onding)e(Source)h(ma)m(y)h(b)s(e)f(on)510
-2682 y(a)45 b(di\013eren)m(t)g(serv)m(er)f(\(op)s(erated)h(b)m(y)f(y)m
-(ou)h(or)g(a)f(third)g(part)m(y\))h(that)g(supp)s(orts)d(equiv)-5
-b(alen)m(t)510 2792 y(cop)m(ying)35 b(facilities,)i(pro)m(vided)c(y)m
-(ou)h(main)m(tain)h(clear)g(directions)f(next)g(to)h(the)f(ob)5
-b(ject)35 b(co)s(de)510 2902 y(sa)m(ying)h(where)f(to)h(\014nd)d(the)i
-(Corresp)s(onding)f(Source.)55 b(Regardless)35 b(of)h(what)f(serv)m(er)
-g(hosts)510 3011 y(the)e(Corresp)s(onding)e(Source,)j(y)m(ou)f(remain)f
-(obligated)j(to)e(ensure)f(that)i(it)f(is)g(a)m(v)-5
-b(ailable)35 b(for)510 3121 y(as)c(long)g(as)f(needed)g(to)h(satisfy)g
-(these)g(requiremen)m(ts.)384 3258 y(e.)61 b(Con)m(v)m(ey)24
-b(the)g(ob)5 b(ject)24 b(co)s(de)f(using)g(p)s(eer-to-p)s(eer)h
-(transmission,)g(pro)m(vided)f(y)m(ou)h(inform)f(other)510
-3367 y(p)s(eers)d(where)g(the)h(ob)5 b(ject)22 b(co)s(de)f(and)f
-(Corresp)s(onding)f(Source)i(of)g(the)g(w)m(ork)g(are)g(b)s(eing)g
-(o\013ered)510 3477 y(to)31 b(the)g(general)g(public)f(at)h(no)f(c)m
-(harge)i(under)d(subsection)h(6d.)330 3641 y(A)35 b(separable)f(p)s
-(ortion)g(of)h(the)g(ob)5 b(ject)35 b(co)s(de,)h(whose)e(source)h(co)s
-(de)g(is)f(excluded)g(from)g(the)h(Cor-)330 3751 y(resp)s(onding)c
-(Source)h(as)h(a)g(System)f(Library)-8 b(,)33 b(need)f(not)h(b)s(e)e
-(included)h(in)g(con)m(v)m(eying)i(the)f(ob)5 b(ject)330
-3861 y(co)s(de)31 b(w)m(ork.)330 3998 y(A)h(\\User)g(Pro)s(duct")f(is)h
-(either)g(\(1\))g(a)g(\\consumer)g(pro)s(duct",)f(whic)m(h)h(means)f
-(an)m(y)h(tangible)h(p)s(er-)330 4107 y(sonal)g(prop)s(ert)m(y)g(whic)m
-(h)f(is)h(normally)h(used)e(for)h(p)s(ersonal,)g(family)-8
-b(,)35 b(or)e(household)f(purp)s(oses,)g(or)330 4217
-y(\(2\))26 b(an)m(ything)f(designed)f(or)h(sold)g(for)f(incorp)s
-(oration)h(in)m(to)h(a)f(dw)m(elling.)39 b(In)24 b(determining)h
-(whether)330 4326 y(a)30 b(pro)s(duct)e(is)h(a)h(consumer)f(pro)s
-(duct,)f(doubtful)h(cases)h(shall)g(b)s(e)e(resolv)m(ed)j(in)e(fa)m(v)m
-(or)h(of)g(co)m(v)m(erage.)330 4436 y(F)-8 b(or)42 b(a)g(particular)g
-(pro)s(duct)f(receiv)m(ed)i(b)m(y)e(a)h(particular)g(user,)i
-(\\normally)f(used")e(refers)g(to)i(a)330 4545 y(t)m(ypical)e(or)e
-(common)h(use)e(of)i(that)g(class)g(of)f(pro)s(duct,)h(regardless)g(of)
-f(the)h(status)f(of)h(the)f(par-)330 4655 y(ticular)d(user)e(or)h(of)h
-(the)f(w)m(a)m(y)h(in)f(whic)m(h)f(the)i(particular)f(user)g(actually)h
-(uses,)g(or)f(exp)s(ects)h(or)f(is)330 4765 y(exp)s(ected)d(to)g(use,)g
-(the)g(pro)s(duct.)43 b(A)32 b(pro)s(duct)f(is)g(a)h(consumer)f(pro)s
-(duct)g(regardless)h(of)g(whether)330 4874 y(the)h(pro)s(duct)f(has)h
-(substan)m(tial)g(commercial,)j(industrial)c(or)h(non-consumer)g(uses,)
-g(unless)f(suc)m(h)330 4984 y(uses)e(represen)m(t)g(the)h(only)f
-(signi\014can)m(t)i(mo)s(de)e(of)g(use)g(of)h(the)f(pro)s(duct.)330
-5121 y(\\Installation)h(Information")e(for)g(a)g(User)g(Pro)s(duct)f
-(means)g(an)m(y)i(metho)s(ds,)e(pro)s(cedures,)g(autho-)330
-5230 y(rization)d(k)m(eys,)g(or)f(other)f(information)h(required)f(to)h
-(install)g(and)f(execute)i(mo)s(di\014ed)d(v)m(ersions)i(of)g(a)330
-5340 y(co)m(v)m(ered)h(w)m(ork)e(in)g(that)h(User)f(Pro)s(duct)f(from)h
-(a)h(mo)s(di\014ed)e(v)m(ersion)h(of)h(its)f(Corresp)s(onding)f
-(Source.)p eop end
-%%Page: 6 8
-TeXDict begin 6 7 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(6)330 299 y(The)30 b(information)h(m)m(ust)f(su\016ce)g
-(to)i(ensure)d(that)i(the)g(con)m(tin)m(ued)g(functioning)g(of)f(the)h
-(mo)s(di\014ed)330 408 y(ob)5 b(ject)34 b(co)s(de)f(is)g(in)f(no)h
-(case)h(prev)m(en)m(ted)f(or)g(in)m(terfered)g(with)g(solely)h(b)s
-(ecause)f(mo)s(di\014cation)g(has)330 518 y(b)s(een)d(made.)330
-650 y(If)38 b(y)m(ou)i(con)m(v)m(ey)g(an)f(ob)5 b(ject)40
-b(co)s(de)f(w)m(ork)g(under)e(this)i(section)h(in,)h(or)e(with,)i(or)e
-(sp)s(eci\014cally)g(for)330 759 y(use)g(in,)i(a)e(User)g(Pro)s(duct,)i
-(and)e(the)g(con)m(v)m(eying)i(o)s(ccurs)d(as)i(part)f(of)g(a)g
-(transaction)h(in)f(whic)m(h)330 869 y(the)d(righ)m(t)g(of)g(p)s
-(ossession)f(and)g(use)h(of)f(the)h(User)g(Pro)s(duct)f(is)g
-(transferred)g(to)i(the)e(recipien)m(t)i(in)330 978 y(p)s(erp)s(etuit)m
-(y)43 b(or)g(for)g(a)h(\014xed)e(term)i(\(regardless)g(of)f(ho)m(w)h
-(the)f(transaction)i(is)e(c)m(haracterized\),)330 1088
-y(the)c(Corresp)s(onding)e(Source)i(con)m(v)m(ey)m(ed)i(under)c(this)i
-(section)h(m)m(ust)f(b)s(e)f(accompanied)i(b)m(y)f(the)330
-1198 y(Installation)d(Information.)52 b(But)35 b(this)f(requiremen)m(t)
-g(do)s(es)g(not)h(apply)f(if)g(neither)g(y)m(ou)h(nor)f(an)m(y)330
-1307 y(third)28 b(part)m(y)i(retains)f(the)g(abilit)m(y)i(to)e(install)
-h(mo)s(di\014ed)e(ob)5 b(ject)30 b(co)s(de)f(on)g(the)h(User)f(Pro)s
-(duct)f(\(for)330 1417 y(example,)j(the)g(w)m(ork)f(has)g(b)s(een)g
-(installed)h(in)f(R)m(OM\).)330 1548 y(The)38 b(requiremen)m(t)g(to)h
-(pro)m(vide)g(Installation)g(Information)g(do)s(es)f(not)g(include)g(a)
-h(requiremen)m(t)330 1658 y(to)32 b(con)m(tin)m(ue)h(to)f(pro)m(vide)g
-(supp)s(ort)e(service,)j(w)m(arran)m(t)m(y)-8 b(,)33
-b(or)f(up)s(dates)e(for)i(a)g(w)m(ork)f(that)h(has)g(b)s(een)330
-1767 y(mo)s(di\014ed)37 b(or)h(installed)h(b)m(y)g(the)f(recipien)m(t,)
-k(or)c(for)g(the)g(User)h(Pro)s(duct)e(in)h(whic)m(h)g(it)h(has)f(b)s
-(een)330 1877 y(mo)s(di\014ed)29 b(or)h(installed.)42
-b(Access)31 b(to)g(a)g(net)m(w)m(ork)g(ma)m(y)g(b)s(e)e(denied)h(when)f
-(the)i(mo)s(di\014cation)f(itself)330 1987 y(materially)i(and)e(adv)m
-(ersely)h(a\013ects)h(the)e(op)s(eration)h(of)g(the)f(net)m(w)m(ork)h
-(or)g(violates)h(the)f(rules)f(and)330 2096 y(proto)s(cols)h(for)f
-(comm)m(unication)i(across)f(the)g(net)m(w)m(ork.)330
-2228 y(Corresp)s(onding)26 b(Source)h(con)m(v)m(ey)m(ed,)j(and)d
-(Installation)i(Information)f(pro)m(vided,)g(in)f(accord)h(with)330
-2337 y(this)d(section)i(m)m(ust)e(b)s(e)g(in)g(a)h(format)g(that)f(is)h
-(publicly)f(do)s(cumen)m(ted)g(\(and)g(with)g(an)h(implemen)m(ta-)330
-2447 y(tion)i(a)m(v)-5 b(ailable)29 b(to)f(the)g(public)e(in)h(source)h
-(co)s(de)f(form\),)h(and)f(m)m(ust)g(require)g(no)g(sp)s(ecial)h(passw)
-m(ord)330 2556 y(or)i(k)m(ey)i(for)e(unpac)m(king,)g(reading)h(or)f
-(cop)m(ying.)199 2688 y(7.)61 b(Additional)31 b(T)-8
-b(erms.)330 2819 y(\\Additional)29 b(p)s(ermissions")e(are)h(terms)f
-(that)h(supplemen)m(t)f(the)h(terms)g(of)f(this)h(License)g(b)m(y)g
-(mak-)330 2929 y(ing)41 b(exceptions)h(from)e(one)h(or)g(more)g(of)g
-(its)g(conditions.)72 b(Additional)42 b(p)s(ermissions)d(that)j(are)330
-3039 y(applicable)31 b(to)f(the)g(en)m(tire)h(Program)f(shall)g(b)s(e)f
-(treated)i(as)f(though)f(they)h(w)m(ere)h(included)e(in)g(this)330
-3148 y(License,)36 b(to)e(the)g(exten)m(t)i(that)e(they)g(are)g(v)-5
-b(alid)34 b(under)f(applicable)i(la)m(w.)52 b(If)33 b(additional)i(p)s
-(ermis-)330 3258 y(sions)27 b(apply)h(only)f(to)h(part)g(of)f(the)h
-(Program,)h(that)f(part)f(ma)m(y)h(b)s(e)f(used)g(separately)h(under)e
-(those)330 3367 y(p)s(ermissions,)31 b(but)g(the)h(en)m(tire)h(Program)
-f(remains)f(go)m(v)m(erned)i(b)m(y)f(this)g(License)g(without)g(regard)
-330 3477 y(to)f(the)g(additional)g(p)s(ermissions.)330
-3608 y(When)45 b(y)m(ou)g(con)m(v)m(ey)i(a)e(cop)m(y)h(of)f(a)g(co)m(v)
-m(ered)i(w)m(ork,)h(y)m(ou)e(ma)m(y)f(at)h(y)m(our)f(option)g(remo)m(v)
-m(e)i(an)m(y)330 3718 y(additional)30 b(p)s(ermissions)e(from)h(that)h
-(cop)m(y)-8 b(,)31 b(or)f(from)e(an)m(y)i(part)f(of)h(it.)41
-b(\(Additional)30 b(p)s(ermissions)330 3828 y(ma)m(y)41
-b(b)s(e)f(written)g(to)h(require)f(their)h(o)m(wn)f(remo)m(v)-5
-b(al)42 b(in)e(certain)h(cases)g(when)f(y)m(ou)g(mo)s(dify)g(the)330
-3937 y(w)m(ork.\))48 b(Y)-8 b(ou)33 b(ma)m(y)g(place)h(additional)f(p)s
-(ermissions)e(on)i(material,)i(added)d(b)m(y)g(y)m(ou)h(to)g(a)g(co)m
-(v)m(ered)330 4047 y(w)m(ork,)e(for)f(whic)m(h)g(y)m(ou)h(ha)m(v)m(e)g
-(or)g(can)f(giv)m(e)i(appropriate)f(cop)m(yrigh)m(t)g(p)s(ermission.)
-330 4178 y(Not)m(withstanding)e(an)m(y)g(other)g(pro)m(vision)f(of)h
-(this)f(License,)h(for)f(material)i(y)m(ou)f(add)f(to)h(a)f(co)m(v)m
-(ered)330 4288 y(w)m(ork,)40 b(y)m(ou)e(ma)m(y)g(\(if)g(authorized)g(b)
-m(y)g(the)g(cop)m(yrigh)m(t)h(holders)e(of)h(that)g(material\))h
-(supplemen)m(t)330 4398 y(the)31 b(terms)f(of)g(this)h(License)g(with)f
-(terms:)379 4529 y(a.)61 b(Disclaiming)31 b(w)m(arran)m(t)m(y)f(or)g
-(limiting)g(liabilit)m(y)h(di\013eren)m(tly)f(from)f(the)g(terms)g(of)h
-(sections)g(15)510 4639 y(and)g(16)h(of)g(this)f(License;)h(or)374
-4770 y(b.)60 b(Requiring)30 b(preserv)-5 b(ation)31 b(of)g(sp)s
-(eci\014ed)f(reasonable)h(legal)i(notices)f(or)e(author)h(attributions)
-510 4880 y(in)24 b(that)i(material)g(or)f(in)f(the)h(Appropriate)g
-(Legal)h(Notices)h(displa)m(y)m(ed)e(b)m(y)g(w)m(orks)f(con)m(taining)
-510 4989 y(it;)31 b(or)384 5121 y(c.)61 b(Prohibiting)23
-b(misrepresen)m(tation)i(of)e(the)h(origin)g(of)f(that)i(material,)h
-(or)d(requiring)g(that)h(mo)s(d-)510 5230 y(i\014ed)30
-b(v)m(ersions)h(of)f(suc)m(h)g(material)i(b)s(e)e(mark)m(ed)h(in)f
-(reasonable)h(w)m(a)m(ys)g(as)g(di\013eren)m(t)g(from)f(the)510
-5340 y(original)i(v)m(ersion;)f(or)p eop end
-%%Page: 7 9
-TeXDict begin 7 8 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(7)374 299 y(d.)60 b(Limiting)42 b(the)f(use)g(for)g
-(publicit)m(y)h(purp)s(oses)d(of)i(names)g(of)h(licensors)f(or)h
-(authors)e(of)i(the)510 408 y(material;)32 b(or)384 543
-y(e.)61 b(Declining)29 b(to)f(gran)m(t)g(righ)m(ts)f(under)f(trademark)
-h(la)m(w)h(for)f(use)g(of)g(some)h(trade)f(names,)h(trade-)510
-653 y(marks,)i(or)h(service)g(marks;)f(or)397 788 y(f.)60
-b(Requiring)26 b(indemni\014cation)g(of)g(licensors)h(and)f(authors)f
-(of)i(that)f(material)i(b)m(y)e(an)m(y)m(one)h(who)510
-897 y(con)m(v)m(eys)45 b(the)e(material)h(\(or)g(mo)s(di\014ed)e(v)m
-(ersions)h(of)h(it\))g(with)e(con)m(tractual)k(assumptions)510
-1007 y(of)40 b(liabilit)m(y)h(to)f(the)f(recipien)m(t,)k(for)c(an)m(y)h
-(liabilit)m(y)h(that)f(these)g(con)m(tractual)i(assumptions)510
-1117 y(directly)31 b(imp)s(ose)f(on)g(those)h(licensors)g(and)f
-(authors.)330 1277 y(All)i(other)h(non-p)s(ermissiv)m(e)e(additional)i
-(terms)e(are)i(considered)e(\\further)g(restrictions")i(within)330
-1386 y(the)j(meaning)f(of)h(section)g(10.)57 b(If)35
-b(the)h(Program)f(as)h(y)m(ou)g(receiv)m(ed)g(it,)i(or)d(an)m(y)h(part)
-f(of)h(it,)h(con-)330 1496 y(tains)f(a)g(notice)h(stating)g(that)f(it)g
-(is)g(go)m(v)m(erned)h(b)m(y)e(this)h(License)g(along)h(with)e(a)h
-(term)g(that)g(is)g(a)330 1606 y(further)24 b(restriction,)k(y)m(ou)e
-(ma)m(y)g(remo)m(v)m(e)h(that)f(term.)39 b(If)26 b(a)g(license)g(do)s
-(cumen)m(t)g(con)m(tains)g(a)g(further)330 1715 y(restriction)33
-b(but)f(p)s(ermits)g(relicensing)h(or)g(con)m(v)m(eying)h(under)d(this)
-i(License,)g(y)m(ou)g(ma)m(y)g(add)f(to)i(a)330 1825
-y(co)m(v)m(ered)g(w)m(ork)e(material)h(go)m(v)m(erned)h(b)m(y)e(the)g
-(terms)g(of)g(that)h(license)g(do)s(cumen)m(t,)g(pro)m(vided)e(that)330
-1934 y(the)g(further)e(restriction)i(do)s(es)f(not)h(surviv)m(e)f(suc)m
-(h)g(relicensing)h(or)g(con)m(v)m(eying.)330 2069 y(If)f(y)m(ou)g(add)g
-(terms)g(to)h(a)g(co)m(v)m(ered)h(w)m(ork)e(in)g(accord)h(with)f(this)g
-(section,)i(y)m(ou)e(m)m(ust)g(place,)i(in)e(the)330
-2179 y(relev)-5 b(an)m(t)31 b(source)f(\014les,)g(a)g(statemen)m(t)h
-(of)f(the)g(additional)g(terms)g(that)g(apply)f(to)i(those)f(\014les,)g
-(or)g(a)330 2288 y(notice)i(indicating)f(where)f(to)h(\014nd)e(the)h
-(applicable)i(terms.)330 2423 y(Additional)37 b(terms,)h(p)s(ermissiv)m
-(e)e(or)h(non-p)s(ermissiv)m(e,)h(ma)m(y)f(b)s(e)e(stated)j(in)e(the)h
-(form)f(of)g(a)h(sep-)330 2533 y(arately)i(written)f(license,)i(or)e
-(stated)h(as)e(exceptions;)43 b(the)38 b(ab)s(o)m(v)m(e)h(requiremen)m
-(ts)e(apply)g(either)330 2642 y(w)m(a)m(y)-8 b(.)199
-2777 y(8.)61 b(T)-8 b(ermination.)330 2912 y(Y)g(ou)40
-b(ma)m(y)g(not)f(propagate)i(or)e(mo)s(dify)g(a)g(co)m(v)m(ered)i(w)m
-(ork)f(except)g(as)g(expressly)f(pro)m(vided)g(un-)330
-3022 y(der)d(this)h(License.)62 b(An)m(y)37 b(attempt)h(otherwise)f(to)
-h(propagate)g(or)f(mo)s(dify)f(it)i(is)f(v)m(oid,)i(and)e(will)330
-3131 y(automatically)g(terminate)d(y)m(our)g(righ)m(ts)g(under)f(this)g
-(License)i(\(including)e(an)m(y)h(paten)m(t)h(licenses)330
-3241 y(gran)m(ted)c(under)e(the)h(third)g(paragraph)g(of)g(section)i
-(11\).)330 3376 y(Ho)m(w)m(ev)m(er,)j(if)e(y)m(ou)f(cease)i(all)f
-(violation)i(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f
-(a)h(particular)330 3485 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
-(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
-(cop)m(yrigh)m(t)h(holder)330 3595 y(explicitly)42 b(and)e(\014nally)h
-(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
-b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 3705 y(holder)34
-b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
-(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 3814
-y(after)31 b(the)f(cessation.)330 3949 y(Moreo)m(v)m(er,)k(y)m(our)d
-(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
-(reinstated)g(p)s(ermanen)m(tly)f(if)330 4059 y(the)d(cop)m(yrigh)m(t)h
-(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
-(reasonable)h(means,)f(this)g(is)g(the)330 4168 y(\014rst)f(time)i(y)m
-(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
-(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
-4278 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
-(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
-(of)f(the)330 4387 y(notice.)330 4522 y(T)-8 b(ermination)28
-b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
-(terminate)h(the)e(licenses)i(of)f(parties)330 4632 y(who)38
-b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
-(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
-330 4741 y(b)s(een)f(terminated)h(and)e(not)i(p)s(ermanen)m(tly)f
-(reinstated,)j(y)m(ou)e(do)f(not)h(qualify)f(to)h(receiv)m(e)h(new)330
-4851 y(licenses)31 b(for)f(the)h(same)g(material)h(under)c(section)k
-(10.)199 4986 y(9.)61 b(Acceptance)32 b(Not)g(Required)d(for)i(Ha)m
-(ving)g(Copies.)330 5121 y(Y)-8 b(ou)38 b(are)g(not)g(required)f(to)h
-(accept)h(this)f(License)g(in)f(order)g(to)h(receiv)m(e)i(or)e(run)e(a)
-i(cop)m(y)g(of)g(the)330 5230 y(Program.)i(Ancillary)27
-b(propagation)g(of)g(a)g(co)m(v)m(ered)h(w)m(ork)e(o)s(ccurring)g
-(solely)i(as)f(a)g(consequence)g(of)330 5340 y(using)i(p)s(eer-to-p)s
-(eer)g(transmission)g(to)h(receiv)m(e)h(a)e(cop)m(y)h(lik)m(ewise)h(do)
-s(es)d(not)i(require)e(acceptance.)p eop end
-%%Page: 8 10
-TeXDict begin 8 9 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(8)330 299 y(Ho)m(w)m(ev)m(er,)28 b(nothing)c(other)g
-(than)g(this)f(License)i(gran)m(ts)g(y)m(ou)f(p)s(ermission)f(to)i
-(propagate)g(or)f(mo)s(dify)330 408 y(an)m(y)34 b(co)m(v)m(ered)g(w)m
-(ork.)50 b(These)32 b(actions)j(infringe)e(cop)m(yrigh)m(t)h(if)f(y)m
-(ou)h(do)f(not)g(accept)i(this)e(License.)330 518 y(Therefore,)f(b)m(y)
-f(mo)s(difying)g(or)g(propagating)h(a)g(co)m(v)m(ered)h(w)m(ork,)f(y)m
-(ou)g(indicate)g(y)m(our)g(acceptance)330 628 y(of)f(this)f(License)h
-(to)g(do)f(so.)154 759 y(10.)61 b(Automatic)32 b(Licensing)f(of)f(Do)m
-(wnstream)i(Recipien)m(ts.)330 891 y(Eac)m(h)39 b(time)g(y)m(ou)g(con)m
-(v)m(ey)h(a)f(co)m(v)m(ered)h(w)m(ork,)h(the)d(recipien)m(t)i
-(automatically)h(receiv)m(es)f(a)f(license)330 1000 y(from)e(the)h
-(original)h(licensors,)h(to)f(run,)f(mo)s(dify)f(and)g(propagate)i
-(that)f(w)m(ork,)i(sub)5 b(ject)38 b(to)g(this)330 1110
-y(License.)60 b(Y)-8 b(ou)38 b(are)f(not)g(resp)s(onsible)e(for)i
-(enforcing)g(compliance)h(b)m(y)f(third)f(parties)h(with)f(this)330
-1219 y(License.)330 1351 y(An)43 b(\\en)m(tit)m(y)i(transaction")g(is)f
-(a)f(transaction)i(transferring)e(con)m(trol)h(of)g(an)f(organization,)
-49 b(or)330 1461 y(substan)m(tially)24 b(all)f(assets)g(of)g(one,)i(or)
-e(sub)s(dividing)d(an)j(organization,)j(or)d(merging)g(organizations.)
-330 1570 y(If)28 b(propagation)i(of)f(a)h(co)m(v)m(ered)g(w)m(ork)f
-(results)g(from)f(an)h(en)m(tit)m(y)i(transaction,)f(eac)m(h)g(part)m
-(y)g(to)f(that)330 1680 y(transaction)g(who)d(receiv)m(es)k(a)d(cop)m
-(y)i(of)e(the)h(w)m(ork)f(also)i(receiv)m(es)g(whatev)m(er)f(licenses)g
-(to)g(the)g(w)m(ork)330 1789 y(the)d(part)m(y's)g(predecessor)g(in)g
-(in)m(terest)h(had)e(or)h(could)g(giv)m(e)h(under)e(the)h(previous)f
-(paragraph,)i(plus)330 1899 y(a)31 b(righ)m(t)g(to)h(p)s(ossession)e
-(of)h(the)g(Corresp)s(onding)e(Source)i(of)g(the)f(w)m(ork)h(from)g
-(the)g(predecessor)f(in)330 2008 y(in)m(terest,)i(if)e(the)h
-(predecessor)f(has)g(it)h(or)f(can)h(get)h(it)e(with)h(reasonable)g
-(e\013orts.)330 2140 y(Y)-8 b(ou)36 b(ma)m(y)g(not)g(imp)s(ose)f(an)m
-(y)h(further)e(restrictions)j(on)e(the)h(exercise)g(of)g(the)g(righ)m
-(ts)g(gran)m(ted)g(or)330 2250 y(a\016rmed)27 b(under)f(this)h
-(License.)40 b(F)-8 b(or)28 b(example,)h(y)m(ou)f(ma)m(y)g(not)g(imp)s
-(ose)f(a)h(license)g(fee,)h(ro)m(y)m(alt)m(y)-8 b(,)31
-b(or)330 2359 y(other)d(c)m(harge)g(for)g(exercise)h(of)e(righ)m(ts)h
-(gran)m(ted)g(under)e(this)i(License,)h(and)d(y)m(ou)i(ma)m(y)g(not)g
-(initiate)330 2469 y(litigation)f(\(including)d(a)g(cross-claim)i(or)e
-(coun)m(terclaim)i(in)e(a)g(la)m(wsuit\))i(alleging)g(that)e(an)m(y)h
-(paten)m(t)330 2578 y(claim)j(is)g(infringed)e(b)m(y)i(making,)g
-(using,)g(selling,)h(o\013ering)f(for)f(sale,)i(or)e(imp)s(orting)g
-(the)h(Program)330 2688 y(or)i(an)m(y)h(p)s(ortion)f(of)h(it.)154
-2819 y(11.)61 b(P)m(aten)m(ts.)330 2951 y(A)41 b(\\con)m(tributor")h
-(is)f(a)g(cop)m(yrigh)m(t)i(holder)d(who)h(authorizes)g(use)g(under)e
-(this)i(License)h(of)f(the)330 3061 y(Program)35 b(or)f(a)h(w)m(ork)g
-(on)f(whic)m(h)g(the)h(Program)f(is)h(based.)53 b(The)34
-b(w)m(ork)g(th)m(us)g(licensed)h(is)g(called)330 3170
-y(the)c(con)m(tributor's)f(\\con)m(tributor)i(v)m(ersion".)330
-3302 y(A)g(con)m(tributor's)g(\\essen)m(tial)i(paten)m(t)e(claims")h
-(are)f(all)h(paten)m(t)f(claims)h(o)m(wned)e(or)h(con)m(trolled)h(b)m
-(y)330 3411 y(the)21 b(con)m(tributor,)j(whether)d(already)g(acquired)g
-(or)h(hereafter)f(acquired,)j(that)d(w)m(ould)g(b)s(e)g(infringed)330
-3521 y(b)m(y)27 b(some)h(manner,)g(p)s(ermitted)f(b)m(y)g(this)h
-(License,)h(of)e(making,)i(using,)f(or)f(selling)i(its)f(con)m
-(tributor)330 3630 y(v)m(ersion,)40 b(but)c(do)i(not)f(include)g
-(claims)i(that)f(w)m(ould)f(b)s(e)f(infringed)h(only)g(as)h(a)g
-(consequence)g(of)330 3740 y(further)33 b(mo)s(di\014cation)h(of)g(the)
-g(con)m(tributor)g(v)m(ersion.)52 b(F)-8 b(or)34 b(purp)s(oses)e(of)i
-(this)g(de\014nition,)h(\\con-)330 3850 y(trol")40 b(includes)f(the)g
-(righ)m(t)h(to)f(gran)m(t)h(paten)m(t)g(sublicenses)f(in)g(a)g(manner)g
-(consisten)m(t)h(with)f(the)330 3959 y(requiremen)m(ts)30
-b(of)h(this)f(License.)330 4091 y(Eac)m(h)44 b(con)m(tributor)h(gran)m
-(ts)f(y)m(ou)g(a)h(non-exclusiv)m(e,)j(w)m(orldwide,)f(ro)m(y)m(alt)m
-(y-free)g(paten)m(t)e(license)330 4200 y(under)26 b(the)h(con)m
-(tributor's)g(essen)m(tial)i(paten)m(t)f(claims,)h(to)f(mak)m(e,)h
-(use,)f(sell,)g(o\013er)g(for)f(sale,)i(imp)s(ort)330
-4310 y(and)h(otherwise)h(run,)e(mo)s(dify)g(and)h(propagate)i(the)e
-(con)m(ten)m(ts)i(of)f(its)g(con)m(tributor)f(v)m(ersion.)330
-4441 y(In)e(the)h(follo)m(wing)h(three)e(paragraphs,)h(a)g(\\paten)m(t)
-h(license")g(is)e(an)m(y)h(express)f(agreemen)m(t)j(or)d(com-)330
-4551 y(mitmen)m(t,)g(ho)m(w)m(ev)m(er)g(denominated,)f(not)f(to)h
-(enforce)g(a)f(paten)m(t)i(\(suc)m(h)e(as)g(an)g(express)g(p)s
-(ermission)330 4661 y(to)32 b(practice)h(a)f(paten)m(t)h(or)e(co)m(v)m
-(enan)m(t)j(not)e(to)g(sue)f(for)h(paten)m(t)g(infringemen)m(t\).)45
-b(T)-8 b(o)32 b(\\gran)m(t")h(suc)m(h)330 4770 y(a)i(paten)m(t)h
-(license)f(to)h(a)f(part)m(y)g(means)f(to)i(mak)m(e)f(suc)m(h)g(an)f
-(agreemen)m(t)j(or)d(commitmen)m(t)i(not)f(to)330 4880
-y(enforce)c(a)g(paten)m(t)g(against)h(the)e(part)m(y)-8
-b(.)330 5011 y(If)36 b(y)m(ou)h(con)m(v)m(ey)h(a)f(co)m(v)m(ered)h(w)m
-(ork,)h(kno)m(wingly)e(relying)g(on)f(a)h(paten)m(t)h(license,)h(and)d
-(the)h(Corre-)330 5121 y(sp)s(onding)21 b(Source)h(of)h(the)g(w)m(ork)g
-(is)f(not)h(a)m(v)-5 b(ailable)25 b(for)e(an)m(y)m(one)g(to)h(cop)m(y)
--8 b(,)25 b(free)e(of)g(c)m(harge)g(and)f(under)330 5230
-y(the)32 b(terms)f(of)h(this)f(License,)i(through)e(a)h(publicly)f(a)m
-(v)-5 b(ailable)34 b(net)m(w)m(ork)e(serv)m(er)g(or)g(other)g(readily)
-330 5340 y(accessible)38 b(means,)g(then)e(y)m(ou)h(m)m(ust)f(either)h
-(\(1\))h(cause)e(the)h(Corresp)s(onding)e(Source)h(to)h(b)s(e)f(so)p
-eop end
-%%Page: 9 11
-TeXDict begin 9 10 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2052 b(9)330 299 y(a)m(v)-5 b(ailable,)32 b(or)e(\(2\))g
-(arrange)g(to)h(depriv)m(e)e(y)m(ourself)h(of)g(the)g(b)s(ene\014t)e
-(of)i(the)g(paten)m(t)g(license)h(for)e(this)330 408
-y(particular)35 b(w)m(ork,)g(or)f(\(3\))i(arrange,)g(in)d(a)i(manner)e
-(consisten)m(t)j(with)e(the)g(requiremen)m(ts)h(of)f(this)330
-518 y(License,)j(to)f(extend)g(the)f(paten)m(t)h(license)h(to)f(do)m
-(wnstream)f(recipien)m(ts.)56 b(\\Kno)m(wingly)36 b(relying")330
-628 y(means)31 b(y)m(ou)h(ha)m(v)m(e)g(actual)h(kno)m(wledge)f(that,)g
-(but)f(for)g(the)g(paten)m(t)i(license,)f(y)m(our)g(con)m(v)m(eying)h
-(the)330 737 y(co)m(v)m(ered)40 b(w)m(ork)e(in)g(a)g(coun)m(try)-8
-b(,)41 b(or)e(y)m(our)f(recipien)m(t's)h(use)f(of)g(the)h(co)m(v)m
-(ered)g(w)m(ork)g(in)e(a)i(coun)m(try)-8 b(,)330 847
-y(w)m(ould)35 b(infringe)g(one)g(or)g(more)g(iden)m(ti\014able)h(paten)
-m(ts)g(in)f(that)h(coun)m(try)f(that)h(y)m(ou)f(ha)m(v)m(e)i(reason)330
-956 y(to)31 b(b)s(eliev)m(e)h(are)e(v)-5 b(alid.)330
-1121 y(If,)31 b(pursuan)m(t)e(to)j(or)e(in)h(connection)h(with)e(a)h
-(single)h(transaction)g(or)f(arrangemen)m(t,)h(y)m(ou)f(con)m(v)m(ey)-8
-b(,)330 1230 y(or)35 b(propagate)h(b)m(y)e(pro)s(curing)g(con)m(v)m(ey)
-m(ance)j(of,)g(a)e(co)m(v)m(ered)h(w)m(ork,)g(and)f(gran)m(t)g(a)g
-(paten)m(t)h(license)330 1340 y(to)c(some)f(of)h(the)f(parties)h
-(receiving)g(the)f(co)m(v)m(ered)i(w)m(ork)e(authorizing)h(them)f(to)h
-(use,)g(propagate,)330 1450 y(mo)s(dify)26 b(or)h(con)m(v)m(ey)h(a)g
-(sp)s(eci\014c)e(cop)m(y)i(of)f(the)g(co)m(v)m(ered)i(w)m(ork,)f(then)e
-(the)h(paten)m(t)h(license)g(y)m(ou)f(gran)m(t)330 1559
-y(is)j(automatically)k(extended)c(to)h(all)g(recipien)m(ts)h(of)e(the)h
-(co)m(v)m(ered)h(w)m(ork)e(and)g(w)m(orks)g(based)g(on)h(it.)330
-1724 y(A)d(paten)m(t)g(license)h(is)e(\\discriminatory")i(if)e(it)h(do)
-s(es)f(not)h(include)f(within)g(the)h(scop)s(e)f(of)h(its)g(co)m(v)m
-(er-)330 1833 y(age,)f(prohibits)c(the)h(exercise)h(of,)h(or)d(is)h
-(conditioned)h(on)f(the)g(non-exercise)h(of)f(one)g(or)g(more)g(of)g
-(the)330 1943 y(righ)m(ts)32 b(that)g(are)g(sp)s(eci\014cally)h(gran)m
-(ted)f(under)e(this)i(License.)45 b(Y)-8 b(ou)32 b(ma)m(y)g(not)g(con)m
-(v)m(ey)h(a)f(co)m(v)m(ered)330 2052 y(w)m(ork)d(if)g(y)m(ou)g(are)h(a)
-f(part)m(y)g(to)h(an)f(arrangemen)m(t)h(with)e(a)i(third)e(part)m(y)h
-(that)g(is)g(in)g(the)g(business)f(of)330 2162 y(distributing)i(soft)m
-(w)m(are,)i(under)d(whic)m(h)h(y)m(ou)h(mak)m(e)g(pa)m(ymen)m(t)g(to)g
-(the)g(third)f(part)m(y)g(based)g(on)h(the)330 2271 y(exten)m(t)f(of)g
-(y)m(our)f(activit)m(y)i(of)e(con)m(v)m(eying)i(the)e(w)m(ork,)h(and)e
-(under)g(whic)m(h)g(the)i(third)e(part)m(y)h(gran)m(ts,)330
-2381 y(to)35 b(an)m(y)g(of)f(the)h(parties)f(who)g(w)m(ould)g(receiv)m
-(e)i(the)f(co)m(v)m(ered)h(w)m(ork)e(from)g(y)m(ou,)i(a)f
-(discriminatory)330 2491 y(paten)m(t)g(license)h(\(a\))f(in)f
-(connection)h(with)f(copies)h(of)g(the)f(co)m(v)m(ered)i(w)m(ork)f(con)
-m(v)m(ey)m(ed)h(b)m(y)e(y)m(ou)h(\(or)330 2600 y(copies)k(made)e(from)h
-(those)g(copies\),)j(or)d(\(b\))g(primarily)f(for)h(and)f(in)h
-(connection)h(with)e(sp)s(eci\014c)330 2710 y(pro)s(ducts)32
-b(or)i(compilations)h(that)f(con)m(tain)h(the)f(co)m(v)m(ered)i(w)m
-(ork,)e(unless)f(y)m(ou)h(en)m(tered)h(in)m(to)f(that)330
-2819 y(arrangemen)m(t,)e(or)e(that)h(paten)m(t)g(license)h(w)m(as)e
-(gran)m(ted,)i(prior)d(to)j(28)f(Marc)m(h)g(2007.)330
-2984 y(Nothing)23 b(in)e(this)h(License)h(shall)f(b)s(e)f(construed)h
-(as)g(excluding)g(or)g(limiting)h(an)m(y)f(implied)g(license)h(or)330
-3093 y(other)k(defenses)f(to)h(infringemen)m(t)g(that)g(ma)m(y)g
-(otherwise)g(b)s(e)e(a)m(v)-5 b(ailable)29 b(to)e(y)m(ou)g(under)e
-(applicable)330 3203 y(paten)m(t)31 b(la)m(w.)154 3367
-y(12.)61 b(No)31 b(Surrender)d(of)i(Others')g(F)-8 b(reedom.)330
-3532 y(If)24 b(conditions)g(are)h(imp)s(osed)f(on)g(y)m(ou)g(\(whether)
-g(b)m(y)g(court)h(order,)g(agreemen)m(t)h(or)e(otherwise\))h(that)330
-3641 y(con)m(tradict)35 b(the)f(conditions)h(of)e(this)h(License,)h
-(they)f(do)g(not)g(excuse)g(y)m(ou)g(from)g(the)f(conditions)330
-3751 y(of)k(this)f(License.)59 b(If)36 b(y)m(ou)h(cannot)g(con)m(v)m
-(ey)h(a)e(co)m(v)m(ered)i(w)m(ork)f(so)g(as)f(to)h(satisfy)g(sim)m
-(ultaneously)330 3861 y(y)m(our)44 b(obligations)i(under)c(this)i
-(License)h(and)e(an)m(y)i(other)f(p)s(ertinen)m(t)g(obligations,)49
-b(then)44 b(as)h(a)330 3970 y(consequence)40 b(y)m(ou)f(ma)m(y)g(not)g
-(con)m(v)m(ey)i(it)e(at)h(all.)67 b(F)-8 b(or)40 b(example,)i(if)d(y)m
-(ou)g(agree)h(to)g(terms)e(that)330 4080 y(obligate)32
-b(y)m(ou)e(to)h(collect)h(a)f(ro)m(y)m(alt)m(y)h(for)e(further)e(con)m
-(v)m(eying)k(from)e(those)g(to)h(whom)e(y)m(ou)h(con)m(v)m(ey)330
-4189 y(the)h(Program,)h(the)f(only)g(w)m(a)m(y)h(y)m(ou)g(could)f
-(satisfy)g(b)s(oth)g(those)g(terms)g(and)g(this)g(License)g(w)m(ould)
-330 4299 y(b)s(e)f(to)h(refrain)f(en)m(tirely)h(from)f(con)m(v)m(eying)
-i(the)f(Program.)154 4463 y(13.)61 b(Use)31 b(with)f(the)g(GNU)h
-(A\013ero)g(General)h(Public)e(License.)330 4628 y(Not)m(withstanding)
-39 b(an)m(y)g(other)f(pro)m(vision)h(of)f(this)g(License,)k(y)m(ou)c
-(ha)m(v)m(e)i(p)s(ermission)d(to)i(link)f(or)330 4737
-y(com)m(bine)h(an)m(y)g(co)m(v)m(ered)i(w)m(ork)e(with)f(a)h(w)m(ork)g
-(licensed)g(under)e(v)m(ersion)i(3)g(of)g(the)g(GNU)g(A\013ero)330
-4847 y(General)29 b(Public)f(License)h(in)m(to)h(a)f(single)g(com)m
-(bined)f(w)m(ork,)h(and)f(to)h(con)m(v)m(ey)h(the)f(resulting)g(w)m
-(ork.)330 4956 y(The)f(terms)g(of)g(this)h(License)f(will)h(con)m(tin)m
-(ue)g(to)g(apply)f(to)h(the)g(part)f(whic)m(h)g(is)g(the)h(co)m(v)m
-(ered)h(w)m(ork,)330 5066 y(but)38 b(the)h(sp)s(ecial)g(requiremen)m
-(ts)f(of)h(the)g(GNU)g(A\013ero)g(General)g(Public)g(License,)i
-(section)f(13,)330 5176 y(concerning)31 b(in)m(teraction)h(through)e(a)
-h(net)m(w)m(ork)g(will)f(apply)g(to)i(the)e(com)m(bination)i(as)e(suc)m
-(h.)154 5340 y(14.)61 b(Revised)31 b(V)-8 b(ersions)30
-b(of)h(this)f(License.)p eop end
-%%Page: 10 12
-TeXDict begin 10 11 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2006 b(10)330 299 y(The)35 b(F)-8 b(ree)36 b(Soft)m(w)m(are)g
-(F)-8 b(oundation)36 b(ma)m(y)g(publish)d(revised)i(and/or)g(new)g(v)m
-(ersions)h(of)f(the)g(GNU)330 408 y(General)f(Public)f(License)g(from)g
-(time)g(to)h(time.)49 b(Suc)m(h)33 b(new)f(v)m(ersions)h(will)h(b)s(e)e
-(similar)h(in)g(spirit)330 518 y(to)e(the)g(presen)m(t)f(v)m(ersion,)h
-(but)f(ma)m(y)h(di\013er)f(in)g(detail)i(to)f(address)e(new)h(problems)
-g(or)g(concerns.)330 662 y(Eac)m(h)37 b(v)m(ersion)g(is)f(giv)m(en)h(a)
-g(distinguishing)e(v)m(ersion)i(n)m(um)m(b)s(er.)57 b(If)36
-b(the)g(Program)g(sp)s(eci\014es)g(that)330 772 y(a)31
-b(certain)h(n)m(um)m(b)s(ered)d(v)m(ersion)i(of)g(the)g(GNU)g(General)h
-(Public)e(License)h(\\or)g(an)m(y)g(later)h(v)m(ersion")330
-881 y(applies)h(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f
-(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
-991 y(n)m(um)m(b)s(ered)h(v)m(ersion)h(or)g(of)g(an)m(y)g(later)h(v)m
-(ersion)g(published)d(b)m(y)i(the)g(F)-8 b(ree)35 b(Soft)m(w)m(are)g(F)
--8 b(oundation.)330 1101 y(If)28 b(the)h(Program)g(do)s(es)g(not)g(sp)s
-(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)h(the)g(GNU)g(General)h
-(Public)e(License,)330 1210 y(y)m(ou)j(ma)m(y)g(c)m(ho)s(ose)g(an)m(y)g
-(v)m(ersion)g(ev)m(er)g(published)d(b)m(y)j(the)f(F)-8
-b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation.)330 1354
-y(If)39 b(the)h(Program)g(sp)s(eci\014es)f(that)h(a)g(pro)m(xy)g(can)g
-(decide)g(whic)m(h)f(future)g(v)m(ersions)h(of)f(the)h(GNU)330
-1464 y(General)34 b(Public)e(License)i(can)f(b)s(e)f(used,)h(that)h
-(pro)m(xy's)e(public)h(statemen)m(t)h(of)f(acceptance)j(of)d(a)330
-1573 y(v)m(ersion)e(p)s(ermanen)m(tly)f(authorizes)h(y)m(ou)g(to)g(c)m
-(ho)s(ose)g(that)g(v)m(ersion)g(for)f(the)h(Program.)330
-1718 y(Later)37 b(license)g(v)m(ersions)f(ma)m(y)h(giv)m(e)g(y)m(ou)g
-(additional)g(or)f(di\013eren)m(t)h(p)s(ermissions.)56
-b(Ho)m(w)m(ev)m(er,)40 b(no)330 1827 y(additional)25
-b(obligations)i(are)e(imp)s(osed)f(on)g(an)m(y)h(author)f(or)h(cop)m
-(yrigh)m(t)h(holder)e(as)h(a)g(result)f(of)h(y)m(our)330
-1937 y(c)m(ho)s(osing)31 b(to)g(follo)m(w)h(a)f(later)g(v)m(ersion.)154
-2081 y(15.)61 b(Disclaimer)32 b(of)f(W)-8 b(arran)m(t)m(y)g(.)330
-2225 y(THERE)47 b(IS)f(NO)h(W)-10 b(ARRANTY)48 b(F)m(OR)f(THE)g(PR)m
-(OGRAM,)h(TO)f(THE)g(EXTENT)f(PER-)330 2335 y(MITTED)g(BY)i(APPLICABLE)
-e(LA)-10 b(W.)47 b(EX)m(CEPT)f(WHEN)i(OTHER)-10 b(WISE)45
-b(ST)-8 b(A)g(TED)47 b(IN)330 2444 y(WRITING)34 b(THE)f(COPYRIGHT)g
-(HOLDERS)g(AND/OR)i(OTHER)e(P)-8 b(AR)g(TIES)33 b(PR)m(O)m(VIDE)330
-2554 y(THE)d(PR)m(OGRAM)i(\\AS)e(IS")h(WITHOUT)f(W)-10
-b(ARRANTY)31 b(OF)g(ANY)g(KIND,)g(EITHER)f(EX-)330 2663
-y(PRESSED)k(OR)h(IMPLIED,)g(INCLUDING,)g(BUT)h(NOT)e(LIMITED)h(TO,)f
-(THE)h(IMPLIED)330 2773 y(W)-10 b(ARRANTIES)38 b(OF)g(MER)m(CHANT)-8
-b(ABILITY)39 b(AND)g(FITNESS)e(F)m(OR)i(A)f(P)-8 b(AR)g(TICULAR)330
-2883 y(PURPOSE.)39 b(THE)h(ENTIRE)f(RISK)g(AS)h(TO)f(THE)g(QUALITY)h
-(AND)h(PERF)m(ORMANCE)330 2992 y(OF)29 b(THE)g(PR)m(OGRAM)h(IS)f(WITH)g
-(YOU.)h(SHOULD)f(THE)g(PR)m(OGRAM)h(PR)m(O)m(VE)g(DEFEC-)330
-3102 y(TIVE,)24 b(YOU)g(ASSUME)f(THE)h(COST)f(OF)h(ALL)g(NECESSAR)-8
-b(Y)23 b(SER)-10 b(VICING,)23 b(REP)-8 b(AIR)24 b(OR)330
-3211 y(CORRECTION.)154 3356 y(16.)61 b(Limitation)32
-b(of)e(Liabilit)m(y)-8 b(.)330 3500 y(IN)26 b(NO)g(EVENT)g(UNLESS)f
-(REQUIRED)h(BY)h(APPLICABLE)f(LA)-10 b(W)26 b(OR)g(A)m(GREED)h(TO)f(IN)
-330 3609 y(WRITING)37 b(WILL)f(ANY)i(COPYRIGHT)e(HOLDER,)h(OR)f(ANY)h
-(OTHER)f(P)-8 b(AR)g(TY)38 b(WHO)330 3719 y(MODIFIES)33
-b(AND/OR)h(CONVEYS)e(THE)h(PR)m(OGRAM)h(AS)e(PERMITTED)h(ABO)m(VE,)h
-(BE)330 3829 y(LIABLE)d(TO)e(YOU)i(F)m(OR)g(D)m(AMA)m(GES,)i(INCLUDING)
-e(ANY)g(GENERAL,)g(SPECIAL,)f(IN-)330 3938 y(CIDENT)-8
-b(AL)32 b(OR)f(CONSEQUENTIAL)f(D)m(AMA)m(GES)j(ARISING)f(OUT)f(OF)h
-(THE)f(USE)g(OR)330 4048 y(INABILITY)47 b(TO)f(USE)g(THE)g(PR)m(OGRAM)i
-(\(INCLUDING)f(BUT)g(NOT)f(LIMITED)h(TO)330 4157 y(LOSS)28
-b(OF)h(D)m(A)-8 b(T)g(A)31 b(OR)e(D)m(A)-8 b(T)g(A)31
-b(BEING)f(RENDERED)f(INA)m(CCURA)-8 b(TE)30 b(OR)e(LOSSES)g(SUS-)330
-4267 y(T)-8 b(AINED)43 b(BY)g(YOU)f(OR)g(THIRD)h(P)-8
-b(AR)g(TIES)42 b(OR)g(A)g(F)-10 b(AILURE)43 b(OF)f(THE)g(PR)m(OGRAM)330
-4376 y(TO)30 b(OPERA)-8 b(TE)29 b(WITH)i(ANY)f(OTHER)g(PR)m(OGRAMS\),)h
-(EVEN)f(IF)h(SUCH)e(HOLDER)h(OR)330 4486 y(OTHER)36 b(P)-8
-b(AR)g(TY)37 b(HAS)g(BEEN)f(AD)m(VISED)i(OF)f(THE)f(POSSIBILITY)f(OF)h
-(SUCH)g(D)m(AM-)330 4596 y(A)m(GES.)154 4740 y(17.)61
-b(In)m(terpretation)31 b(of)g(Sections)g(15)g(and)f(16.)330
-4884 y(If)d(the)h(disclaimer)g(of)f(w)m(arran)m(t)m(y)i(and)d
-(limitation)k(of)d(liabilit)m(y)j(pro)m(vided)d(ab)s(o)m(v)m(e)h
-(cannot)g(b)s(e)f(giv)m(en)330 4994 y(lo)s(cal)35 b(legal)h(e\013ect)g
-(according)f(to)f(their)h(terms,)g(reviewing)f(courts)g(shall)h(apply)e
-(lo)s(cal)j(la)m(w)e(that)330 5103 y(most)j(closely)i(appro)m(ximates)f
-(an)f(absolute)g(w)m(aiv)m(er)i(of)e(all)g(civil)i(liabilit)m(y)f(in)f
-(connection)h(with)330 5213 y(the)d(Program,)i(unless)d(a)h(w)m(arran)m
-(t)m(y)h(or)f(assumption)g(of)g(liabilit)m(y)i(accompanies)f(a)g(cop)m
-(y)g(of)f(the)330 5322 y(Program)c(in)f(return)f(for)h(a)h(fee.)p
-eop end
-%%Page: 11 13
-TeXDict begin 11 12 bop 150 -116 a Fv(GNU)31 b(GENERAL)f(PUBLIC)h
-(LICENSE)2006 b(11)150 299 y Fu(END)45 b(OF)g(TERMS)f(AND)h(CONDITIONS)
-150 556 y(Ho)l(w)h(to)f(Apply)f(These)h(T)-11 b(erms)45
-b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 716 y Fv(If)38
-b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m(ou)i(w)m(an)m(t)
-g(it)f(to)h(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible)d(use)h(to)150
-825 y(the)i(public,)i(the)f(b)s(est)e(w)m(a)m(y)i(to)g(ac)m(hiev)m(e)h
-(this)e(is)g(to)h(mak)m(e)g(it)g(free)f(soft)m(w)m(are)h(whic)m(h)f(ev)
-m(ery)m(one)i(can)150 935 y(redistribute)30 b(and)g(c)m(hange)h(under)e
-(these)i(terms.)275 1069 y(T)-8 b(o)29 b(do)h(so,)g(attac)m(h)h(the)f
-(follo)m(wing)h(notices)f(to)h(the)e(program.)40 b(It)30
-b(is)g(safest)g(to)g(attac)m(h)h(them)f(to)g(the)150
-1179 y(start)38 b(of)g(eac)m(h)g(source)g(\014le)f(to)h(most)g
-(e\013ectiv)m(ely)i(state)f(the)f(exclusion)g(of)f(w)m(arran)m(t)m(y;)
-42 b(and)37 b(eac)m(h)i(\014le)150 1289 y(should)29 b(ha)m(v)m(e)j(at)f
-(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i(p)s(oin)m(ter)g
-(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 1401
-y Fq(one)40 b(line)g(to)g(give)g(the)g(program's)h(name)f(and)g(a)g
-(brief)g(idea)g(of)g(what)g(it)g(does.)390 1488 y Fp(Copyright)h(\(C\))
-f Fq(year)49 b(name)40 b(of)g(author)390 1662 y Fp(This)g(program)h(is)
-f(free)g(software:)h(you)f(can)g(redistribute)i(it)e(and/or)g(modify)
-390 1749 y(it)g(under)g(the)g(terms)g(of)g(the)g(GNU)g(General)h
-(Public)f(License)h(as)f(published)h(by)390 1836 y(the)f(Free)g
-(Software)h(Foundation,)h(either)e(version)h(3)f(of)f(the)h(License,)h
-(or)f(\(at)390 1924 y(your)g(option\))h(any)f(later)g(version.)390
-2098 y(This)g(program)h(is)f(distributed)h(in)f(the)g(hope)g(that)g(it)
-g(will)g(be)g(useful,)h(but)390 2185 y(WITHOUT)g(ANY)f(WARRANTY;)h
-(without)g(even)f(the)g(implied)h(warranty)g(of)390 2272
-y(MERCHANTABILITY)i(or)c(FITNESS)i(FOR)f(A)g(PARTICULAR)h(PURPOSE.)80
-b(See)40 b(the)g(GNU)390 2359 y(General)h(Public)f(License)h(for)f
-(more)g(details.)390 2534 y(You)g(should)g(have)h(received)g(a)e(copy)h
-(of)g(the)g(GNU)g(General)h(Public)f(License)390 2621
-y(along)g(with)g(this)h(program.)80 b(If)40 b(not,)g(see)g
-(http://www.gnu.org/licenses/.)275 2756 y Fv(Also)31
-b(add)e(information)i(on)f(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g
-(electronic)j(and)d(pap)s(er)f(mail.)275 2890 y(If)e(the)i(program)f
-(do)s(es)f(terminal)i(in)m(teraction,)i(mak)m(e)e(it)g(output)f(a)g
-(short)g(notice)i(lik)m(e)f(this)f(when)f(it)150 3000
-y(starts)k(in)f(an)g(in)m(teractiv)m(e)j(mo)s(de:)390
-3112 y Fq(program)49 b Fp(Copyright)42 b(\(C\))e Fq(year)48
-b(name)41 b(of)e(author)390 3199 y Fp(This)h(program)h(comes)f(with)g
-(ABSOLUTELY)i(NO)e(WARRANTY;)h(for)f(details)h(type)f(`show)g(w'.)390
-3286 y(This)g(is)g(free)g(software,)h(and)f(you)g(are)g(welcome)h(to)e
-(redistribute)j(it)390 3373 y(under)e(certain)h(conditions;)h(type)e
-(`show)g(c')g(for)g(details.)275 3508 y Fv(The)27 b(h)m(yp)s(othetical)
-i(commands)f(`)p Fr(show)h(w)p Fv(')f(and)f(`)p Fr(show)j(c)p
-Fv(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of)150
-3617 y(the)i(General)h(Public)f(License.)41 b(Of)30 b(course,)h(y)m
-(our)f(program's)g(commands)f(migh)m(t)i(b)s(e)f(di\013eren)m(t;)h(for)
-f(a)150 3727 y(GUI)h(in)m(terface,)h(y)m(ou)f(w)m(ould)f(use)g(an)g
-(\\ab)s(out)h(b)s(o)m(x".)275 3861 y(Y)-8 b(ou)34 b(should)f(also)i
-(get)g(y)m(our)e(emplo)m(y)m(er)i(\(if)g(y)m(ou)f(w)m(ork)g(as)g(a)g
-(programmer\))g(or)g(sc)m(ho)s(ol,)i(if)d(an)m(y)-8 b(,)36
-b(to)150 3971 y(sign)d(a)g(\\cop)m(yrigh)m(t)h(disclaimer")g(for)e(the)
-h(program,)g(if)f(necessary)-8 b(.)48 b(F)-8 b(or)34
-b(more)e(information)h(on)g(this,)150 4081 y(and)d(ho)m(w)g(to)h(apply)
-f(and)g(follo)m(w)i(the)e(GNU)h(GPL,)g(see)g Fr
-(http://www.gnu.org/licen)o(ses)o(/)p Fv(.)275 4215 y(The)44
-b(GNU)h(General)g(Public)f(License)i(do)s(es)e(not)h(p)s(ermit)e
-(incorp)s(orating)i(y)m(our)g(program)f(in)m(to)150 4325
-y(proprietary)35 b(programs.)57 b(If)35 b(y)m(our)h(program)f(is)h(a)g
-(subroutine)f(library)-8 b(,)37 b(y)m(ou)f(ma)m(y)h(consider)e(it)i
-(more)150 4434 y(useful)30 b(to)i(p)s(ermit)e(linking)i(proprietary)e
-(applications)i(with)f(the)g(library)-8 b(.)43 b(If)31
-b(this)g(is)g(what)g(y)m(ou)g(w)m(an)m(t)150 4544 y(to)f(do,)g(use)f
-(the)g(GNU)h(Lesser)g(General)g(Public)f(License)h(instead)g(of)f(this)
-h(License.)40 b(But)30 b(\014rst,)f(please)150 4653 y(read)h
-Fr(http://www.gnu.org/philos)o(ophy)o(/why)o(-no)o(t-lg)o(pl.h)o(tml)o
-Fv(.)p eop end
-%%Page: 12 14
-TeXDict begin 12 13 bop 150 -116 a Fv(Con)m(tributors)30
-b(to)h(GNU)g Fr(gperf)e Fv(Utilit)m(y)2094 b(12)150 299
-y Fs(Con)l(tributors)50 b(to)j(GNU)h Fo(gperf)f Fs(Utilit)l(y)225
-533 y Ft(\017)60 b Fv(The)45 b(GNU)h Fr(gperf)d Fv(p)s(erfect)j(hash)e
-(function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p
-Fr(++)330 643 y Fv(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83
-b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i
-(generator)330 752 y(w)m(as)34 b(inspired)e(b)m(y)h(Keith)g(Bostic's)j
-(algorithm)e(written)f(in)g(C,)g(and)g(distributed)f(to)i(net.sources)
-330 862 y(around)42 b(1984.)79 b(The)42 b(curren)m(t)g(program)h(is)g
-(a)g(hea)m(vily)h(mo)s(di\014ed,)g(enhanced,)i(and)c(extended)330
-971 y(implemen)m(tation)d(of)e(Keith's)g(basic)h(idea,)h(created)f(at)g
-(the)f(Univ)m(ersit)m(y)h(of)g(California,)h(Irvine.)330
-1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)h(should)f(b)s(e)f
-(rep)s(orted)h(to)h Fr(<bug-gnu-gperf@gnu.org>)p Fv(.)225
-1215 y Ft(\017)60 b Fv(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h
-(Mic)m(hael)h(Tiemann)e(and)g(Doug)h(Lea,)g(for)f(pro)m(viding)g(a)h
-(useful)330 1325 y(compiler,)d(and)f(for)g(giving)h(me)g(a)g(forum)e
-(to)i(exhibit)g(m)m(y)f(creation.)330 1460 y(In)22 b(addition,)i(Adam)f
-(de)f(Bo)s(or)h(and)f(Nels)i(Olson)e(pro)m(vided)g(man)m(y)h(tips)f
-(and)g(insigh)m(ts)h(that)g(greatly)330 1569 y(help)s(ed)29
-b(impro)m(v)m(e)j(the)e(qualit)m(y)i(and)e(functionalit)m(y)h(of)g
-Fr(gperf)p Fv(.)225 1704 y Ft(\017)60 b Fv(Bruno)26 b(Haible)i
-(enhanced)f(and)f(optimized)i(the)f(searc)m(h)h(algorithm.)41
-b(He)27 b(also)h(rewrote)g(the)f(input)330 1813 y(routines)j(and)g(the)
-h(output)f(routines)g(for)g(b)s(etter)g(reliabilit)m(y)-8
-b(,)33 b(and)d(added)g(a)h(testsuite.)p eop end
-%%Page: 13 15
-TeXDict begin 13 14 bop 150 -116 a Fv(Chapter)30 b(1:)41
-b(In)m(tro)s(duction)2546 b(13)150 299 y Fs(1)80 b(In)l(tro)t(duction)
-275 533 y Fr(gperf)31 b Fv(is)j(a)f(p)s(erfect)h(hash)e(function)h
-(generator)i(written)e(in)g(C)p Fr(++)p Fv(.)49 b(It)33
-b(transforms)g(an)g Fn(n)f Fv(elemen)m(t)150 643 y(user-sp)s(eci\014ed)
-k(k)m(eyw)m(ord)i(set)g Fn(W)49 b Fv(in)m(to)39 b(a)e(p)s(erfect)h
-(hash)e(function)h Fn(F)p Fv(.)h Fn(F)44 b Fv(uniquely)37
-b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fn(W)47 b Fv(on)m(to)36
-b(the)f(range)g(0..)p Fn(k)p Fv(,)j(where)c Fn(k)40 b
-Fr(>)p Fv(=)35 b Fn(n-1)p Fv(.)54 b(If)35 b Fn(k)40 b
-Fv(=)35 b Fn(n-1)42 b Fv(then)35 b Fn(F)42 b Fv(is)35
-b(a)g Fm(minimal)46 b Fv(p)s(erfect)35 b(hash)150 862
-y(function.)68 b Fr(gperf)39 b Fv(generates)i(a)f(0..)p
-Fn(k)46 b Fv(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i
-(pair)e(of)h(C)f(functions.)150 971 y(These)34 b(functions)g(determine)
-h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fn(s)j
-Fv(o)s(ccurs)c(in)g Fn(W)p Fv(,)h(using)e(at)j(most)150
-1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275
-1215 y Fr(gperf)22 b Fv(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h
-(k)m(eyw)m(ord)g(recognizer)i(for)d(lexical)j(analyzers)e(in)g(sev)m
-(eral)150 1325 y(pro)s(duction)30 b(and)g(researc)m(h)h(compilers)g
-(and)g(language)h(pro)s(cessing)e(to)s(ols,)i(including)e(GNU)i(C,)e
-(GNU)150 1435 y(C)p Fr(++)p Fv(,)24 b(GNU)f(Ja)m(v)-5
-b(a,)26 b(GNU)d(P)m(ascal,)j(GNU)e(Mo)s(dula)f(3,)i(and)d(GNU)h(inden)m
-(t.)38 b(Complete)24 b(C)p Fr(++)e Fv(source)h(co)s(de)150
-1544 y(for)42 b Fr(gperf)f Fv(is)h(a)m(v)-5 b(ailable)44
-b(from)e Fr(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p
-Fv(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fr(gperf)p
-Fv('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f
-(a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150
-1763 y(C)p Fr(++)29 b Fv(Conference)g(pro)s(ceedings)h(or)g(from)f
-Fr(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p
-Fv(.)p eop end
-%%Page: 14 16
-TeXDict begin 14 15 bop 150 -116 a Fv(Chapter)30 b(2:)41
-b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fr(gperf)1425
-b Fv(14)150 299 y Fs(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j
-(GNU)f Fo(gperf)275 533 y Fv(A)24 b Fn(static)i(searc)m(h)f(structure)k
-Fv(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m
-(tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fm(initialize)p
-Fv(,)g Fm(insert)p Fv(,)f(and)f Fm(r)-5 b(etrieve)p Fv(.)42
-b(Conceptually)-8 b(,)32 b(all)g(insertions)f(o)s(ccur)f(b)s(efore)h
-(an)m(y)g(retriev)-5 b(als.)150 752 y(In)20 b(practice,)25
-b Fr(gperf)19 b Fv(generates)k(a)e Fm(static)27 b Fv(arra)m(y)22
-b(con)m(taining)g(searc)m(h)g(set)f(k)m(eyw)m(ords)h(and)e(an)m(y)h
-(asso)s(ciated)150 862 y(attributes)37 b(sp)s(eci\014ed)f(b)m(y)h(the)f
-(user.)59 b(Th)m(us,)37 b(there)g(is)g(essen)m(tially)h(no)f
-(execution-time)i(cost)e(for)g(the)150 971 y(insertions.)j(It)27
-b(is)g(a)g(useful)g(data)g(structure)g(for)g(represen)m(ting)g
-Fm(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fv(.)40 b(Static)28
-b(searc)m(h)g(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)h(in)f(soft)m(w)
-m(are)i(system)e(applications.)40 b(T)m(ypical)25 b(static)h(searc)m(h)
-f(sets)g(include)f(compiler)150 1191 y(reserv)m(ed)42
-b(w)m(ords,)j(assem)m(bler)e(instruction)f(op)s(co)s(des,)j(and)c
-(built-in)h(shell)h(in)m(terpreter)f(commands.)150 1300
-y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fn(k)m(eyw)m(ords)p
-Fv(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k
-(usually)150 1410 y(during)29 b(program)h(initialization,)k(and)c(are)g
-(not)h(generally)h(mo)s(di\014ed)d(at)i(run-time.)275
-1544 y(Numerous)c(static)i(searc)m(h)g(structure)e(implemen)m(tations)i
-(exist,)h(e.g.,)f(arra)m(ys,)g(link)m(ed)g(lists,)g(binary)150
-1654 y(searc)m(h)45 b(trees,)j(digital)d(searc)m(h)g(tries,)j(and)43
-b(hash)g(tables.)83 b(Di\013eren)m(t)45 b(approac)m(hes)g(o\013er)f
-(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)g(and)f
-(searc)m(h)g(time)g(e\016ciency)-8 b(.)77 b(F)-8 b(or)42
-b(example,)k(an)41 b Fn(n)h Fv(elemen)m(t)h(sorted)150
-1873 y(arra)m(y)d(is)g(space)h(e\016cien)m(t,)i(though)d(the)g(a)m(v)m
-(erage-case)k(time)c(complexit)m(y)i(for)e(retriev)-5
-b(al)41 b(op)s(erations)150 1983 y(using)31 b(binary)f(searc)m(h)i(is)f
-(prop)s(ortional)g(to)g(log)i Fn(n)p Fv(.)42 b(Con)m(v)m(ersely)-8
-b(,)33 b(hash)d(table)i(implemen)m(tations)h(often)150
-2092 y(lo)s(cate)27 b(a)f(table)g(en)m(try)g(in)f(constan)m(t)i(time,)g
-(but)e(t)m(ypically)i(imp)s(ose)e(additional)i(memory)e(o)m(v)m(erhead)
-i(and)150 2202 y(exhibit)k(p)s(o)s(or)e(w)m(orst)i(case)g(p)s
-(erformance.)275 2336 y Fm(Minimal)26 b(p)-5 b(erfe)g(ct)28
-b(hash)f(functions)32 b Fv(pro)m(vide)24 b(an)f(optimal)i(solution)f
-(for)f(a)h(particular)g(class)h(of)e(static)150 2446
-y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)f(p)s(erfect)g(hash)g
-(function)g(is)h(de\014ned)e(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225
-2580 y Ft(\017)60 b Fv(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition)
-h(in)e(a)h(static)h(searc)m(h)f(set)g(using)f(at)h(most)g
-Fm(one)41 b Fv(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30
-b(table.)41 b(This)30 b(represen)m(ts)g(the)h(\\p)s(erfect")g(prop)s
-(ert)m(y)-8 b(.)225 2824 y Ft(\017)60 b Fv(The)35 b(actual)j(memory)e
-(allo)s(cated)i(to)e(store)h(the)f(k)m(eyw)m(ords)h(is)f(precisely)g
-(large)h(enough)f(for)g(the)330 2934 y(k)m(eyw)m(ord)31
-b(set,)g(and)f Fm(no)j(lar)-5 b(ger)p Fv(.)42 b(This)29
-b(is)i(the)f(\\minimal")i(prop)s(ert)m(y)-8 b(.)275 3093
-y(F)g(or)38 b(most)g(applications)h(it)f(is)g(far)f(easier)i(to)f
-(generate)h Fm(p)-5 b(erfe)g(ct)47 b Fv(hash)37 b(functions)g(than)h
-Fm(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fv(hash)36
-b(functions.)60 b(Moreo)m(v)m(er,)41 b(non-minimal)c(p)s(erfect)g(hash)
-f(functions)g(frequen)m(tly)i(execute)150 3313 y(faster)44
-b(than)g(minimal)g(ones)g(in)f(practice.)83 b(This)43
-b(phenomena)g(o)s(ccurs)g(since)h(searc)m(hing)h(a)f(sparse)150
-3422 y(k)m(eyw)m(ord)34 b(table)g(increases)g(the)g(probabilit)m(y)f
-(of)h(lo)s(cating)h(a)e(\\n)m(ull")i(en)m(try)-8 b(,)35
-b(thereb)m(y)e(reducing)g(string)150 3532 y(comparisons.)56
-b Fr(gperf)p Fv('s)34 b(default)h(b)s(eha)m(vior)g(generates)i
-Fm(ne)-5 b(ar-minimal)47 b Fv(p)s(erfect)35 b(hash)f(functions)h(for)
-150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44
-b Fr(gperf)39 b Fv(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f
-(user)g(con)m(trol)i(o)m(v)m(er)g(the)150 3751 y(degree)31
-b(of)g(minimalit)m(y)g(and)f(p)s(erfection.)275 3885
-y(Static)37 b(searc)m(h)f(sets)g(often)g(exhibit)g(relativ)m(e)i
-(stabilit)m(y)f(o)m(v)m(er)g(time.)58 b(F)-8 b(or)36
-b(example,)i(Ada's)e(63)h(re-)150 3995 y(serv)m(ed)31
-b(w)m(ords)f(ha)m(v)m(e)i(remained)e(constan)m(t)i(for)f(nearly)g(a)g
-(decade.)42 b(It)31 b(is)g(therefore)g(frequen)m(tly)g(w)m(orth-)150
-4105 y(while)22 b(to)h(exp)s(end)e(concerted)i(e\013ort)g(building)e
-(an)h(optimal)i(searc)m(h)e(structure)g Fm(onc)-5 b(e)p
-Fv(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f
-(use)e(m)m(ultiple)i(times.)39 b Fr(gperf)22 b Fv(remo)m(v)m(es)i(the)f
-(drudgery)f(asso)s(ciated)j(with)d(constructing)150 4324
-y(time-)38 b(and)f(space-e\016cien)m(t)j(searc)m(h)d(structures)g(b)m
-(y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)g(and)f
-(practical)150 4433 y(to)s(ol)29 b(for)f(serious)g(programming)g(pro)5
-b(jects.)40 b(Output)27 b(from)h Fr(gperf)e Fv(is)i(curren)m(tly)h
-(used)e(in)h(sev)m(eral)h(pro-)150 4543 y(duction)d(and)e(researc)m(h)j
-(compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fr(++)p
-Fv(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150
-4653 y(GNU)38 b(Mo)s(dula)f(3.)63 b(The)36 b(latter)j(t)m(w)m(o)g
-(compilers)f(are)f(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)h(GNU)f
-(distribu-)150 4762 y(tion.)51 b(Eac)m(h)34 b(compiler)g(utilizes)h
-Fr(gperf)d Fv(to)i(automatically)i(generate)f(static)g(searc)m(h)f
-(structures)f(that)150 4872 y(e\016cien)m(tly)f(iden)m(tify)f(their)f
-(resp)s(ectiv)m(e)i(reserv)m(ed)e(k)m(eyw)m(ords.)p eop
-end
-%%Page: 15 17
-TeXDict begin 15 16 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(15)150 299 y Fs(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g
-Fo(gperf)275 555 y Fv(The)29 b(p)s(erfect)h(hash)g(function)g
-(generator)h Fr(gperf)e Fv(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i
-(from)d(an)i(input)e(\014le)150 664 y(\(or)34 b(from)g(the)g(standard)f
-(input)g(b)m(y)h(default\).)52 b(It)34 b(attempts)h(to)f(deriv)m(e)h(a)
-f(p)s(erfect)g(hashing)f(function)150 774 y(that)k(recognizes)i(a)e
-(mem)m(b)s(er)f(of)h(the)g Fn(static)h(k)m(eyw)m(ord)f(set)j
-Fv(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150
-884 y(lo)s(okup)26 b(table.)41 b(If)26 b Fr(gperf)f Fv(succeeds)i(in)g
-(generating)h(suc)m(h)e(a)h(function)f(it)i(pro)s(duces)d(a)i(pair)g
-(of)f(C)h(source)150 993 y(co)s(de)39 b(routines)g(that)h(p)s(erform)d
-(hashing)i(and)f(table)i(lo)s(okup)e(recognition.)69
-b(All)39 b(generated)h(C)f(co)s(de)150 1103 y(is)f(directed)g(to)g(the)
-g(standard)f(output.)62 b(Command-line)38 b(options)g(describ)s(ed)e(b)
-s(elo)m(w)i(allo)m(w)h(y)m(ou)f(to)150 1212 y(mo)s(dify)30
-b(the)g(input)g(and)f(output)h(format)h(to)g Fr(gperf)p
-Fv(.)275 1354 y(By)23 b(default,)i Fr(gperf)d Fv(attempts)i(to)g(pro)s
-(duce)e(time-e\016cien)m(t)k(co)s(de,)f(with)e(less)h(emphasis)e(on)h
-(e\016cien)m(t)150 1464 y(space)31 b(utilization.)43
-b(Ho)m(w)m(ev)m(er,)33 b(sev)m(eral)e(options)g(exist)g(that)g(p)s
-(ermit)f(trading-o\013)h(execution)h(time)f(for)150 1573
-y(storage)i(space)f(and)g(vice)g(v)m(ersa.)46 b(In)31
-b(particular,)h(expanding)f(the)h(generated)h(table)g(size)f(pro)s
-(duces)f(a)150 1683 y(sparse)26 b(searc)m(h)g(structure,)h(generally)g
-(yielding)f(faster)h(searc)m(hes.)40 b(Con)m(v)m(ersely)-8
-b(,)28 b(y)m(ou)f(can)f(direct)g Fr(gperf)150 1793 y
-Fv(to)21 b(utilize)h(a)f(C)f Fr(switch)f Fv(statemen)m(t)k(sc)m(heme)e
-(that)g(minimizes)g(data)g(space)g(storage)h(size.)39
-b(F)-8 b(urthermore,)150 1902 y(using)40 b(a)g(C)g Fr(switch)e
-Fv(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5
-b(al)41 b(time)g(somewhat.)70 b(Actual)150 2012 y(results)30
-b(dep)s(end)f(on)h(y)m(our)g(C)g(compiler,)i(of)e(course.)275
-2154 y(In)44 b(general,)50 b Fr(gperf)44 b Fv(assigns)h(v)-5
-b(alues)46 b(to)g(the)f(b)m(ytes)h(it)g(is)f(using)g(for)g(hashing)f
-(un)m(til)i(some)f(set)150 2263 y(of)d(v)-5 b(alues)43
-b(giv)m(es)g(eac)m(h)h(k)m(eyw)m(ord)e(a)h(unique)e(v)-5
-b(alue.)77 b(A)42 b(helpful)f(heuristic)i(is)f(that)h(the)f(larger)h
-(the)150 2373 y(hash)36 b(v)-5 b(alue)37 b(range,)i(the)e(easier)h(it)f
-(is)g(for)f Fr(gperf)f Fv(to)j(\014nd)d(and)h(generate)i(a)f(p)s
-(erfect)g(hash)f(function.)150 2482 y(Exp)s(erimen)m(tation)31
-b(is)f(the)h(k)m(ey)g(to)g(getting)h(the)f(most)g(from)e
-Fr(gperf)p Fv(.)150 2726 y Fu(3.1)68 b(Input)44 b(F)-11
-b(ormat)46 b(to)f Fl(gperf)275 2885 y Fv(Y)-8 b(ou)38
-b(can)g(con)m(trol)i(the)e(input)f(\014le)h(format)g(b)m(y)g(v)-5
-b(arying)38 b(certain)g(command-line)h(argumen)m(ts,)h(in)150
-2995 y(particular)f(the)g(`)p Fr(-t)p Fv(')g(option.)66
-b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)h
-(utilities)g Fr(flex)e Fv(and)150 3104 y Fr(bison)29
-b Fv(\(or)i(UNIX)f(utilities)i Fr(lex)e Fv(and)f Fr(yacc)p
-Fv(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390
-3246 y Fr(declarations)390 3356 y(\045\045)390 3465 y(keywords)390
-3575 y(\045\045)390 3684 y(functions)275 3826 y Fm(Unlike)41
-b Fr(flex)35 b Fv(or)g Fr(bison)p Fv(,)h(the)g(declarations)g(section)h
-(and)e(the)h(functions)f(section)i(are)f(optional.)150
-3936 y(The)30 b(follo)m(wing)i(sections)f(describ)s(e)f(the)g(input)g
-(format)h(for)f(eac)m(h)h(section.)275 4078 y(It)h(is)g(p)s(ossible)g
-(to)h(omit)g(the)g(declaration)h(section)f(en)m(tirely)-8
-b(,)35 b(if)d(the)h(`)p Fr(-t)p Fv(')f(option)h(is)f(not)h(giv)m(en.)48
-b(In)150 4187 y(this)30 b(case)i(the)e(input)g(\014le)g(b)s(egins)g
-(directly)h(with)f(the)h(\014rst)e(k)m(eyw)m(ord)i(line,)g(e.g.:)390
-4329 y Fr(january)390 4439 y(february)390 4548 y(march)390
-4658 y(april)390 4767 y(...)150 4974 y Fk(3.1.1)63 b(Declarations)275
-5121 y Fv(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m
-(tains)g(a)f(section)g(for)f(including)g(arbitrary)h(C)f(declara-)150
-5230 y(tions)d(and)e(de\014nitions,)h Fr(gperf)f Fv(declarations)j
-(that)f(act)g(lik)m(e)h(command-line)f(options,)g(as)f(w)m(ell)i(as)e
-(for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fr(struct)p
-Fv(.)p eop end
-%%Page: 16 18
-TeXDict begin 16 17 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(16)150 299 y Fk(3.1.1.1)63 b(User-supplied)43 b
-Fj(struct)275 446 y Fv(If)24 b(the)h(`)p Fr(-t)p Fv(')f(option)h(\(or,)
-i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fr(\045struct-type)p
-Fv(')d(declaration\))k Fm(is)32 b Fv(enabled,)26 b(y)m(ou)f
-Fm(must)150 555 y Fv(pro)m(vide)37 b(a)f(C)h Fr(struct)d
-Fv(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h
-(section)f(from)f(the)h(input)f(\014le.)150 665 y(The)26
-b(\014rst)f(\014eld)h(in)g(this)g(struct)g(m)m(ust)g(b)s(e)g(of)g(t)m
-(yp)s(e)g Fr(char)j(*)d Fv(or)g Fr(const)j(char)h(*)25
-b Fv(if)h(the)h(`)p Fr(-P)p Fv(')f(option)g(is)h(not)150
-775 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fr(int)g Fv(if)g(the)g(option)
-h(`)p Fr(-P)p Fv(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32
-b(the)f(`)p Fr(\045pic)p Fv(')e(declaration\))j(is)f(enabled.)150
-884 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p
-Fr(name)p Fv(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e
-(its)i(name)g(with)f(the)150 994 y(`)p Fr(-K)p Fv(')30
-b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p
-Fr(\045define)f(slot-name)p Fv(')f(declaration\))k(describ)s(ed)e(b)s
-(elo)m(w.)275 1139 y(Here)g(is)h(a)g(simple)f(example,)h(using)f(mon)m
-(ths)g(of)h(the)f(y)m(ear)i(and)d(their)i(attributes)g(as)f(input:)390
-1284 y Fr(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i
-(days;)g(int)g(leap_days;)e(};)390 1393 y(\045\045)390
-1503 y(january,)141 b(1,)47 b(31,)g(31)390 1612 y(february,)93
-b(2,)47 b(28,)g(29)390 1722 y(march,)237 b(3,)47 b(31,)g(31)390
-1832 y(april,)237 b(4,)47 b(30,)g(30)390 1941 y(may,)333
-b(5,)47 b(31,)g(31)390 2051 y(june,)285 b(6,)47 b(30,)g(30)390
-2160 y(july,)285 b(7,)47 b(31,)g(31)390 2270 y(august,)189
-b(8,)47 b(31,)g(31)390 2380 y(september,)e(9,)i(30,)g(30)390
-2489 y(october,)93 b(10,)47 b(31,)g(31)390 2599 y(november,)e(11,)i
-(30,)g(30)390 2708 y(december,)e(12,)i(31,)g(31)275 2853
-y Fv(Separating)25 b(the)g Fr(struct)f Fv(declaration)i(from)f(the)g
-(list)h(of)f(k)m(eyw)m(ords)h(and)e(other)h(\014elds)g(are)g(a)h(pair)f
-(of)150 2963 y(consecutiv)m(e)33 b(p)s(ercen)m(t)f(signs,)f(`)p
-Fr(\045\045)p Fv(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h
-(\014rst)e(column,)i(as)f(in)g(the)h(UNIX)150 3072 y(utilit)m(y)g
-Fr(lex)p Fv(.)275 3217 y(If)k(the)i Fr(struct)d Fv(has)i(already)h(b)s
-(een)f(declared)h(in)f(an)g(include)g(\014le,)i(it)f(can)g(b)s(e)e(men)
-m(tioned)i(in)f(an)150 3327 y(abbreviated)31 b(form,)f(lik)m(e)i(this:)
-390 3472 y Fr(struct)46 b(month;)390 3581 y(\045\045)390
-3691 y(january,)141 b(1,)47 b(31,)g(31)390 3801 y(...)150
-4010 y Fk(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275
-4157 y Fv(The)31 b(declaration)j(section)g(can)e(con)m(tain)i
-Fr(gperf)c Fv(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m
-(y)h Fr(gperf)150 4267 y Fv(w)m(orks,)43 b(lik)m(e)f(command)f(line)g
-(options)g(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)i
-(is)f(equiv)-5 b(alen)m(t)42 b(to)g(a)150 4376 y(command)30
-b(line)h(option.)41 b(There)30 b(are)h(three)f(forms)g(of)h
-(declarations:)199 4521 y(1.)61 b(Declarations)33 b(without)d(argumen)m
-(t,)h(lik)m(e)h(`)p Fr(\045compare-lengths)p Fv('.)199
-4661 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h
-(`)p Fr(\045switch=)p Fi(count)11 b Fv('.)199 4801 y(3.)61
-b(Declarations)114 b(of)e(names)g(of)g(en)m(tities)i(in)d(the)h(output)
-g(\014le,)132 b(lik)m(e)114 b(`)p Fr(\045define)330 4910
-y(lookup-function-name)25 b Fi(name)11 b Fv('.)275 5085
-y(When)35 b(a)h(declaration)h(is)f(giv)m(en)g(b)s(oth)f(in)h(the)f
-(input)g(\014le)h(and)f(as)h(a)g(command)f(line)h(option,)i(the)150
-5195 y(command-line)31 b(option's)g(v)-5 b(alue)31 b(prev)-5
-b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fr(gperf)d
-Fv(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end
-%%Page: 17 19
-TeXDict begin 17 18 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(17)150 299 y(`)p Fr(\045delimiters=)p Fi(delimiter-lis)o(t)11
-b Fv(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g
-(con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630
-518 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h
-Fr(")p Fv(,)p Fr(")p Fv(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j
-(if)d(y)m(ou)h(w)m(an)m(t)630 628 y(to)c(use)f(k)m(eyw)m(ords)h(that)g
-(ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150
-774 y(`)p Fr(\045struct-type)p Fv(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i
-(include)e(a)h Fr(struct)d Fv(t)m(yp)s(e)j(declaration)h(for)e
-(generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 993
-y(for)f(an)g(example.)150 1139 y(`)p Fr(\045ignore-case)p
-Fv(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g
-(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83
-b(The)44 b(string)630 1358 y(comparison)28 b(will)h(use)f(a)h(case)g
-(insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29
-b(that)g(lo)s(cale)630 1468 y(dep)s(enden)m(t)g(case)j(mappings)d(are)i
-(ignored.)150 1614 y(`)p Fr(\045language=)p Fi(language-name)10
-b Fv(')630 1724 y(Instructs)33 b Fr(gperf)f Fv(to)i(generate)h(co)s(de)
-f(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)
-630 1833 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m
-(tly:)630 1979 y(`)p Fr(KR-C)p Fv(')238 b(Old-st)m(yle)27
-b(K&R)f(C.)g(This)f(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m
-(yle)i(C)e(com-)1110 2089 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)
-e(ANSI)f(C)h(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110
-2198 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m
-(king)i(`)p Fr(const)p Fv('.)630 2345 y(`)p Fr(C)p Fv(')382
-b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i
-(ANSI)g(C)f(compilers,)k(and)1110 2454 y(also)k(b)m(y)e(old-st)m(yle)i
-(C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fr(#define)f(const)f
-Fv(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m
-(w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p
-Fr(ANSI-C)p Fv(')142 b(ANSI)32 b(C.)g(This)f(language)j(is)e(understo)s
-(o)s(d)e(b)m(y)i(ANSI)g(C)f(\(C89,)j(ISO)d(C90\))1110
-2819 y(compilers,)g(ISO)e(C99)i(compilers,)g(and)f(C)p
-Fr(++)f Fv(compilers.)630 2966 y(`)p Fr(C++)p Fv(')286
-b(C)p Fr(++)p Fv(.)40 b(This)29 b(language)j(is)f(understo)s(o)s(d)d(b)
-m(y)i(C)p Fr(++)g Fv(compilers.)630 3112 y(The)g(default)g(is)h
-(ANSI-C.)150 3258 y(`)p Fr(\045define)e(slot-name)e Fi(name)11
-b Fv(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g
-(option)h(`)p Fr(-t)p Fv(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77
-b(the)630 3477 y(`)p Fr(\045struct-type)p Fv(')27 b(declaration\))32
-b(has)e(b)s(een)g(giv)m(en.)41 b(By)31 b(default,)f(the)g(program)g
-(assumes)630 3587 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m
-(ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fr(name)p
-Fv('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m
-(hoice)i(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s(onen)m(t,)k
-(although)d(it)g(still)630 3806 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g
-(\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fr(struct)p
-Fv(.)150 3952 y(`)p Fr(\045define)g(initializer-suffix)c
-Fi(initializers)11 b Fv(')630 4061 y(This)65 b(declaration)j(is)e(only)
-g(useful)f(when)g(option)h(`)p Fr(-t)p Fv(')g(\(or,)76
-b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fr(\045struct-type)
-p Fv(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58
-b(It)36 b(p)s(ermits)f(to)i(sp)s(ecify)e(initializers)630
-4281 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)i
-Fn(slot-name)51 b Fv(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630
-4390 y(The)d(list)g(of)h(initializers)g(should)e(start)i(with)f(a)g
-(comma.)77 b(By)42 b(default,)k(the)c(emitted)630 4500
-y(co)s(de)31 b(will)f(zero-initialize)k(structure)c(mem)m(b)s(ers)g
-(follo)m(wing)i Fn(slot-name)p Fv(.)150 4646 y(`)p Fr(\045define)d
-(hash-function-name)c Fi(name)11 b Fv(')630 4756 y(Allo)m(ws)31
-b(y)m(ou)f(to)g(sp)s(ecify)g(the)g(name)g(for)f(the)h(generated)h(hash)
-e(function.)40 b(Default)31 b(name)630 4865 y(is)f(`)p
-Fr(hash)p Fv('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h
-(t)m(w)m(o)g(hash)f(tables)h(in)f(the)h(same)g(\014le.)150
-5011 y(`)p Fr(\045define)e(lookup-function-name)24 b
-Fi(name)11 b Fv(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e
-(the)i(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75
-b(Default)630 5230 y(name)28 b(is)g(`)p Fr(in_word_set)p
-Fv('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f
-(hash)f(functions)630 5340 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g
-(application.)p eop end
-%%Page: 18 20
-TeXDict begin 18 19 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(18)150 299 y(`)p Fr(\045define)29 b(class-name)e
-Fi(name)11 b Fv(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e
-(when)h(option)g(`)p Fr(-L)30 b(C++)p Fv(')67 b(\(or,)77
-b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fr(\045language=C++)
-p Fv(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88
-b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s(ecify)g(the)630
-628 y(name)30 b(of)h(generated)g(C)p Fr(++)f Fv(class.)41
-b(Default)32 b(name)e(is)h Fr(Perfect_Hash)p Fv(.)150
-792 y(`)p Fr(\0457bit)p Fv(')190 b(This)36 b(option)i(sp)s(eci\014es)f
-(that)g(all)h(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m
-(ts)f(to)h(the)630 902 y(generated)e(hash)e(function)g(and)h(the)g
-(generated)g(lo)s(okup)g(function)f(will)h(solely)h(consist)630
-1011 y(of)d(7-bit)h(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g
-(range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630
-1121 y(functions)f Fr(isalnum)f Fv(and)i Fr(isgraph)e
-Fv(do)i Fm(not)41 b Fv(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f
-(this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p
-Fr(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fv(')f(guaran)m(tees)j(this.\))
-150 1395 y(`)p Fr(\045compare-lengths)p Fv(')630 1504
-y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h
-(string)e(comparison.)70 b(This)39 b(option)h(is)630
-1614 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h
-(3.3)f([Binary)g(Strings],)g(page)g(22\).)630 1724 y(It)g(also)h(migh)m
-(t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g
-(comparisons)g(made)g(during)f(the)630 1833 y(lo)s(okup,)i(since)g(k)m
-(eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h
-(compared)f(via)h Fr(strcmp)p Fv(.)630 1943 y(Ho)m(w)m(ev)m(er,)d
-(using)d(`)p Fr(\045compare-lengths)p Fv(')c(migh)m(t)29
-b(greatly)h(increase)f(the)g(size)g(of)g(the)f(gen-)630
-2052 y(erated)j(C)f(co)s(de)h(if)f(the)h(lo)s(okup)f(table)i(range)e
-(is)h(large)g(\(whic)m(h)g(implies)g(that)g(the)f(switc)m(h)630
-2162 y(option)24 b(`)p Fr(-S)p Fv(')g(or)g(`)p Fr(\045switch)p
-Fv(')f(is)h(not)g(enabled\),)i(since)e(the)g(length)h(table)f(con)m
-(tains)i(as)e(man)m(y)630 2271 y(elemen)m(ts)32 b(as)e(there)h(are)g
-(en)m(tries)g(in)f(the)g(lo)s(okup)g(table.)150 2436
-y(`)p Fr(\045compare-strncmp)p Fv(')630 2545 y(Generates)22
-b(C)f(co)s(de)g(that)h(uses)e(the)i Fr(strncmp)d Fv(function)h(to)i(p)s
-(erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i
-(is)f(to)g(use)f Fr(strcmp)p Fv(.)150 2819 y(`)p Fr
-(\045readonly-tables)p Fv(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m
-(ts)h(of)f(all)h(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)
-h(\\readonly".)630 3039 y(Man)m(y)31 b(compilers)g(can)g(generate)h
-(more)e(e\016cien)m(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h
-(tables)630 3148 y(in)f(readonly)h(memory)-8 b(.)150
-3313 y(`)p Fr(\045enum)p Fv(')190 b(De\014ne)31 b(constan)m(t)g(v)-5
-b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)f(the)g(lo)s(okup)f
-(function)g(rather)g(than)630 3422 y(with)37 b(#de\014nes.)60
-b(This)36 b(also)i(means)g(that)f(di\013eren)m(t)h(lo)s(okup)f
-(functions)g(can)g(reside)g(in)630 3532 y(the)31 b(same)f(\014le.)41
-b(Thanks)29 b(to)j(James)e(Clark)g Fr(<jjc@ai.mit.edu>)p
-Fv(.)150 3696 y(`)p Fr(\045includes)p Fv(')630 3806 y(Include)g(the)h
-(necessary)h(system)f(include)g(\014le,)g Fr(<string.h>)p
-Fv(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39
-b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e(user)f(m)m(ust)h
-(include)g(this)f(header)h(\014le)g(himself)630 4025
-y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150
-4189 y(`)p Fr(\045global-table)p Fv(')630 4299 y(Generate)38
-b(the)f(static)h(table)f(of)g(k)m(eyw)m(ords)g(as)g(a)g(static)h
-(global)g(v)-5 b(ariable,)39 b(rather)d(than)630 4408
-y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s(okup)f(function)g(\(whic)m
-(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)150 4573
-y(`)p Fr(\045pic)p Fv(')238 b(Optimize)42 b(the)f(generated)h(table)g
-(for)f(inclusion)g(in)g(shared)f(libraries.)73 b(This)40
-b(reduces)630 4682 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g
-(a)h(shared)e(library)h(con)m(taining)i(the)e(generated)630
-4792 y(co)s(de.)j(If)21 b(the)h(`)p Fr(\045struct-type)p
-Fv(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26
-b(the)c(option)g(`)p Fr(-t)p Fv('\))g(is)g(also)630 4902
-y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e
-(struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fr(int)p
-Fv(',)f(not)h(`)p Fr(char)630 5011 y(*)p Fv(',)h(b)s(ecause)f(it)i
-(will)e(con)m(tain)i(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h
-(instead)f(of)h(actual)h(strings.)630 5121 y(T)-8 b(o)33
-b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f
-(can)g(use)f(the)h(expression)f(`)p Fr(stringpool)630
-5230 y(+)e Fi(o)11 b Fv(',)33 b(where)f Fn(o)37 b Fv(is)c(the)g
-(o\013set.)48 b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s(e)f(c)m
-(hanged)h(through)f(the)630 5340 y(`)p Fr(\045define)d
-(string-pool-name)p Fv(')d(declaration.)p eop end
-%%Page: 19 21
-TeXDict begin 19 20 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(19)150 299 y(`)p Fr(\045define)29 b(string-pool-name)d
-Fi(name)11 b Fv(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f
-(the)g(name)g(of)g(the)g(generated)h(string)f(p)s(o)s(ol)g(created)h(b)
-m(y)f(the)630 518 y(declaration)48 b(`)p Fr(\045pic)p
-Fv(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47
-b(option)f(`)p Fr(-P)p Fv('\).)90 b(The)46 b(default)g(name)h(is)630
-628 y(`)p Fr(stringpool)p Fv('.)38 b(This)29 b(declaration)i(p)s
-(ermits)e(the)h(use)g(of)g(t)m(w)m(o)h(hash)e(tables)h(in)g(the)g(same)
-630 737 y(\014le,)39 b(with)d(`)p Fr(\045pic)p Fv(')g(and)g(ev)m(en)h
-(when)f(the)h(`)p Fr(\045global-table)p Fv(')c(declaration)38
-b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p
-Fr(-G)p Fv('\))f(is)h(giv)m(en.)150 1108 y(`)p Fr(\045null-strings)p
-Fv(')630 1218 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i
-(strings)e(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630
-1327 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f
-(a)h(shared)f(library)g(con)m(taining)630 1437 y(the)29
-b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m)m(uc)m(h)g(as)f(the)h
-(declaration)h(`)p Fr(\045pic)p Fv('\),)f(at)g(the)f(exp)s(ense)630
-1546 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e
-(time.)150 1807 y(`)p Fr(\045define)g(word-array-name)d
-Fi(name)11 b Fv(')630 1917 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f
-(the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e
-(hash)630 2027 y(table.)106 b(Default)53 b(name)e(is)h(`)p
-Fr(wordlist)p Fv('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g
-(of)g(t)m(w)m(o)630 2136 y(hash)37 b(tables)h(in)g(the)g(same)g
-(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fr(-G)p
-Fv(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630
-2246 y(`)p Fr(\045global-table)p Fv(')27 b(declaration\))33
-b(is)d(giv)m(en.)150 2507 y(`)p Fr(\045define)f(length-table-name)c
-Fi(name)11 b Fv(')630 2616 y(Allo)m(ws)36 b(y)m(ou)e(to)i(sp)s(ecify)e
-(the)h(name)f(for)g(the)h(generated)h(arra)m(y)f(con)m(taining)h(the)f
-(length)630 2726 y(table.)77 b(Default)43 b(name)g(is)f(`)p
-Fr(lengthtable)p Fv('.)74 b(This)41 b(option)i(p)s(ermits)e(the)h(use)g
-(of)h(t)m(w)m(o)630 2836 y(length)33 b(tables)h(in)f(the)g(same)g
-(\014le,)h(ev)m(en)g(when)e(the)h(option)h(`)p Fr(-G)p
-Fv(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)36 b(the)630
-2945 y(`)p Fr(\045global-table)p Fv(')27 b(declaration\))33
-b(is)d(giv)m(en.)150 3206 y(`)p Fr(\045switch=)p Fi(count)11
-b Fv(')630 3316 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)
-e(a)h Fr(switch)e Fv(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630
-3425 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37
-b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space)
-630 3535 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80
-b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630
-3645 y(ho)m(w)33 b(man)m(y)f Fr(switch)f Fv(statemen)m(ts)k(are)e
-(generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f
-Fr(switch)630 3754 y Fv(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i
-(a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h
-(the)g(elemen)m(ts)630 3864 y(in)38 b(eac)m(h)h Fr(switch)p
-Fv(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e
-(compilers)i(cannot)g(correctly)630 3973 y(generate)29
-b(co)s(de)f(for)f(large)h Fr(switch)e Fv(statemen)m(ts.)41
-b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630
-4083 y(Keith)k(Bostic's)h(original)f(C)f(program.)150
-4344 y(`)p Fr(\045omit-struct-type)p Fv(')630 4454 y(Prev)m(en)m(ts)f
-(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)h(to)g(the)f
-(output)f(\014le.)40 b(Use)28 b(this)f(option)630 4563
-y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150
-4864 y Fk(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275
-5011 y Fv(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i
-Fr(flex)d Fv(and)g Fr(bison)p Fv(,)h(it)g(is)g(p)s(ossible)g(to)g
-(directly)h(include)150 5121 y(C)i(source)h(text)g(and)f(commen)m(ts)h
-(v)m(erbatim)g(in)m(to)h(the)e(generated)i(output)e(\014le.)40
-b(This)29 b(is)g(accomplished)150 5230 y(b)m(y)37 b(enclosing)h(the)g
-(region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p
-Fr(\045{)p Fv(',)k(`)p Fr(\045})p Fv(')e(pairs.)61 b(Here)38
-b(is)f(an)g(input)150 5340 y(fragmen)m(t)31 b(based)f(on)g(the)h
-(previous)f(example)h(that)g(illustrates)g(this)g(feature:)p
-eop end
-%%Page: 20 22
-TeXDict begin 20 21 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(20)390 299 y Fr(\045{)390 408 y(#include)46 b(<assert.h>)390
-518 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h
-(into)g(the)h(output.)f(*/)390 628 y(int)h(return_month_days)c
-(\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390
-737 y(\045})390 847 y(struct)f(month)g({)i(char)f(*name;)f(int)h
-(number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 956
-y(\045\045)390 1066 y(january,)141 b(1,)47 b(31,)g(31)390
-1176 y(february,)93 b(2,)47 b(28,)g(29)390 1285 y(march,)237
-b(3,)47 b(31,)g(31)390 1395 y(...)150 1636 y Fk(3.1.2)63
-b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e(En)m(tries)275
-1783 y Fv(The)33 b(second)i(input)e(\014le)i(format)g(section)g(con)m
-(tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)h
-(at-)150 1893 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8
-b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fr(#)p
-Fv(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150
-2002 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p
-Fr(#)p Fv(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m
-(wing)h(new-)150 2112 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g
-(`)p Fr(\045)p Fv(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g
-(declaration)i(and)d(m)m(ust)h(not)150 2222 y(o)s(ccur)30
-b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 2399 y(The)36
-b(\014rst)g(\014eld)g(of)h(eac)m(h)g(non-commen)m(t)h(line)f(is)g(alw)m
-(a)m(ys)h(the)f(k)m(eyw)m(ord)g(itself.)60 b(It)37 b(can)g(b)s(e)f(giv)
-m(en)150 2508 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35
-b(a)g(simple)g(name,)i(i.e.,)g(without)e(surrounding)e(string)i
-(quotation)h(marks,)g(or)f(as)h(a)150 2618 y(string)i(enclosed)g(in)f
-(double-quotes,)j(in)d(C)h(syn)m(tax,)i(p)s(ossibly)d(with)g(bac)m
-(kslash)h(escap)s(es)g(lik)m(e)h Fr(\\")e Fv(or)150 2727
-y Fr(\\234)23 b Fv(or)i Fr(\\xa8)p Fv(.)37 b(In)24 b(either)h(case,)i
-(it)e(m)m(ust)f(start)h(righ)m(t)g(at)g(the)g(b)s(eginning)e(of)i(the)g
-(line,)h(without)e(leading)150 2837 y(whitespace.)58
-b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g
-(extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 2946
-y(\014rst)g(blank,)i(comma,)i(or)c(newline.)65 b(Here)39
-b(is)f(a)h(simple)g(example)g(tak)m(en)g(from)f(a)h(partial)h(list)f
-(of)f(C)150 3056 y(reserv)m(ed)31 b(w)m(ords:)390 3233
-y Fr(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g
-(c.gperf)f(file)390 3342 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g
-(C)g(reserved)f(words.)390 3452 y(unsigned)390 3562 y(sizeof)390
-3671 y(switch)390 3781 y(signed)390 3890 y(if)390 4000
-y(default)390 4110 y(for)390 4219 y(while)390 4329 y(return)275
-4506 y Fv(Note)38 b(that)f(unlik)m(e)g Fr(flex)f Fv(or)h
-Fr(bison)e Fv(the)j(\014rst)e(`)p Fr(\045\045)p Fv(')g(mark)m(er)i(ma)m
-(y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 4615
-y(section)32 b(is)e(empt)m(y)-8 b(.)275 4792 y(Additional)29
-b(\014elds)f(ma)m(y)h(optionally)h(follo)m(w)g(the)f(leading)g(k)m(eyw)
-m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150
-4902 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.)
-41 b(What)29 b(these)f(\014elds)g(mean)g(is)h(en)m(tirely)g(up)e(to)i
-(y)m(ou;)150 5011 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen)
-m(ts)g(of)f(the)h(user-de\014ned)d Fr(struct)h Fv(pro)m(vided)g(b)m(y)h
-(y)m(ou)h(in)f(the)150 5121 y(declaration)40 b(section.)67
-b(If)39 b(the)g(`)p Fr(-t)p Fv(')f(option)h(\(or,)j(equiv)-5
-b(alen)m(tly)d(,)43 b(the)c(`)p Fr(\045struct-type)p
-Fv(')d(declaration\))150 5230 y(is)g Fm(not)45 b Fv(enabled)36
-b(these)g(\014elds)g(are)g(simply)f(ignored.)58 b(All)36
-b(previous)g(examples)g(except)h(the)f(last)h(one)150
-5340 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)p
-eop end
-%%Page: 21 23
-TeXDict begin 21 22 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(21)150 299 y Fk(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10
-b(unctions)275 446 y Fv(The)30 b(optional)i(third)e(section)i(also)g
-(corresp)s(onds)d(closely)j(with)f(con)m(v)m(en)m(tions)i(found)c(in)i
-Fr(flex)f Fv(and)150 555 y Fr(bison)p Fv(.)36 b(All)23
-b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p
-Fr(\045\045)p Fv(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g
-(input)150 665 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h
-(the)f(generated)h(output)f(\014le.)42 b(Naturally)-8
-b(,)33 b(it)e(is)g(y)m(our)g(resp)s(onsibilit)m(y)150
-775 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f
-(section)h(is)g(v)-5 b(alid)30 b(C.)150 982 y Fk(3.1.4)63
-b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g
-Fj(indent)p Fk(.)275 1129 y Fv(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m
-(v)m(ok)m(e)h(GNU)f Fr(indent)e Fv(on)h(a)g Fr(gperf)f
-Fv(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g
-Fr(indent)150 1239 y Fv(do)s(esn't)33 b(understand)e(the)i(`)p
-Fr(\045\045)p Fv(',)h(`)p Fr(\045{)p Fv(')e(and)h(`)p
-Fr(\045})p Fv(')g(directiv)m(es)h(that)f(con)m(trol)i
-Fr(gperf)p Fv('s)c(in)m(terpretation)k(of)150 1348 y(the)23
-b(input)f(\014le.)38 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g
-(insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fr(indent)p
-Fv(.)36 b(More)24 b(precisely)-8 b(,)150 1458 y(assuming)30
-b(the)h(most)f(general)i(input)d(\014le)i(structure)390
-1600 y Fr(declarations)44 b(part)j(1)390 1710 y(\045{)390
-1820 y(verbatim)f(code)390 1929 y(\045})390 2039 y(declarations)e(part)
-j(2)390 2148 y(\045\045)390 2258 y(keywords)390 2368
-y(\045\045)390 2477 y(functions)150 2620 y Fv(y)m(ou)31
-b(w)m(ould)f(insert)g(`)p Fr(*INDENT-OFF*)p Fv(')e(and)h(`)p
-Fr(*INDENT-ON*)p Fv(')f(commen)m(ts)k(as)e(follo)m(ws:)390
-2763 y Fr(/*)47 b(*INDENT-OFF*)e(*/)390 2872 y(declarations)f(part)j(1)
-390 2982 y(\045{)390 3091 y(/*)g(*INDENT-ON*)e(*/)390
-3201 y(verbatim)h(code)390 3310 y(/*)h(*INDENT-OFF*)e(*/)390
-3420 y(\045})390 3530 y(declarations)f(part)j(2)390 3639
-y(\045\045)390 3749 y(keywords)390 3858 y(\045\045)390
-3968 y(/*)g(*INDENT-ON*)e(*/)390 4078 y(functions)150
-4322 y Fu(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f
-(Co)t(de)g(with)g Fl(gperf)275 4482 y Fv(Sev)m(eral)28
-b(options)g(con)m(trol)h(ho)m(w)e(the)h(generated)h(C)e(co)s(de)h(app)s
-(ears)e(on)i(the)g(standard)e(output.)40 b(Tw)m(o)150
-4591 y(C)i(functions)g(are)h(generated.)77 b(They)42
-b(are)h(called)g Fr(hash)f Fv(and)f Fr(in_word_set)p
-Fv(,)i(although)g(y)m(ou)f(ma)m(y)150 4701 y(mo)s(dify)30
-b(their)g(names)h(with)f(a)h(command-line)g(option.)42
-b(Both)31 b(functions)f(require)g(t)m(w)m(o)i(argumen)m(ts,)g(a)150
-4811 y(string,)h Fr(char)c(*)i Fn(str)p Fv(,)i(and)e(a)i(length)f
-(parameter,)h Fr(int)e Fn(len)p Fv(.)46 b(Their)31 b(default)h
-(function)g(protot)m(yp)s(es)h(are)150 4920 y(as)e(follo)m(ws:)3350
-5121 y([F)-8 b(unction])-3599 b Fh(unsigned)55 b(int)e(hash)47
-b Fg(\()p Fn(const)31 b(c)m(har)g(*)f Ff(str)p Fn(,)i(unsigned)d(in)m
-(t)i Ff(len)12 b Fg(\))390 5230 y Fv(By)35 b(default,)h(the)e
-(generated)i Fr(hash)d Fv(function)h(returns)f(an)i(in)m(teger)h(v)-5
-b(alue)34 b(created)i(b)m(y)e(adding)390 5340 y Fn(len)28
-b Fv(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fn(str)34
-b Fv(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f
-Fn(asso)s(ciated)i(v)-5 b(alues)32 b Fv(table)p eop end
-%%Page: 22 24
-TeXDict begin 22 23 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(22)390 299 y(stored)28 b(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8
-b(.)41 b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f
-(constructed)g(in)m(ternally)h(b)m(y)390 408 y Fr(gperf)34
-b Fv(and)g(later)i(output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i
-(called)g(`)p Fr(hash_table)p Fv('.)52 b(The)35 b(relev)-5
-b(an)m(t)390 518 y(selected)28 b(p)s(ositions)f(\(i.e.)41
-b(indices)27 b(in)m(to)h Fn(str)7 b Fv(\))26 b(are)h(sp)s(eci\014ed)f
-(via)i(the)f(`)p Fr(-k)p Fv(')g(option)g(when)f(running)390
-628 y Fr(gperf)p Fv(,)j(as)i(detailed)g(in)f(the)h Fm(Options)39
-b Fv(section)31 b(b)s(elo)m(w)g(\(see)g(Chapter)f(4)h([Options],)f
-(page)h(24\).)3350 830 y([F)-8 b(unction])-3599 b Fh(in_word_set)49
-b Fg(\()p Fn(const)31 b(c)m(har)g(*)g Ff(str)p Fn(,)g(unsigned)e(in)m
-(t)i Ff(len)12 b Fg(\))390 939 y Fv(If)33 b Fn(str)41
-b Fv(is)33 b(in)h(the)g(k)m(eyw)m(ord)g(set,)i(returns)c(a)j(p)s(oin)m
-(ter)f(to)g(that)h(k)m(eyw)m(ord.)51 b(More)35 b(exactly)-8
-b(,)37 b(if)d(the)390 1049 y(option)d(`)p Fr(-t)p Fv(')g(\(or,)g(equiv)
--5 b(alen)m(tly)d(,)33 b(the)e(`)p Fr(\045struct-type)p
-Fv(')d(declaration\))k(w)m(as)f(giv)m(en,)h(it)f(returns)f(a)390
-1159 y(p)s(oin)m(ter)g(to)h(the)g(matc)m(hing)h(k)m(eyw)m(ord's)e
-(structure.)41 b(Otherwise)30 b(it)h(returns)e Fr(NULL)p
-Fv(.)275 1361 y(If)39 b(the)i(option)f(`)p Fr(-c)p Fv(')g(\(or,)j
-(equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p Fr(\045compare-strncmp)p
-Fv(')36 b(declaration\))42 b(is)e(not)g(used,)150 1470
-y Fn(str)k Fv(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h(string)f(of)h
-(exactly)h(length)e Fn(len)p Fv(.)62 b(If)37 b(`)p Fr(-c)p
-Fv(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)150
-1580 y(`)p Fr(\045compare-strncmp)p Fv(')22 b(declaration\))28
-b(is)e(used,)g Fn(str)32 b Fv(m)m(ust)26 b(simply)g(b)s(e)f(an)h(arra)m
-(y)g(of)g Fn(len)g Fv(b)m(ytes)h(and)e(do)s(es)150 1689
-y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275
-1833 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions)
-e(is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150
-2006 y(`)p Fr(-t)p Fv(')150 2115 y(`)p Fr(--struct-type)p
-Fv(')630 2225 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f
-Fr(struct)p Fv(.)150 2393 y(`)p Fr(-S)h Fi(total-switch-statements)10
-b Fv(')150 2503 y(`)p Fr(--switch=)p Fi(total-switch-sta)o(teme)o(nts)g
-Fv(')630 2612 y(Generate)22 b(1)f(or)g(more)g(C)f Fr(switch)f
-Fv(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and)c(p)s(oten)m
-(tially)630 2722 y(sparse\))j(static)h(arra)m(y)-8 b(.)40
-b(Although)23 b(the)g(exact)h(time)g(and)e(space)i(sa)m(vings)g(of)f
-(this)g(approac)m(h)630 2831 y(v)-5 b(ary)32 b(according)g(to)h(y)m
-(our)e(C)g(compiler's)i(degree)f(of)g(optimization,)i(this)d(metho)s(d)
-h(often)630 2941 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.)275
-3114 y(If)c(the)h(`)p Fr(-t)p Fv(')g(and)f(`)p Fr(-S)p
-Fv(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31
-b(the)d(`)p Fr(\045struct-type)p Fv(')d(and)i(`)p Fr(\045switch)p
-Fv(')g(declara-)150 3223 y(tions\))f(are)f(omitted,)i(the)e(default)g
-(action)h(is)f(to)h(generate)g(a)g Fr(char)j(*)24 b Fv(arra)m(y)i(con)m
-(taining)g(the)f(k)m(eyw)m(ords,)150 3333 y(together)32
-b(with)e(additional)i(empt)m(y)f(strings)f(used)g(for)g(padding)g(the)g
-(arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)h(with)150
-3442 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f
-(timing)g(the)h(resulting)f(C)g(co)s(de,)h(y)m(ou)f(can)h(determine)150
-3552 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m
-(eyw)m(ord)h(set)g(c)m(haracteristics.)150 3798 y Fu(3.3)68
-b(Use)46 b(of)f(NUL)g(b)l(ytes)275 3957 y Fv(By)30 b(default,)h(the)f
-(co)s(de)g(generated)i(b)m(y)e Fr(gperf)e Fv(op)s(erates)j(on)f(zero)h
-(terminated)g(strings,)f(the)g(usual)150 4067 y(represen)m(tation)41
-b(of)e(strings)h(in)f(C.)h(This)e(means)i(that)g(the)g(k)m(eyw)m(ords)g
-(in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 4176 y(con)m(tain)d(NUL)
-f(b)m(ytes,)i(and)e(the)g Fn(str)42 b Fv(argumen)m(t)36
-b(passed)g(to)g Fr(hash)f Fv(or)h Fr(in_word_set)d Fv(m)m(ust)j(b)s(e)f
-(NUL)150 4286 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f
-Fn(len)p Fv(.)275 4429 y(If)k(option)i(`)p Fr(-c)p Fv(')f(\(or,)i
-(equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fr(\045compare-strncmp)p
-Fv(')c(declaration\))38 b(is)e(used,)h(then)f(the)150
-4539 y Fn(str)e Fv(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e
-(NUL)h(terminated.)41 b(The)27 b(co)s(de)h(generated)h(b)m(y)f
-Fr(gperf)f Fv(will)h(only)150 4649 y(access)h(the)f(\014rst)g
-Fn(len)p Fv(,)g(not)h Fn(len)p Fr(+)p Fn(1)p Fv(,)f(b)m(ytes)h
-(starting)g(at)f Fn(str)p Fv(.)40 b(Ho)m(w)m(ev)m(er,)31
-b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150
-4758 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275
-4902 y(If)35 b(option)i(`)p Fr(-l)p Fv(')f(\(or,)i(equiv)-5
-b(alen)m(tly)d(,)40 b(the)c(`)p Fr(\045compare-lengths)p
-Fv(')c(declaration\))38 b(is)e(used,)h(then)f(the)150
-5011 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47
-b(The)33 b(k)m(eyw)m(ords)g(in)f(the)h(input)f(\014le)g(ma)m(y)i(con)m
-(tain)g(NUL)150 5121 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m
-(tax)g(as)g Fr(\\000)f Fv(or)h Fr(\\x00)p Fv(,)i(and)d(the)h(co)s(de)g
-(generated)h(b)m(y)f Fr(gperf)f Fv(will)150 5230 y(treat)i(NUL)e(lik)m
-(e)i(an)m(y)f(other)g(b)m(yte.)75 b(Also,)45 b(in)c(this)g(case)i(the)f
-(`)p Fr(-c)p Fv(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47
-b(the)150 5340 y(`)p Fr(\045compare-strncmp)p Fv(')26
-b(declaration\))33 b(is)d(ignored.)p eop end
-%%Page: 23 25
-TeXDict begin 23 24 bop 150 -116 a Fv(Chapter)30 b(3:)41
-b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fr(gperf)1520
-b Fv(23)150 299 y Fu(3.4)68 b(The)45 b(Cop)l(yrigh)l(t)h(of)f(the)g
-(Output)275 458 y Fr(gperf)24 b Fv(is)i(under)f(GPL,)h(but)f(that)i(do)
-s(es)e(not)h(cause)h(the)f(output)g(pro)s(duced)e(b)m(y)i
-Fr(gperf)e Fv(to)j(b)s(e)e(under)150 568 y(GPL.)35 b(The)f(reason)g(is)
-h(that)g(the)f(output)g(con)m(tains)i(only)f(small)g(pieces)g(of)f
-(text)i(that)f(come)g(directly)150 677 y(from)f Fr(gperf)p
-Fv('s)f(source)h(co)s(de)h({)g(only)f(ab)s(out)g(7)h(lines)f(long,)i
-(to)s(o)g(small)e(for)g(b)s(eing)g(signi\014can)m(t)i({,)g(and)150
-787 y(therefore)31 b(the)f(output)g(is)h(not)f(a)h(\\w)m(ork)g(based)f
-(on)g Fr(gperf)p Fv(")g(\(in)g(the)h(sense)f(of)h(the)f(GPL)h(v)m
-(ersion)f(3\).)275 922 y(On)i(the)h(other)h(hand,)f(the)g(output)g(pro)
-s(duced)f(b)m(y)h Fr(gperf)e Fv(con)m(tains)k(essen)m(tially)g(all)f
-(of)f(the)h(input)150 1031 y(\014le.)40 b(Therefore)26
-b(the)h(output)g(is)g(a)g(\\deriv)-5 b(ativ)m(e)29 b(w)m(ork")e(of)g
-(the)g(input)f(\(in)h(the)g(sense)g(of)g(U.S.)g(cop)m(yrigh)m(t)150
-1141 y(la)m(w\);)42 b(and)37 b(its)h(cop)m(yrigh)m(t)g(status)g(dep)s
-(ends)e(on)h(the)g(cop)m(yrigh)m(t)i(of)f(the)f(input.)61
-b(F)-8 b(or)38 b(most)f(soft)m(w)m(are)150 1250 y(licenses,)28
-b(the)e(result)g(is)g(that)h(the)f(the)g(output)f(is)h(under)f(the)h
-(same)g(license,)i(with)e(the)g(same)h(cop)m(yrigh)m(t)150
-1360 y(holder,)j(as)h(the)f(input)g(that)h(w)m(as)g(passed)e(to)j
-Fr(gperf)p Fv(.)p eop end
-%%Page: 24 26
-TeXDict begin 24 25 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(24)150 299 y
-Fs(4)80 b(In)l(v)l(oking)52 b Fo(gperf)275 586 y Fv(There)35
-b(are)i Fm(many)46 b Fv(options)36 b(to)i Fr(gperf)p
-Fv(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f
-(more)g(con-)150 695 y(v)m(enien)m(t)f(for)e(use)g(with)g(real)h
-(applications.)50 b(\\On-line")34 b(help)f(is)g(readily)h(a)m(v)-5
-b(ailable)36 b(via)e(the)f(`)p Fr(--help)p Fv(')150 805
-y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150
-1064 y Fu(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g
-(Output)g(File)150 1257 y Fv(`)p Fr(--output-file=)p
-Fi(file)11 b Fv(')630 1367 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f
-(the)h(name)f(of)h(the)f(\014le)h(to)g(whic)m(h)f(the)h(output)f(is)g
-(written)g(to.)275 1553 y(The)f(results)i(are)f(written)h(to)g
-(standard)e(output)h(if)h(no)f(output)g(\014le)g(is)h(sp)s(eci\014ed)f
-(or)g(if)g(it)h(is)g(`)p Fr(-)p Fv('.)150 1811 y Fu(4.2)68
-b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g
-(File)275 1971 y Fv(These)d(options)h(are)g(also)g(a)m(v)-5
-b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le)g(\(see)i
-(Section)f(3.1.1.2)150 2080 y([Gp)s(erf)30 b(Declarations],)j(page)e
-(16\).)150 2266 y(`)p Fr(-e)f Fi(keyword-delimiter-list)11
-b Fv(')150 2376 y(`)p Fr(--delimiters=)p Fi(keyword-deli)o(mite)o(r-li)
-o(st)f Fv(')630 2485 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g
-(string)g(con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m
-(ords)630 2595 y(from)k(their)h(attributes.)54 b(The)34
-b(default)g(is)h Fr(")p Fv(,)p Fr(")p Fv(.)53 b(This)34
-b(option)h(is)f(essen)m(tial)j(if)d(y)m(ou)h(w)m(an)m(t)630
-2705 y(to)f(use)e(k)m(eyw)m(ords)h(that)h(ha)m(v)m(e)g(em)m(b)s(edded)e
-(commas)h(or)g(newlines.)48 b(One)33 b(useful)f(tric)m(k)i(is)630
-2814 y(to)d(use)f(-e'T)-8 b(AB',)33 b(where)c(T)-8 b(AB)31
-b(is)g(the)f(literal)i(tab)f(c)m(haracter.)150 2991 y(`)p
-Fr(-t)p Fv(')150 3101 y(`)p Fr(--struct-type)p Fv(')630
-3210 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f(a)g Fr(struct)f
-Fv(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s(de.)44
-b(An)m(y)31 b(text)630 3320 y(b)s(efore)43 b(a)i(pair)e(of)h
-(consecutiv)m(e)i(`)p Fr(\045\045)p Fv(')d(is)h(considered)g(part)f(of)
-h(the)g(t)m(yp)s(e)g(declaration.)630 3430 y(Keyw)m(ords)39
-b(and)g(additional)h(\014elds)f(ma)m(y)i(follo)m(w)f(this,)i(one)e
-(group)f(of)h(\014elds)f(p)s(er)f(line.)630 3539 y(A)31
-b(set)g(of)g(examples)g(for)f(generating)i(p)s(erfect)e(hash)g(tables)i
-(and)e(functions)g(for)g(Ada,)h(C,)630 3649 y(C)p Fr(++)p
-Fv(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5
-b(aScript)24 b(reserv)m(ed)f(w)m(ords)g(are)h(distributed)630
-3758 y(with)30 b(this)g(release.)150 3935 y(`)p Fr(--ignore-case)p
-Fv(')630 4045 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g
-(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83
-b(The)44 b(string)630 4155 y(comparison)28 b(will)h(use)f(a)h(case)g
-(insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29
-b(that)g(lo)s(cale)630 4264 y(dep)s(enden)m(t)e(case)i(mappings)f(are)g
-(ignored.)40 b(This)28 b(option)g(is)h(therefore)f(not)h(suitable)f(if)
-h(a)630 4374 y(prop)s(erly)k(in)m(ternationalized)k(or)d(lo)s(cale)i(a)
-m(w)m(are)g(case)f(mapping)f(should)f(b)s(e)h(used.)52
-b(\(F)-8 b(or)630 4483 y(example,)31 b(in)e(a)g(T)-8
-b(urkish)29 b(lo)s(cale,)i(the)f(upp)s(er)d(case)k(equiv)-5
-b(alen)m(t)30 b(of)g(the)g(lo)m(w)m(ercase)h(ASCI)s(I)630
-4593 y(letter)42 b(`)p Fr(i)p Fv(')g(is)f(the)g(non-ASCI)s(I)e(c)m
-(haracter)k(`)p Fr(capital)29 b(i)h(with)f(dot)g(above)p
-Fv('.\))72 b(F)-8 b(or)42 b(this)630 4702 y(case,)d(it)d(is)g(b)s
-(etter)h(to)f(apply)g(an)g(upp)s(ercase)f(or)h(lo)m(w)m(ercase)i(con)m
-(v)m(ersion)g(on)e(the)g(string)630 4812 y(b)s(efore)30
-b(passing)g(it)h(to)g(the)g Fr(gperf)e Fv(generated)i(function.)150
-5071 y Fu(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for)
-f(the)g(Output)f(Co)t(de)275 5230 y Fv(These)e(options)h(are)g(also)g
-(a)m(v)-5 b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le)
-g(\(see)i(Section)f(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)j
-(page)e(16\).)p eop end
-%%Page: 25 27
-TeXDict begin 25 26 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(25)150 299 y(`)p
-Fr(-L)30 b Fi(generated-language-name)10 b Fv(')150 408
-y(`)p Fr(--language=)p Fi(generated-lang)o(uage)o(-nam)o(e)g
-Fv(')630 518 y(Instructs)33 b Fr(gperf)f Fv(to)i(generate)h(co)s(de)f
-(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)
-630 628 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m(tly:)
-630 804 y(`)p Fr(KR-C)p Fv(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f
-(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m(yle)i(C)e(com-)
-1110 914 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)e(ANSI)f(C)h
-(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 1023 y(ings)30
-b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)i(`)p
-Fr(const)p Fv('.)630 1200 y(`)p Fr(C)p Fv(')382 b(Common)23
-b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)f
-(compilers,)k(and)1110 1310 y(also)k(b)m(y)e(old-st)m(yle)i(C)f
-(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fr(#define)f(const)f
-Fv(to)1110 1419 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m
-(w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1596 y(`)p
-Fr(ANSI-C)p Fv(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s
-(o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 1705
-y(C)p Fr(++)29 b Fv(compilers.)630 1882 y(`)p Fr(C++)p
-Fv(')286 b(C)p Fr(++)p Fv(.)40 b(This)29 b(language)j(is)f(understo)s
-(o)s(d)d(b)m(y)i(C)p Fr(++)g Fv(compilers.)630 2058 y(The)g(default)g
-(is)h(ANSI-C.)150 2235 y(`)p Fr(-a)p Fv(')334 b(This)33
-b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with)d
-(previous)g(releases)i(of)f Fr(gperf)p Fv(.)49 b(It)630
-2345 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 2521
-y(`)p Fr(-g)p Fv(')334 b(This)33 b(option)h(is)f(supp)s(orted)f(for)h
-(compatibilit)m(y)j(with)d(previous)g(releases)i(of)f
-Fr(gperf)p Fv(.)49 b(It)630 2631 y(do)s(es)30 b(not)h(do)f(an)m
-(ything.)150 2889 y Fu(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g
-(Details)i(in)e(the)g(Output)f(Co)t(de)275 3048 y Fv(Most)21
-b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)23
-b(as)e(declarations)h(in)f(the)g(input)e(\014le)i(\(see)h(Section)f
-(3.1.1.2)150 3158 y([Gp)s(erf)30 b(Declarations],)j(page)e(16\).)150
-3343 y(`)p Fr(-K)f Fi(slot-name)11 b Fv(')150 3453 y(`)p
-Fr(--slot-name=)p Fi(slot-name)g Fv(')630 3562 y(This)21
-b(option)h(is)g(only)f(useful)g(when)g(option)h(`)p Fr(-t)p
-Fv(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 b(the)c(`)p
-Fr(\045struct-type)p Fv(')630 3672 y(declaration\))41
-b(has)e(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)j(the)d(program)g
-(assumes)f(the)h(structure)630 3781 y(comp)s(onen)m(t)28
-b(iden)m(ti\014er)h(for)f(the)g(k)m(eyw)m(ord)g(is)h(`)p
-Fr(name)p Fv('.)39 b(This)27 b(option)i(allo)m(ws)g(an)f(arbitrary)630
-3891 y(c)m(hoice)33 b(of)f(iden)m(ti\014er)g(for)f(this)h(comp)s(onen)m
-(t,)g(although)g(it)g(still)g(m)m(ust)g(o)s(ccur)f(as)h(the)g(\014rst)
-630 4001 y(\014eld)e(in)g(y)m(our)g(supplied)f Fr(struct)p
-Fv(.)150 4177 y(`)p Fr(-F)h Fi(initializers)11 b Fv(')150
-4287 y(`)p Fr(--initializer-suffix=)p Fi(init)o(iali)o(zers)f
-Fv(')630 4396 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h
-(`)p Fr(-t)p Fv(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26
-b(the)c(`)p Fr(\045struct-type)p Fv(')630 4506 y(declaration\))34
-b(has)f(b)s(een)e(giv)m(en.)49 b(It)32 b(p)s(ermits)g(to)h(sp)s(ecify)f
-(initializers)i(for)f(the)f(structure)630 4615 y(mem)m(b)s(ers)23
-b(follo)m(wing)i Fn(slot-name)30 b Fv(in)23 b(empt)m(y)h(hash)f(table)h
-(en)m(tries.)39 b(The)23 b(list)h(of)g(initializers)630
-4725 y(should)37 b(start)i(with)g(a)f(comma.)66 b(By)39
-b(default,)i(the)e(emitted)g(co)s(de)g(will)f(zero-initialize)630
-4835 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)j
-Fn(slot-name)p Fv(.)150 5011 y(`)p Fr(-H)e Fi(hash-function-name)11
-b Fv(')150 5121 y(`)p Fr(--hash-function-name=)p Fi(hash)o(-fun)o(ctio)
-o(n-n)o(ame)f Fv(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify)g
-(the)g(name)g(for)f(the)h(generated)h(hash)e(function.)40
-b(Default)31 b(name)630 5340 y(is)f(`)p Fr(hash)p Fv('.)40
-b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h(t)m(w)m(o)g(hash)f
-(tables)h(in)f(the)h(same)g(\014le.)p eop end
-%%Page: 26 28
-TeXDict begin 26 27 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(26)150 299 y(`)p
-Fr(-N)30 b Fi(lookup-function-name)11 b Fv(')150 408
-y(`)p Fr(--lookup-function-name=)p Fi(lo)o(okup)o(-fun)o(cti)o(on-n)o
-(ame)f Fv(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i
-(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75
-b(Default)630 628 y(name)28 b(is)g(`)p Fr(in_word_set)p
-Fv('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f
-(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g
-(application.)150 938 y(`)p Fr(-Z)f Fi(class-name)11
-b Fv(')150 1048 y(`)p Fr(--class-name=)p Fi(class-name)f
-Fv(')630 1157 y(This)66 b(option)i(is)f(only)h(useful)e(when)h(option)g
-(`)p Fr(-L)30 b(C++)p Fv(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79
-b(the)630 1267 y(`)p Fr(\045language=C++)p Fv(')43 b(declaration\))k
-(has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s
-(ecify)g(the)630 1377 y(name)30 b(of)h(generated)g(C)p
-Fr(++)f Fv(class.)41 b(Default)32 b(name)e(is)h Fr(Perfect_Hash)p
-Fv(.)150 1577 y(`)p Fr(-7)p Fv(')150 1687 y(`)p Fr(--seven-bit)p
-Fv(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h
-(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m(ts)f(to)h(the)
-630 1906 y(generated)e(hash)e(function)g(and)h(the)g(generated)g(lo)s
-(okup)g(function)f(will)h(solely)h(consist)630 2016 y(of)d(7-bit)h
-(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g(range)h(0..127\).)
-51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)f
-Fr(isalnum)f Fv(and)i Fr(isgraph)e Fv(do)i Fm(not)41
-b Fv(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630
-2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p
-Fr(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fv(')25 b(guaran)m(tees)j
-(this.\))40 b(This)26 b(w)m(as)h(the)630 2345 y(default)g(in)g(v)m
-(ersions)g(of)g Fr(gperf)e Fv(earlier)j(than)e(2.7;)k(no)m(w)d(the)g
-(default)g(is)f(to)i(supp)s(ort)d(8-bit)630 2454 y(and)30
-b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fr(-l)p
-Fv(')150 2765 y(`)p Fr(--compare-lengths)p Fv(')630 2874
-y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h
-(string)e(comparison.)70 b(This)39 b(option)h(is)630
-2984 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h
-(3.3)f([Binary)g(Strings],)g(page)g(22\).)630 3093 y(It)g(also)h(migh)m
-(t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g
-(comparisons)g(made)g(during)f(the)630 3203 y(lo)s(okup,)i(since)g(k)m
-(eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h
-(compared)f(via)h Fr(strcmp)p Fv(.)630 3313 y(Ho)m(w)m(ev)m(er,)j
-(using)c(`)p Fr(-l)p Fv(')g(migh)m(t)h(greatly)h(increase)g(the)f(size)
-g(of)g(the)f(generated)i(C)e(co)s(de)h(if)630 3422 y(the)k(lo)s(okup)g
-(table)g(range)h(is)f(large)h(\(whic)m(h)f(implies)g(that)g(the)g
-(switc)m(h)h(option)f(`)p Fr(-S)p Fv(')g(or)630 3532
-y(`)p Fr(\045switch)p Fv(')29 b(is)i(not)g(enabled\),)h(since)f(the)g
-(length)g(table)h(con)m(tains)g(as)f(man)m(y)g(elemen)m(ts)h(as)630
-3641 y(there)f(are)f(en)m(tries)i(in)e(the)g(lo)s(okup)g(table.)150
-3842 y(`)p Fr(-c)p Fv(')150 3952 y(`)p Fr(--compare-strncmp)p
-Fv(')630 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i
-Fr(strncmp)d Fv(function)h(to)i(p)s(erform)e(string)h(comparisons.)630
-4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fr(strcmp)p
-Fv(.)150 4372 y(`)p Fr(-C)p Fv(')150 4482 y(`)p Fr(--readonly-tables)p
-Fv(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h
-(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)h(\\readonly".)
-630 4701 y(Man)m(y)31 b(compilers)g(can)g(generate)h(more)e(e\016cien)m
-(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h(tables)630
-4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fr(-E)p
-Fv(')150 5121 y(`)p Fr(--enum)p Fv(')142 b(De\014ne)31
-b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)
-f(the)g(lo)s(okup)f(function)g(rather)g(than)630 5230
-y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f
-(di\013eren)m(t)h(lo)s(okup)f(functions)g(can)g(reside)g(in)630
-5340 y(the)31 b(same)f(\014le.)41 b(Thanks)29 b(to)j(James)e(Clark)g
-Fr(<jjc@ai.mit.edu>)p Fv(.)p eop end
-%%Page: 27 29
-TeXDict begin 27 28 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(27)150 299 y(`)p
-Fr(-I)p Fv(')150 408 y(`)p Fr(--includes)p Fv(')630 518
-y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g
-Fr(<string.h>)p Fv(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630
-628 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e
-(user)f(m)m(ust)h(include)g(this)f(header)h(\014le)g(himself)630
-737 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150
-897 y(`)p Fr(-G)p Fv(')150 1007 y(`)p Fr(--global-table)p
-Fv(')630 1117 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m
-(ords)g(as)g(a)g(static)h(global)g(v)-5 b(ariable,)39
-b(rather)d(than)630 1226 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s
-(okup)f(function)g(\(whic)m(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)
-150 1386 y(`)p Fr(-P)p Fv(')150 1496 y(`)p Fr(--pic)p
-Fv(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g
-(in)g(shared)f(libraries.)73 b(This)40 b(reduces)630
-1606 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e
-(library)h(con)m(taining)i(the)e(generated)630 1715 y(co)s(de.)j(If)21
-b(the)h(option)h(`)p Fr(-t)p Fv(')e(\(or,)k(equiv)-5
-b(alen)m(tly)d(,)25 b(the)d(`)p Fr(\045struct-type)p
-Fv(')d(declaration\))24 b(is)e(also)630 1825 y(giv)m(en,)32
-b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e(struct)i(m)m
-(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fr(int)p Fv(',)f(not)h(`)p
-Fr(char)630 1934 y(*)p Fv(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i
-(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h(instead)f(of)h
-(actual)h(strings.)630 2044 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f
-(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f(can)g(use)f(the)h
-(expression)f(`)p Fr(stringpool)630 2153 y(+)e Fi(o)11
-b Fv(',)33 b(where)f Fn(o)37 b Fv(is)c(the)g(o\013set.)48
-b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s(e)f(c)m(hanged)h
-(through)f(the)630 2263 y(option)f(`)p Fr(--string-pool-name)p
-Fv('.)150 2423 y(`)p Fr(-Q)f Fi(string-pool-name)11 b
-Fv(')150 2533 y(`)p Fr(--string-pool-name=)p Fi(string)o(-poo)o(l-na)o
-(me)f Fv(')630 2642 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f(the)g
-(name)h(of)f(the)h(generated)g(string)f(p)s(o)s(ol)g(created)h(b)m(y)f
-(option)630 2752 y(`)p Fr(-P)p Fv('.)38 b(The)21 b(default)g(name)h(is)
-f(`)p Fr(stringpool)p Fv('.)36 b(This)20 b(option)i(p)s(ermits)f(the)g
-(use)g(of)h(t)m(w)m(o)h(hash)630 2862 y(tables)i(in)e(the)h(same)g
-(\014le,)i(with)d(`)p Fr(-P)p Fv(')h(and)f(ev)m(en)h(when)f(the)h
-(option)g(`)p Fr(-G)p Fv(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630
-2971 y(the)31 b(`)p Fr(\045global-table)p Fv(')c(declaration\))32
-b(is)f(giv)m(en.)150 3131 y(`)p Fr(--null-strings)p Fv(')630
-3241 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e
-(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630
-3351 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f
-(a)h(shared)f(library)g(con)m(taining)630 3460 y(the)j(generated)g(co)s
-(de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)g(`)p
-Fr(-P)p Fv('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630
-3570 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.)
-150 3730 y(`)p Fr(-W)h Fi(hash-table-array-name)11 b
-Fv(')150 3839 y(`)p Fr(--word-array-name=)p Fi(hash-ta)o(ble-)o(arra)o
-(y-n)o(ame)f Fv(')630 3949 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f
-(the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e
-(hash)630 4059 y(table.)106 b(Default)53 b(name)e(is)h(`)p
-Fr(wordlist)p Fv('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g
-(of)g(t)m(w)m(o)630 4168 y(hash)37 b(tables)h(in)g(the)g(same)g
-(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fr(-G)p
-Fv(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630
-4278 y(`)p Fr(\045global-table)p Fv(')27 b(declaration\))33
-b(is)d(giv)m(en.)150 4413 y(`)p Fr(--length-table-name=)p
-Fi(lengt)o(h-ta)o(ble-)o(arr)o(ay-n)o(ame)10 b Fv(')630
-4522 y(Allo)m(ws)36 b(y)m(ou)e(to)i(sp)s(ecify)e(the)h(name)f(for)g
-(the)h(generated)h(arra)m(y)f(con)m(taining)h(the)f(length)630
-4632 y(table.)77 b(Default)43 b(name)g(is)f(`)p Fr(lengthtable)p
-Fv('.)74 b(This)41 b(option)i(p)s(ermits)e(the)h(use)g(of)h(t)m(w)m(o)
-630 4741 y(length)33 b(tables)h(in)f(the)g(same)g(\014le,)h(ev)m(en)g
-(when)e(the)h(option)h(`)p Fr(-G)p Fv(')f(\(or,)h(equiv)-5
-b(alen)m(tly)d(,)36 b(the)630 4851 y(`)p Fr(\045global-table)p
-Fv(')27 b(declaration\))33 b(is)d(giv)m(en.)150 5011
-y(`)p Fr(-S)g Fi(total-switch-statements)10 b Fv(')150
-5121 y(`)p Fr(--switch=)p Fi(total-switch-sta)o(teme)o(nts)g
-Fv(')630 5230 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e
-(a)h Fr(switch)e Fv(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630
-5340 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37
-b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space)p
-eop end
-%%Page: 28 30
-TeXDict begin 28 29 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(28)630 299 y(requiremen)m(ts)
-43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g
-(this)f(option)h(determines)630 408 y(ho)m(w)33 b(man)m(y)f
-Fr(switch)f Fv(statemen)m(ts)k(are)e(generated.)49 b(A)32
-b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f Fr(switch)630
-518 y Fv(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i(a)d(v)-5
-b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h(the)g
-(elemen)m(ts)630 628 y(in)38 b(eac)m(h)h Fr(switch)p
-Fv(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e
-(compilers)i(cannot)g(correctly)630 737 y(generate)29
-b(co)s(de)f(for)f(large)h Fr(switch)e Fv(statemen)m(ts.)41
-b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630
-847 y(Keith)k(Bostic's)h(original)f(C)f(program.)150
-1009 y(`)p Fr(-T)p Fv(')150 1118 y(`)p Fr(--omit-struct-type)p
-Fv(')630 1228 y(Prev)m(en)m(ts)f(the)e(transfer)h(of)f(the)h(t)m(yp)s
-(e)g(declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28
-b(this)f(option)630 1338 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g
-(de\014ned)e(elsewhere.)150 1500 y(`)p Fr(-p)p Fv(')334
-b(This)33 b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with)
-d(previous)g(releases)i(of)f Fr(gperf)p Fv(.)49 b(It)630
-1609 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1845
-y Fu(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h
-(emplo)l(y)l(ed)g(b)l(y)f Fl(gperf)150 2031 y Fv(`)p
-Fr(-k)30 b Fi(selected-byte-positions)10 b Fv(')150 2141
-y(`)p Fr(--key-positions=)p Fi(selected-)o(byte)o(-pos)o(iti)o(ons)g
-Fv(')630 2250 y(Allo)m(ws)28 b(selection)h(of)e(the)g(b)m(yte)h(p)s
-(ositions)f(used)f(in)h(the)g(k)m(eyw)m(ords')h(hash)e(function.)39
-b(The)630 2360 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m
-(een)h(1-255,)j(inclusiv)m(e.)38 b(The)22 b(p)s(ositions)f(are)i
-(separated)f(b)m(y)630 2469 y(commas,)27 b(e.g.,)i(`)p
-Fr(-k)h(9,4,13,14)p Fv(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,)
-i(`)p Fr(-k)i(2-7)p Fv(';)d(and)e(p)s(ositions)630 2579
-y(ma)m(y)c(o)s(ccur)f(in)h(an)m(y)g(order.)37 b(F)-8
-b(urthermore,)22 b(the)f(wildcard)f('*')h(causes)g(the)g(generated)h
-(hash)630 2689 y(function)37 b(to)h(consider)g Fe(all)g
-Fv(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d
-('$')h(instructs)630 2798 y(the)31 b(hash)g(function)f(to)i(use)f(the)g
-(\\\014nal)h(b)m(yte")g(of)f(a)h(k)m(eyw)m(ord)f(\(this)g(is)h(the)f
-(only)g(w)m(a)m(y)h(to)630 2908 y(use)e(a)h(b)m(yte)g(p)s(osition)f
-(greater)i(than)e(255,)i(inciden)m(tally\).)630 3043
-y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fr(-k)30
-b(1,2,4,6-10,'$')p Fv(')i(generates)38 b(a)e(hash)g(function)f(that)630
-3153 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42
-b(plus)34 b(the)i(last)g(b)m(yte)f(in)g(eac)m(h)h(k)m(eyw)m(ord)g
-(\(whic)m(h)630 3263 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s
-(osition)g(for)f(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)67
-b(Keyw)m(ords)38 b(with)630 3372 y(length)30 b(less)g(than)f(the)g
-(indicated)h(b)m(yte)h(p)s(ositions)e(w)m(ork)g(prop)s(erly)-8
-b(,)30 b(since)f(selected)i(b)m(yte)630 3482 y(p)s(ositions)k
-(exceeding)h(the)g(k)m(eyw)m(ord)f(length)g(are)h(simply)e(not)i
-(referenced)f(in)f(the)i(hash)630 3591 y(function.)630
-3727 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m
-(ersion)g(2.8)i(of)e Fr(gperf)p Fv(;)f(the)h(default)g(b)m(yte)630
-3837 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m
-(eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630
-3946 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s
-(ositions.)150 4108 y(`)p Fr(-D)p Fv(')150 4218 y(`)p
-Fr(--duplicates)p Fv(')630 4327 y(Handle)h(k)m(eyw)m(ords)h(whose)f
-(selected)i(b)m(yte)e(sets)h(hash)e(to)i(duplicate)g(v)-5
-b(alues.)46 b(Duplicate)630 4437 y(hash)33 b(v)-5 b(alues)34
-b(can)h(o)s(ccur)e(if)h(a)g(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g
-(same)g(names,)h(but)e(p)s(ossesses)630 4547 y(di\013eren)m(t)f
-(attributes,)g(or)f(if)h(the)f(selected)i(b)m(yte)f(p)s(ositions)f(are)
-h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4656 y(the)36
-b(-D)g(option)g Fr(gperf)e Fv(treats)j(all)f(these)h(k)m(eyw)m(ords)e
-(as)h(part)g(of)g(an)f(equiv)-5 b(alence)37 b(class)630
-4766 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h
-(m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4875
-y(k)m(eyw)m(ords.)38 b(It)21 b(is)f(up)g(to)h(y)m(ou)g(to)h(completely)
-g(disam)m(biguate)g(the)f(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630
-4985 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30
-b Fr(gperf)c Fv(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e
-(output.)630 5121 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g
-(the)g(generated)h(hash)e(function)h(is)g(no)f(longer)630
-5230 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f
-Fr(gperf)f Fv(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630
-5340 y(otherwise)e(could)f(not)h(handle.)p eop end
-%%Page: 29 31
-TeXDict begin 29 30 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(29)150 299 y(`)p
-Fr(-m)30 b Fi(iterations)11 b Fv(')150 408 y(`)p Fr
-(--multiple-iterations=)p Fi(ite)o(rati)o(ons)f Fv(')630
-518 y(P)m(erform)24 b(m)m(ultiple)h(c)m(hoices)h(of)e(the)h(`)p
-Fr(-i)p Fv(')f(and)g(`)p Fr(-j)p Fv(')g(v)-5 b(alues,)26
-b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g(results.)630 628
-y(This)34 b(increases)i(the)f(running)e(time)i(b)m(y)g(a)g(factor)h(of)
-f Fn(iterations)40 b Fv(but)34 b(do)s(es)g(a)i(go)s(o)s(d)e(job)630
-737 y(minimizing)d(the)f(generated)i(table)f(size.)150
-907 y(`)p Fr(-i)f Fi(initial-value)11 b Fv(')150 1016
-y(`)p Fr(--initial-asso=)p Fi(initial-va)o(lue)f Fv(')630
-1126 y(Pro)m(vides)29 b(an)f(initial)h Fn(v)-5 b(alue)34
-b Fv(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 b(arra)m(y)-8
-b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 1235
-y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g
-(\014nal)g(table)h(size,)g(p)s(ossibly)e(leading)i(to)f(more)g(time)630
-1345 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39
-b(Note)29 b(that)e(this)g(option)h(is)f(not)g(particularly)h(useful)e
-(when)630 1455 y(`)p Fr(-S)p Fv(')i(\(or,)i(equiv)-5
-b(alen)m(tly)d(,)31 b(`)p Fr(\045switch)p Fv('\))c(is)i(used.)39
-b(Also,)30 b(`)p Fr(-i)p Fv(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`)
-p Fr(-r)p Fv(')630 1564 y(option)i(is)f(used.)150 1733
-y(`)p Fr(-j)g Fi(jump-value)11 b Fv(')150 1843 y(`)p
-Fr(--jump=)p Fi(jump-value)g Fv(')630 1953 y(A\013ects)41
-b(the)f(\\jump)f(v)-5 b(alue",)44 b(i.e.,)g(ho)m(w)c(far)g(to)g(adv)-5
-b(ance)41 b(the)f(asso)s(ciated)i(b)m(yte)e(v)-5 b(alue)630
-2062 y(up)s(on)29 b(collisions.)43 b Fn(Jump-v)-5 b(alue)35
-b Fv(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i
-(default)g(is)f(5.)630 2172 y(If)g(the)g Fn(jump-v)-5
-b(alue)35 b Fv(is)c(0)f Fr(gperf)f Fv(jumps)g(b)m(y)h(random)g(amoun)m
-(ts.)150 2341 y(`)p Fr(-n)p Fv(')150 2451 y(`)p Fr(--no-strlen)p
-Fv(')630 2560 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the)
-h(length)f(of)g(a)h(k)m(eyw)m(ord)g(when)e(computing)630
-2670 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e)
-h(a)f(few)f(assem)m(bly)h(instructions)g(in)f(the)h(generated)630
-2780 y(lo)s(okup)30 b(table.)150 2949 y(`)p Fr(-r)p Fv(')150
-3059 y(`)p Fr(--random)p Fv(')630 3168 y(Utilizes)40
-b(randomness)e(to)h(initialize)h(the)f(asso)s(ciated)h(v)-5
-b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630
-3278 y(generates)23 b(solutions)e(faster)h(than)f(using)g
-(deterministic)h(initialization)i(\(whic)m(h)d(starts)h(all)630
-3387 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40
-b(F)-8 b(urthermore,)28 b(using)f(the)g(randomization)g(option)h
-(generally)630 3497 y(increases)j(the)g(size)g(of)f(the)h(table.)150
-3666 y(`)p Fr(-s)f Fi(size-multiple)11 b Fv(')150 3776
-y(`)p Fr(--size-multiple=)p Fi(size-mult)o(iple)f Fv(')630
-3885 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d
-(table.)66 b(The)38 b(n)m(umeric)g(argumen)m(t)h(for)f(this)630
-3995 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g
-(or)f(smaller")i(the)e(maxim)m(um)g(asso)s(ciated)630
-4105 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h
-(to)g(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62
-b(It)38 b(can)g(b)s(e)630 4214 y(written)g(as)h(an)f(in)m(teger,)43
-b(a)38 b(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)d(or)i(a)f(fraction.)
-66 b(F)-8 b(or)39 b(example,)j(a)630 4324 y(v)-5 b(alue)40
-b(of)f(3)h(means)f(\\allo)m(w)i(the)f(maxim)m(um)f(asso)s(ciated)h(v)-5
-b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 4433
-y(larger)33 b(than)g(the)g(n)m(um)m(b)s(er)e(of)i(input)f(k)m(eyw)m
-(ords".)49 b(Con)m(v)m(ersely)-8 b(,)35 b(a)e(v)-5 b(alue)33
-b(of)g(1/3)h(means)630 4543 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s
-(ciated)j(v)-5 b(alue)41 b(to)h(b)s(e)e(ab)s(out)g(3)h(times)h(smaller)
-f(than)g(the)630 4653 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m
-(ords".)55 b(V)-8 b(alues)35 b(smaller)h(than)e(1)h(are)g(useful)f(for)
-h(limiting)h(the)630 4762 y(o)m(v)m(erall)31 b(size)e(of)g(the)f
-(generated)i(hash)e(table,)i(though)e(the)g(option)h(`)p
-Fr(-m)p Fv(')g(is)f(b)s(etter)h(at)g(this)630 4872 y(purp)s(ose.)630
-5011 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p
-Fr(-S)p Fv(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p
-Fr(\045switch)p Fv('\))43 b(is)h Fm(not)54 b Fv(enabled,)630
-5121 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46
-b(in\015uences)f(the)g(static)i(arra)m(y)f(table)g(size,)k(and)45
-b(a)630 5230 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h
-(required)e(for)h(an)f(unsuccessful)g(searc)m(h,)j(at)f(the)630
-5340 y(exp)s(ense)j(of)g(extra)i(table)f(space.)p eop
-end
-%%Page: 30 32
-TeXDict begin 30 31 bop 150 -116 a Fv(Chapter)30 b(4:)41
-b(In)m(v)m(oking)31 b Fr(gperf)2433 b Fv(30)630 299 y(The)35
-b(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f(maxim)
-m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630
-408 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h
-(\(for)g(e\016ciency)-8 b(,)38 b(the)d(maxim)m(um)g(asso)s(ciated)630
-518 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s
-(o)m(w)m(er)g(of)f(2\).)57 b(The)35 b(actual)i(table)g(size)f(ma)m(y)g
-(v)-5 b(ary)630 628 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is)g
-(essen)m(tially)h(a)f(heuristic.)150 860 y Fu(4.6)68
-b(Informativ)l(e)47 b(Output)150 1044 y Fv(`)p Fr(-h)p
-Fv(')150 1154 y(`)p Fr(--help)p Fv(')142 b(Prin)m(ts)24
-b(a)g(short)f(summary)g(on)h(the)g(meaning)g(of)g(eac)m(h)h(program)e
-(option.)39 b(Ab)s(orts)23 b(further)630 1264 y(program)30
-b(execution.)150 1423 y(`)p Fr(-v)p Fv(')150 1533 y(`)p
-Fr(--version)p Fv(')630 1642 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m
-(ersion)f(n)m(um)m(b)s(er.)150 1802 y(`)p Fr(-d)p Fv(')150
-1911 y(`)p Fr(--debug)p Fv(')94 b(Enables)28 b(the)h(debugging)f
-(option.)40 b(This)28 b(pro)s(duces)f(v)m(erb)s(ose)i(diagnostics)g(to)
-g(\\standard)630 2021 y(error")i(when)g Fr(gperf)f Fv(is)h(executing.)
-45 b(It)32 b(is)f(useful)g(b)s(oth)g(for)g(main)m(taining)i(the)e
-(program)630 2130 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h
-(set)f(of)g(options)g(is)g(actually)i(sp)s(eeding)d(up)g(the)630
-2240 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40
-b(useful)f(information)h(is)g(dump)s(ed)e(at)i(the)g(end)g(of)g(the)630
-2350 y(program)30 b(when)g(the)g(`)p Fr(-d)p Fv(')g(option)h(is)g
-(enabled.)p eop end
-%%Page: 31 33
-TeXDict begin 31 32 bop 150 -116 a Fv(Chapter)30 b(5:)41
-b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fr(gperf)1397
-b Fv(31)150 299 y Fs(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f
-(with)f Fo(gperf)275 533 y Fv(The)29 b(follo)m(wing)j(are)f(some)g
-(limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g
-Fr(gperf)p Fv(:)225 667 y Ft(\017)60 b Fv(The)31 b Fr(gperf)g
-Fv(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8
-b(,)34 b(and)d(w)m(orks)h(quic)m(kly)g(for)g(small)g(to)h(medium)330
-777 y(size)i(data)g(sets)g(\(around)f(1000)i(k)m(eyw)m(ords\).)54
-b(It)34 b(is)h(extremely)h(useful)d(for)h(main)m(taining)i(p)s(erfect)
-330 887 y(hash)k(functions)h(for)f(compiler)i(k)m(eyw)m(ord)f(sets.)72
-b(Sev)m(eral)42 b(recen)m(t)g(enhancemen)m(ts)g(no)m(w)e(enable)330
-996 y Fr(gperf)31 b Fv(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m
-(h)h(larger)g(k)m(eyw)m(ord)g(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m
-(ords\).)48 b(When)330 1106 y(pro)s(cessing)30 b(large)i(k)m(eyw)m(ord)
-e(sets)h(it)g(helps)f(greatly)i(to)f(ha)m(v)m(e)g(o)m(v)m(er)h(8)f
-(megs)g(of)f(RAM.)225 1240 y Ft(\017)60 b Fv(The)43 b(size)i(of)f(the)g
-(generate)h(static)h(k)m(eyw)m(ord)e(arra)m(y)g(can)g(get)h
-Fm(extr)-5 b(emely)53 b Fv(large)45 b(if)f(the)g(input)330
-1350 y(k)m(eyw)m(ord)d(\014le)f(is)g(large)i(or)e(if)g(the)h(k)m(eyw)m
-(ords)f(are)h(quite)g(similar.)70 b(This)40 b(tends)g(to)h(slo)m(w)f
-(do)m(wn)330 1460 y(the)35 b(compilation)h(of)f(the)f(generated)i(C)e
-(co)s(de,)i(and)e Fm(gr)-5 b(e)g(atly)44 b Fv(in\015ates)35
-b(the)g(ob)5 b(ject)35 b(co)s(de)g(size.)54 b(If)330
-1569 y(this)40 b(situation)h(o)s(ccurs,)h(consider)e(using)f(the)h(`)p
-Fr(-S)p Fv(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially)
-330 1679 y(increasing)h(k)m(eyw)m(ord)g(recognition)h(time)f(a)g
-(negligible)i(amoun)m(t.)80 b(Since)44 b(man)m(y)f(C)h(compilers)330
-1788 y(cannot)37 b(correctly)i(generate)f(co)s(de)f(for)g(large)h
-(switc)m(h)f(statemen)m(ts)i(it)e(is)g(imp)s(ortan)m(t)g(to)h(qualify)
-330 1898 y(the)i Fn(-S)46 b Fv(option)40 b(with)g(an)g(appropriate)g(n)
-m(umerical)h(argumen)m(t)f(that)h(con)m(trols)h(the)e(n)m(um)m(b)s(er)f
-(of)330 2007 y(switc)m(h)31 b(statemen)m(ts)h(generated.)225
-2142 y Ft(\017)60 b Fv(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(selected)h(b)m(yte)f(p)s(ositions)f(has)g(an)h(arbitrary)f(limit)h(of)
-g(255.)57 b(This)330 2252 y(restriction)29 b(should)e(b)s(e)g(remo)m(v)
-m(ed,)j(and)d(if)h(an)m(y)m(one)h(considers)f(this)g(a)g(problem)f
-(write)i(me)f(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m
-(v)m(e)i(the)f(constrain)m(t.)p eop end
-%%Page: 32 34
-TeXDict begin 32 33 bop 150 -116 a Fv(Chapter)30 b(6:)41
-b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(32)150 299
-y Fs(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533
-y Fv(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g
-(the)g(curren)m(t)f(p)s(erfect)g(hash)g(function)g(algorithm)h(with)150
-643 y(a)35 b(more)f(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)h
-(hash)e(mo)s(dule)h(is)g(essen)m(tial)i(indep)s(enden)m(t)d(from)h
-(other)150 752 y(program)c(mo)s(dules.)40 b(Additional)31
-b(w)m(orth)m(while)g(impro)m(v)m(emen)m(ts)h(include:)225
-887 y Ft(\017)60 b Fv(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m
-(es)i(mo)s(difying)d(the)h(program)f(to)i(generate)g(\\minimal")g(p)s
-(er-)330 996 y(fect)42 b(hash)f(functions)f(\(under)h(certain)h
-(circumstances,)j(the)c(curren)m(t)g(v)m(ersion)h(can)f(b)s(e)g(rather)
-330 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)d(the)h(generated)g(table)g
-(size\).)60 b(This)36 b(is)g(mostly)h(of)g(theoretical)h(in)m(terest,)i
-(since)330 1215 y(a)f(sparse)f(table)h(often)g(pro)s(duces)e(faster)i
-(lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fr(-S)p Fv(')f
-Fr(switch)f Fv(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j
-(at)d(the)g(exp)s(ense)f(of)h(sligh)m(tly)h(longer)f(lo)s(okups)f
-(\(note)i(that)f(the)g(gcc)330 1435 y(compiler)e(generally)g(pro)s
-(duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fr(switch)f Fv(statemen)m(ts,)k
-(reducing)d(the)g(need)g(for)330 1544 y(more)31 b(complex)g(sc)m
-(hemes\).)225 1679 y Ft(\017)60 b Fv(In)38 b(addition)h(to)h(impro)m
-(ving)f(the)h(algorithm,)i(it)d(w)m(ould)g(also)h(b)s(e)f(useful)f(to)h
-(generate)i(an)e(Ada)330 1788 y(pac)m(k)-5 b(age)32 b(as)f(the)g(co)s
-(de)f(output,)g(in)g(addition)h(to)g(the)g(curren)m(t)f(C)g(and)g(C)p
-Fr(++)f Fv(routines.)p eop end
-%%Page: 33 35
-TeXDict begin 33 34 bop 150 -116 a Fv(Chapter)30 b(7:)41
-b(Bibliograph)m(y)2536 b(33)150 299 y Fs(7)80 b(Bibliograph)l(y)150
-533 y Fv([1])35 b(Chang,)f(C.C.:)47 b Fm(A)36 b(Scheme)g(for)g
-(Constructing)h(Or)-5 b(der)g(e)g(d)37 b(Minimal)f(Perfe)-5
-b(ct)36 b(Hashing)g(F)-7 b(unctions)150 643 y Fv(Information)30
-b(Sciences)h(39\(1986\),)j(187-195.)150 777 y([2])23
-b(Cic)m(helli,)j(Ric)m(hard)c(J.)h Fm(A)n(uthor's)i(R)-5
-b(esp)g(onse)28 b(to)e(\\On)e(Cichel)5 b(li's)26 b(Minimal)f(Perfe)-5
-b(ct)25 b(Hash)h(F)-7 b(unctions)150 887 y(Metho)i(d")38
-b Fv(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)g(12\(Decem)m(b)s
-(er)i(1980\),)g(729.)150 1021 y([3])h(Cic)m(helli,)i(Ric)m(hard)e(J.)f
-Fm(Minimal)j(Perfe)-5 b(ct)35 b(Hash)h(F)-7 b(unctions)36
-b(Made)g(Simple)41 b Fv(Comm)m(unications)34 b(of)150
-1131 y(the)d(A)m(CM,)g(23,)g(1\(Jan)m(uary)g(1980\),)i(17-19.)150
-1265 y([4])f(Co)s(ok,)g(C.)f(R.)g(and)g(Oldeho)s(eft,)h(R.R.)f
-Fm(A)i(L)-5 b(etter)34 b(Oriente)-5 b(d)34 b(Minimal)g(Perfe)-5
-b(ct)33 b(Hashing)h(F)-7 b(unction)150 1375 y Fv(SIGPLAN)30
-b(Notices,)i(17,)g(9\(Septem)m(b)s(er)f(1982\),)h(18-27.)150
-1509 y([5])g(Cormac)m(k,)g(G.)g(V.)g(and)e(Horsp)s(o)s(ol,)i(R.)f(N.)g
-(S.)g(and)g(Kaiserw)m(erth,)h(M.)g Fm(Pr)-5 b(actic)g(al)34
-b(Perfe)-5 b(ct)34 b(Hashing)150 1619 y Fv(Computer)c(Journal,)g(28,)h
-(1\(Jan)m(uary)g(1985\),)i(54-58.)150 1753 y([6])40 b(Jaesc)m(hk)m(e,)j
-(G.)d Fm(R)-5 b(e)g(cipr)g(o)g(c)g(al)44 b(Hashing:)58
-b(A)40 b(Metho)-5 b(d)42 b(for)f(Gener)-5 b(ating)42
-b(Minimal)f(Perfe)-5 b(ct)41 b(Hashing)150 1863 y(F)-7
-b(unctions)39 b Fv(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(24,)g
-(12\(Decem)m(b)s(er)i(1981\),)g(829-833.)150 1998 y([7])g(Jaesc)m(hk)m
-(e,)i(G.)d(and)g(Osterburg,)g(G.)h Fm(On)h(Cichel)5 b(li's)34
-b(Minimal)h(Perfe)-5 b(ct)34 b(Hash)h(F)-7 b(unctions)35
-b(Metho)-5 b(d)150 2107 y Fv(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)
-g(23,)h(12\(Decem)m(b)s(er)g(1980\),)h(728-729.)150 2242
-y([8])j(Sager,)i(Thomas)d(J.)g Fm(A)i(Polynomial)i(Time)e(Gener)-5
-b(ator)40 b(for)e(Minimal)f(Perfe)-5 b(ct)37 b(Hash)h(F)-7
-b(unctions)150 2351 y Fv(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g
-(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)150 2486
-y([9])25 b(Sc)m(hmidt,)h(Douglas)f(C.)f Fm(GPERF:)j(A)g(Perfe)-5
-b(ct)27 b(Hash)g(F)-7 b(unction)28 b(Gener)-5 b(ator)36
-b Fv(Second)24 b(USENIX)g(C)p Fr(++)150 2595 y Fv(Conference)30
-b(Pro)s(ceedings,)h(April)f(1990.)150 2730 y([10])i(Sc)m(hmidt,)f
-(Douglas)h(C.)f Fm(GPERF:)i(A)f(Perfe)-5 b(ct)33 b(Hash)h(F)-7
-b(unction)33 b(Gener)-5 b(ator)43 b Fv(C)p Fr(++)30 b
-Fv(Rep)s(ort,)h(SIGS)150 2839 y(10)g(10)g(\(No)m(v)m(em)m(b)s(er/Decem)
-m(b)s(er)j(1998\).)150 2974 y([11])h(Seb)s(esta,)g(R.W.)g(and)e(T)-8
-b(a)m(ylor,)37 b(M.A.)e Fm(Minimal)h(Perfe)-5 b(ct)36
-b(Hash)g(F)-7 b(unctions)37 b(for)f(R)-5 b(eserve)g(d)38
-b(Wor)-5 b(d)150 3083 y(Lists)38 b Fv(SIGPLAN)30 b(Notices,)j(20,)e
-(12\(Septem)m(b)s(er)g(1985\),)i(47-53.)150 3218 y([12])f(Sprugnoli,)d
-(R.)h Fm(Perfe)-5 b(ct)33 b(Hashing)g(F)-7 b(unctions:)42
-b(A)32 b(Single)h(Pr)-5 b(ob)g(e)33 b(R)-5 b(etrieving)33
-b(Metho)-5 b(d)33 b(for)g(Static)150 3328 y(Sets)38 b
-Fv(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(20)h(11\(No)m(v)m(em)m
-(b)s(er)g(1977\),)h(841-850.)150 3462 y([13])f(Stallman,)f(Ric)m(hard)f
-(M.)h Fm(Using)h(and)i(Porting)f(GNU)f(CC)43 b Fv(F)-8
-b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(1988.)150
-3597 y([14])g(Stroustrup,)d(Bjarne)h Fm(The)j(C)p Fr(++)f
-Fm(Pr)-5 b(o)g(gr)g(amming)35 b(L)-5 b(anguage.)41 b
-Fv(Addison-W)-8 b(esley)g(,)32 b(1986.)150 3731 y([15])g(Tiemann,)e
-(Mic)m(hael)i(D.)f Fm(User's)i(Guide)f(to)i(GNU)e(C)p
-Fr(++)d Fv(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32
-b(1989.)p eop end
-%%Page: 34 36
-TeXDict begin 34 35 bop 150 -116 a Fv(Concept)31 b(Index)2927
-b(34)150 299 y Fs(Concept)52 b(Index)150 638 y Fu(\045)150
-757 y Fd(`)p Fp(\045\045)p Fd(')24 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)49 b Fd(16)150 846 y(`)p Fp(\045{)p Fd(')24 b Fc(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)49 b Fd(19)150 934 y(`)p
-Fp(\045})p Fd(')24 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49
-b Fd(19)150 1023 y(`)p Fp(\0457bit)p Fd(')15 b Fc(:)g(:)e(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42
-b Fd(18)150 1112 y(`)p Fp(\045compare-lengths)p Fd(')26
-b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fd(18)150
-1201 y(`)p Fp(\045compare-strncmp)p Fd(')26 b Fc(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fd(18)150 1289
-y(`)p Fp(\045define)28 b(class-name)p Fd(')6 b Fc(:)15
-b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fd(18)150 1378 y(`)p
-Fp(\045define)c(hash-function-name)p Fd(')c Fc(:)13 b(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fd(17)150
-1467 y(`)p Fp(\045define)28 b(initializer-suffix)p Fd(')c
-Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fd(17)150 1555 y(`)p Fp(\045define)28 b(length-table-name)p
-Fd(')e Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)49 b Fd(19)150 1644 y(`)p Fp(\045define)28 b
-(lookup-function-name)p Fd(')15 b Fc(:)i(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)41 b Fd(17)150 1733 y(`)p Fp(\045define)28
-b(slot-name)p Fd(')9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fd(17)150 1821 y(`)p Fp(\045define)28 b(string-pool-name)p
-Fd(')8 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)34 b Fd(19)150 1910 y(`)p Fp(\045define)28
-b(word-array-name)p Fd(')10 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fd(19)150
-1999 y(`)p Fp(\045delimiters)p Fd(')17 b Fc(:)f(:)e(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fd(17)150 2087 y(`)p
-Fp(\045enum)p Fd(')15 b Fc(:)g(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fd(18)150
-2176 y(`)p Fp(\045global-table)p Fd(')12 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fd(18)150 2265 y(`)p
-Fp(\045ignore-case)p Fd(')15 b Fc(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)41 b Fd(17)150 2353 y(`)p Fp(\045includes)p
-Fd(')25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)49 b Fd(18)150 2442 y(`)p Fp(\045language)p
-Fd(')25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)49 b Fd(17)150 2531 y(`)p Fp(\045null-strings)p
-Fd(')12 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38
-b Fd(19)150 2619 y(`)p Fp(\045omit-struct-type)p Fd(')23
-b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)45 b Fd(19)150
-2708 y(`)p Fp(\045pic)p Fd(')18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fd(18)150 2797 y(`)p Fp(\045readonly-tables)p Fd(')26
-b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fd(18)150
-2885 y(`)p Fp(\045struct-type)p Fd(')15 b Fc(:)h(:)d(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fd(17)150 2974 y(`)p
-Fp(\045switch)p Fd(')10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fd(19)150
-3223 y Fu(A)150 3342 y Fd(Arra)n(y)25 b(name)c Fc(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47
-b Fd(27)150 3599 y Fu(B)150 3718 y Fd(Bugs)18 b Fc(:)c(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)44 b Fd(12)150 3976 y Fu(C)150 4095 y Fd(Class)27
-b(name)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)39 b Fd(26)150 4183 y(Cop)n(yrigh)n(t)19
-b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)45 b Fd(23)2025 638 y Fu(D)2025 755 y Fd(Declaration)27
-b(section)18 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fd(15)2025 842 y(Delimiters)13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fd(24)2025
-930 y(Duplicates)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fd(28)2025 1181
-y Fu(F)2025 1298 y Fd(F)-6 b(ormat)13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39
-b Fd(15)2025 1385 y(F)-6 b(unctions)25 b(section)14 b
-Fc(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41
-b Fd(15)2025 1620 y Fu(H)2025 1737 y Fp(hash)23 b Fc(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)49 b Fd(21)2025 1824 y(hash)25
-b(table)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)40 b Fd(21)2025 2059 y Fu(I)2025
-2176 y Fp(in_word_set)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fd(22)2025 2263 y(Initializers)10
-b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)36 b Fd(25)2025 2498 y Fu(J)2025 2615 y Fd(Jump)25
-b(v)l(alue)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)36 b Fd(29)2025 2866 y Fu(K)2025
-2983 y Fd(Keyw)n(ords)25 b(section)13 b Fc(:)h(:)f(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)39 b Fd(15)2025 3234 y Fu(M)2025
-3351 y Fd(Minimal)27 b(p)r(erfect)f(hash)g(functions)21
-b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-48 b Fd(14)2025 3602 y Fu(N)2025 3719 y Fd(NUL)18 b Fc(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)46 b Fd(22)2025 3954 y Fu(S)2025
-4070 y Fd(Slot)26 b(name)17 b Fc(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 b Fd(25)2025
-4158 y(Static)26 b(searc)n(h)g(structure)11 b Fc(:)i(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)38 b Fd(14)2025 4245 y Fp(switch)6 b Fc(:)15 b(:)e(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
-b Fd(22,)27 b(27)p eop end
-%%Page: -1 37
-TeXDict begin -1 36 bop 3725 -116 a Fv(i)150 299 y Fs(T)-13
-b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fu(GNU)45 b(GENERAL)g(PUBLIC)
-g(LICENSE)28 b Fb(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)73
-b Fu(1)150 911 y(Con)l(tributors)46 b(to)f(GNU)g Fl(gperf)e
-Fu(Utilit)l(y)21 b Fb(:)g(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)g(:)66 b Fu(12)150 1181 y(1)135 b(In)l(tro)t(duction)32
-b Fb(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-h(:)76 b Fu(13)150 1450 y(2)135 b(Static)45 b(searc)l(h)h(structures)f
-(and)f(GNU)h Fl(gperf)33 b Fb(:)19 b(:)h(:)f(:)80 b Fu(14)150
-1720 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g
-Fl(gperf)24 b Fb(:)18 b(:)h(:)g(:)h(:)f(:)h(:)69 b Fu(15)275
-1857 y Fv(3.1)92 b(Input)29 b(F)-8 b(ormat)31 b(to)g
-Fr(gperf)14 b Fa(:)g(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fv(15)399 1967
-y(3.1.1)93 b(Declarations)30 b Fa(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)57 b Fv(15)524 2076 y(3.1.1.1)93 b(User-supplied)30
-b Fr(struct)12 b Fa(:)h(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)42 b Fv(16)524 2186 y(3.1.1.2)93 b(Gp)s(erf)30 b(Declarations)23
-b Fa(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-53 b Fv(16)524 2296 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)15
-b Fa(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)45 b Fv(19)399 2405 y(3.1.2)93 b(F)-8 b(ormat)32
-b(for)e(Keyw)m(ord)g(En)m(tries)15 b Fa(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)45 b Fv(20)399 2515 y(3.1.3)93 b(Including)29
-b(Additional)i(C)f(F)-8 b(unctions)11 b Fa(:)17 b(:)e(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)41 b Fv(21)399 2624 y(3.1.4)93 b(Where)31 b(to)g(place)g(directiv)m
-(es)h(for)e(GNU)h Fr(indent)p Fv(.)17 b Fa(:)d(:)h(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 b Fv(21)275 2734 y(3.2)92
-b(Output)29 b(F)-8 b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g
-Fr(gperf)20 b Fa(:)13 b(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-49 b Fv(21)275 2844 y(3.3)92 b(Use)30 b(of)h(NUL)f(b)m(ytes)18
-b Fa(:)e(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)47 b Fv(22)275
-2953 y(3.4)92 b(The)29 b(Cop)m(yrigh)m(t)i(of)g(the)g(Output)11
-b Fa(:)j(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
-b Fv(23)150 3196 y Fu(4)135 b(In)l(v)l(oking)45 b Fl(gperf)25
-b Fb(:)18 b(:)h(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)70
-b Fu(24)275 3333 y Fv(4.1)92 b(Sp)s(ecifying)29 b(the)i(Lo)s(cation)h
-(of)e(the)h(Output)e(File)d Fa(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)55 b Fv(24)275
-3442 y(4.2)92 b(Options)30 b(that)h(a\013ect)g(In)m(terpretation)h(of)e
-(the)h(Input)e(File)23 b Fa(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)52 b Fv(24)275 3552 y(4.3)92 b(Options)30 b(to)h(sp)s(ecify)f
-(the)g(Language)i(for)e(the)g(Output)g(Co)s(de)c Fa(:)15
-b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fv(24)275 3661 y(4.4)92
-b(Options)30 b(for)g(\014ne)f(tuning)h(Details)j(in)d(the)g(Output)f
-(Co)s(de)19 b Fa(:)c(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)49
-b Fv(25)275 3771 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g
-(Algorithms)g(emplo)m(y)m(ed)g(b)m(y)f Fr(gperf)10 b
-Fa(:)k(:)i(:)f(:)h(:)f(:)g(:)40 b Fv(28)275 3880 y(4.6)92
-b(Informativ)m(e)31 b(Output)21 b Fa(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51
-b Fv(30)150 4123 y Fu(5)135 b(Kno)l(wn)45 b(Bugs)f(and)h(Limitations)i
-(with)e Fl(gperf)23 b Fb(:)17 b(:)i(:)h(:)67 b Fu(31)150
-4393 y(6)135 b(Things)44 b(Still)i(Left)g(to)f(Do)18
-b Fb(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)63 b Fu(32)150 4663 y(7)135
-b(Bibliograph)l(y)25 b Fb(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)70 b Fu(33)150 4932 y(Concept)45
-b(Index)18 b Fb(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)h(:)f(:)63 b Fu(34)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/gperf_1.html b/doc/gperf_1.html
deleted file mode 100644
index 3b663ca..0000000
--- a/doc/gperf_1.html
+++ /dev/null
@@ -1,825 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE</TITLE>
-</HEAD>
-<BODY>
-Go to the first, previous, <A HREF="gperf_2.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-<P>
-Copyright (C) 1989-2009 Free Software Foundation, Inc.
-
-</P>
-
-<P>
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-</P>
-<P>
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-section entitled “GNU General Public License” is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
-
-</P>
-<P>
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that the section entitled “GNU General Public License” may be
-included in a translation approved by the author instead of in the
-original English.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="gperf_toc.html#TOC1">GNU GENERAL PUBLIC LICENSE</A></H1>
-<P>
-Version 3, 29 June 2007
-
-</P>
-
-
-<PRE>
-Copyright (C) 2007 Free Software Foundation, Inc. <A HREF="http://fsf.org/">http://fsf.org/</A>
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-</PRE>
-
-
-<H2>1.0 Preamble</H2>
-
-<P>
-The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-</P>
-<P>
-The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom
-to share and change all versions of a program--to make sure it remains
-free software for all its users. We, the Free Software Foundation,
-use the GNU General Public License for most of our software; it
-applies also to any other work released this way by its authors. You
-can apply it to your programs, too.
-
-</P>
-<P>
-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
-them 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.
-
-</P>
-<P>
-To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you
-have certain responsibilities if you distribute copies of the
-software, or if you modify it: responsibilities to respect the freedom
-of others.
-
-</P>
-<P>
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. 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.
-
-</P>
-<P>
-Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-</P>
-<P>
-For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-</P>
-<P>
-Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the
-manufacturer can do so. This is fundamentally incompatible with the
-aim of protecting users' freedom to change the software. The
-systematic pattern of such abuse occurs in the area of products for
-individuals to use, which is precisely where it is most unacceptable.
-Therefore, we have designed this version of the GPL to prohibit the
-practice for those products. If such problems arise substantially in
-other domains, we stand ready to extend this provision to those
-domains in future versions of the GPL, as needed to protect the
-freedom of users.
-
-</P>
-<P>
-Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish
-to avoid the special danger that patents applied to a free program
-could make it effectively proprietary. To prevent this, the GPL
-assures that patents cannot be used to render the program non-free.
-
-</P>
-<P>
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-</P>
-
-<H2>1.1 TERMS AND CONDITIONS</H2>
-
-
-<OL>
-<LI>Definitions.
-
-“This License” refers to version 3 of the GNU General Public License.
-
-“Copyright” also means copyright-like laws that apply to other kinds
-of works, such as semiconductor masks.
-
-“The Program” refers to any copyrightable work licensed under this
-License. Each licensee is addressed as “you”. “Licensees” and
-“recipients” may be individuals or organizations.
-
-To “modify” a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of
-an exact copy. The resulting work is called a “modified version” of
-the earlier work or a work “based on” the earlier work.
-
-A “covered work” means either the unmodified Program or a work based
-on the Program.
-
-To “propagate” a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-To “convey” a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user
-through a computer network, with no transfer of a copy, is not
-conveying.
-
-An interactive user interface displays “Appropriate Legal Notices” to
-the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-<LI>Source Code.
-
-The “source code” for a work means the preferred form of the work for
-making modifications to it. “Object code” means any non-source form
-of a work.
-
-A “Standard Interface” means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-The “System Libraries” of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-“Major Component”, in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-The “Corresponding Source” for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-The Corresponding Source need not include anything that users can
-regenerate automatically from other parts of the Corresponding Source.
-
-The Corresponding Source for a work in source code form is that same
-work.
-
-<LI>Basic Permissions.
-
-All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-You may make, run and propagate covered works that you do not convey,
-without conditions so long as your license otherwise remains in force.
-You may convey covered works to others for the sole purpose of having
-them make modifications exclusively for you, or provide you with
-facilities for running those works, provided that you comply with the
-terms of this License in conveying all material for which you do not
-control copyright. Those thus making or running the covered works for
-you must do so exclusively on your behalf, under your direction and
-control, on terms that prohibit them from making any copies of your
-copyrighted material outside their relationship with you.
-
-Conveying under any other circumstances is permitted solely under the
-conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-<LI>Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such
-circumvention is effected by exercising rights under this License with
-respect to the covered work, and you disclaim any intention to limit
-operation or modification of the work as a means of enforcing, against
-the work's users, your or third parties' legal rights to forbid
-circumvention of technological measures.
-
-<LI>Conveying Verbatim Copies.
-
-You may convey 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;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-<LI>Conveying Modified Source Versions.
-
-You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these
-conditions:
-
-
-<OL>
-<LI>
-
-The work must carry prominent notices stating that you modified it,
-and giving a relevant date.
-
-<LI>
-
-The work must carry prominent notices stating that it is released
-under this License and any conditions added under section 7. This
-requirement modifies the requirement in section 4 to “keep intact all
-notices”.
-
-<LI>
-
-You must license the entire work, as a whole, under this License to
-anyone who comes into possession of a copy. This License will
-therefore apply, along with any applicable section 7 additional terms,
-to the whole of the work, and all its parts, regardless of how they
-are packaged. This License gives no permission to license the work in
-any other way, but it does not invalidate such permission if you have
-separately received it.
-
-<LI>
-
-If the work has interactive user interfaces, each must display
-Appropriate Legal Notices; however, if the Program has interactive
-interfaces that do not display Appropriate Legal Notices, your work
-need not make them do so.
-</OL>
-
-A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-“aggregate” if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-<LI>Conveying Non-Source Forms.
-
-You may convey a covered work in object code form under the terms of
-sections 4 and 5, provided that you also convey the machine-readable
-Corresponding Source under the terms of this License, in one of these
-ways:
-
-
-<OL>
-<LI>
-
-Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by the
-Corresponding Source fixed on a durable physical medium customarily
-used for software interchange.
-
-<LI>
-
-Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by a written
-offer, valid for at least three years and valid for as long as you
-offer spare parts or customer support for that product model, to give
-anyone who possesses the object code either (1) a copy of the
-Corresponding Source for all the software in the product that is
-covered by this License, on a durable physical medium customarily used
-for software interchange, for a price no more than your reasonable
-cost of physically performing this conveying of source, or (2) access
-to copy the Corresponding Source from a network server at no charge.
-
-<LI>
-
-Convey individual copies of the object code with a copy of the written
-offer to provide the Corresponding Source. This alternative is
-allowed only occasionally and noncommercially, and only if you
-received the object code with such an offer, in accord with subsection
-6b.
-
-<LI>
-
-Convey the object code by offering access from a designated place
-(gratis or for a charge), and offer equivalent access to the
-Corresponding Source in the same way through the same place at no
-further charge. You need not require recipients to copy the
-Corresponding Source along with the object code. If the place to copy
-the object code is a network server, the Corresponding Source may be
-on a different server (operated by you or a third party) that supports
-equivalent copying facilities, provided you maintain clear directions
-next to the object code saying where to find the Corresponding Source.
-Regardless of what server hosts the Corresponding Source, you remain
-obligated to ensure that it is available for as long as needed to
-satisfy these requirements.
-
-<LI>
-
-Convey the object code using peer-to-peer transmission, provided you
-inform other peers where the object code and Corresponding Source of
-the work are being offered to the general public at no charge under
-subsection 6d.
-
-</OL>
-
-A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-A “User Product” is either (1) a “consumer product”, which means any
-tangible personal property which is normally used for personal,
-family, or household purposes, or (2) anything designed or sold for
-incorporation into a dwelling. In determining whether a product is a
-consumer product, doubtful cases shall be resolved in favor of
-coverage. For a particular product received by a particular user,
-“normally used” refers to a typical or common use of that class of
-product, regardless of the status of the particular user or of the way
-in which the particular user actually uses, or expects or is expected
-to use, the product. A product is a consumer product regardless of
-whether the product has substantial commercial, industrial or
-non-consumer uses, unless such uses represent the only significant
-mode of use of the product.
-
-“Installation Information” for a User Product means any methods,
-procedures, authorization keys, or other information required to
-install and execute modified versions of a covered work in that User
-Product from a modified version of its Corresponding Source. The
-information must suffice to ensure that the continued functioning of
-the modified object code is in no case prevented or interfered with
-solely because modification has been made.
-
-If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or
-updates for a work that has been modified or installed by the
-recipient, or for the User Product in which it has been modified or
-installed. Access to a network may be denied when the modification
-itself materially and adversely affects the operation of the network
-or violates the rules and protocols for communication across the
-network.
-
-Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-<LI>Additional Terms.
-
-“Additional permissions” are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders
-of that material) supplement the terms of this License with terms:
-
-
-<OL>
-<LI>
-
-Disclaiming warranty or limiting liability differently from the terms
-of sections 15 and 16 of this License; or
-
-<LI>
-
-Requiring preservation of specified reasonable legal notices or author
-attributions in that material or in the Appropriate Legal Notices
-displayed by works containing it; or
-
-<LI>
-
-Prohibiting misrepresentation of the origin of that material, or
-requiring that modified versions of such material be marked in
-reasonable ways as different from the original version; or
-
-<LI>
-
-Limiting the use for publicity purposes of names of licensors or
-authors of the material; or
-
-<LI>
-
-Declining to grant rights under trademark law for use of some trade
-names, trademarks, or service marks; or
-
-<LI>
-
-Requiring indemnification of licensors and authors of that material by
-anyone who conveys the material (or modified versions of it) with
-contractual assumptions of liability to the recipient, for any
-liability that these contractual assumptions directly impose on those
-licensors and authors.
-</OL>
-
-All other non-permissive additional terms are considered “further
-restrictions” within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions; the
-above requirements apply either way.
-
-<LI>Termination.
-
-You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-<LI>Acceptance Not Required for Having Copies.
-
-You are not required to accept this License in order to receive or run
-a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-<LI>Automatic Licensing of Downstream Recipients.
-
-Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
-An “entity transaction” is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-<LI>Patents.
-
-A “contributor” is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's “contributor version”.
-
-A contributor's “essential patent claims” are all patent claims owned
-or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, “control” includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-In the following three paragraphs, a “patent license” is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To “grant” such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. “Knowingly relying” means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-A patent license is “discriminatory” if it does not include within the
-scope of its coverage, prohibits the exercise of, or is conditioned on
-the non-exercise of one or more of the rights that are specifically
-granted under this License. You may not convey a covered work if you
-are a party to an arrangement with a third party that is in the
-business of distributing software, under which you make payment to the
-third party based on the extent of your activity of conveying the
-work, and under which the third party grants, to any of the parties
-who would receive the covered work from you, a discriminatory patent
-license (a) in connection with copies of the covered work conveyed by
-you (or copies made from those copies), or (b) primarily for and in
-connection with specific products or compilations that contain the
-covered work, unless you entered into that arrangement, or that patent
-license was granted, prior to 28 March 2007.
-
-Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-<LI>No Surrender of Others' Freedom.
-
-If 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 convey
-a covered work so as to satisfy simultaneously your obligations under
-this License and any other pertinent obligations, then as a
-consequence you may not convey it at all. For example, if you agree
-to terms that obligate you to collect a royalty for further conveying
-from those to whom you convey the Program, the only way you could
-satisfy both those terms and this License would be to refrain entirely
-from conveying the Program.
-
-<LI>Use with the GNU Affero General Public License.
-
-Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-<LI>Revised Versions of this License.
-
-The Free Software Foundation may publish revised and/or new versions
-of the GNU 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 that a certain numbered version of the GNU General Public
-License “or any later version” applies to it, you have the option of
-following the terms and conditions either of that numbered version or
-of any later version published by the Free Software Foundation. If
-the Program does not specify a version number of the GNU General
-Public License, you may choose any version ever published by the Free
-Software Foundation.
-
-If the Program specifies that a proxy can decide which future versions
-of the GNU General Public License can be used, that proxy's public
-statement of acceptance of a version permanently authorizes you to
-choose that version for the Program.
-
-Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-<LI>Disclaimer of Warranty.
-
-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.
-
-<LI>Limitation of Liability.
-
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
-CONVEYS 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.
-
-<LI>Interpretation of Sections 15 and 16.
-
-If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-</OL>
-
-
-<H2>1.2 END OF TERMS AND CONDITIONS</H2>
-
-
-<H2>1.3 How to Apply These Terms to Your New Programs</H2>
-
-<P>
-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.
-
-</P>
-<P>
-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
-state the exclusion of warranty; and each file should have at least
-the “copyright” line and a pointer to where the full notice is found.
-
-</P>
-
-<PRE>
-<VAR>one line to give the program's name and a brief idea of what it does.</VAR>
-Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
-
-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 3 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, see <A HREF="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</A>.
-</PRE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-</P>
-<P>
-If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-</P>
-
-<PRE>
-<VAR>program</VAR> Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
-This program comes with ABSOLUTELY NO WARRANTY; for details type <SAMP>&lsquo;show w&rsquo;</SAMP>.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type <SAMP>&lsquo;show c&rsquo;</SAMP> for details.
-</PRE>
-
-<P>
-The hypothetical commands <SAMP>&lsquo;show w&rsquo;</SAMP> and <SAMP>&lsquo;show c&rsquo;</SAMP> should show
-the appropriate parts of the General Public License. Of course, your
-program's commands might be different; for a GUI interface, you would
-use an “about box”.
-
-</P>
-<P>
-You should also get your employer (if you work as a programmer) or school,
-if any, to sign a “copyright disclaimer” for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<A HREF="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</A>.
-
-</P>
-<P>
-The GNU 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. But
-first, please read <A HREF="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</A>.
-
-</P>
-<P><HR><P>
-Go to the first, previous, <A HREF="gperf_2.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_10.html b/doc/gperf_10.html
deleted file mode 100644
index a3d3e17..0000000
--- a/doc/gperf_10.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - Concept Index</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_9.html">previous</A>, next, last section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC27" HREF="gperf_toc.html#TOC27">Concept Index</A></H1>
-
-<P>
-Jump to:
-<A HREF="#cindex_&">&#38;</A>
--
-<A HREF="#cindex_a">a</A>
--
-<A HREF="#cindex_b">b</A>
--
-<A HREF="#cindex_c">c</A>
--
-<A HREF="#cindex_d">d</A>
--
-<A HREF="#cindex_f">f</A>
--
-<A HREF="#cindex_h">h</A>
--
-<A HREF="#cindex_i">i</A>
--
-<A HREF="#cindex_j">j</A>
--
-<A HREF="#cindex_k">k</A>
--
-<A HREF="#cindex_m">m</A>
--
-<A HREF="#cindex_n">n</A>
--
-<A HREF="#cindex_s">s</A>
-<P>
-<H2><A NAME="cindex_&">&#38;</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX8"><SAMP>&lsquo;%%&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX18"><SAMP>&lsquo;%7bit&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX19"><SAMP>&lsquo;%compare-lengths&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX20"><SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX17"><SAMP>&lsquo;%define class-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX15"><SAMP>&lsquo;%define hash-function-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX14"><SAMP>&lsquo;%define initializer-suffix&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX29"><SAMP>&lsquo;%define length-table-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX16"><SAMP>&lsquo;%define lookup-function-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX13"><SAMP>&lsquo;%define slot-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX26"><SAMP>&lsquo;%define string-pool-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX28"><SAMP>&lsquo;%define word-array-name&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX9"><SAMP>&lsquo;%delimiters&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX22"><SAMP>&lsquo;%enum&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX24"><SAMP>&lsquo;%global-table&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX11"><SAMP>&lsquo;%ignore-case&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX23"><SAMP>&lsquo;%includes&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX12"><SAMP>&lsquo;%language&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX27"><SAMP>&lsquo;%null-strings&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX31"><SAMP>&lsquo;%omit-struct-type&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX25"><SAMP>&lsquo;%pic&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX21"><SAMP>&lsquo;%readonly-tables&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX10"><SAMP>&lsquo;%struct-type&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX30"><SAMP>&lsquo;%switch&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX32"><SAMP>&lsquo;%{&rsquo;</SAMP></A>
-<LI><A HREF="gperf_5.html#IDX33"><SAMP>&lsquo;%}&rsquo;</SAMP></A>
-</DIR>
-<H2><A NAME="cindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="gperf_6.html#IDX44">Array name</A>, <A HREF="gperf_6.html#IDX45">Array name</A>
-</DIR>
-<H2><A NAME="cindex_b">b</A></H2>
-<DIR>
-<LI><A HREF="gperf_2.html#IDX1">Bugs</A>
-</DIR>
-<H2><A NAME="cindex_c">c</A></H2>
-<DIR>
-<LI><A HREF="gperf_6.html#IDX43">Class name</A>
-<LI><A HREF="gperf_5.html#IDX39">Copyright</A>
-</DIR>
-<H2><A NAME="cindex_d">d</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX5">Declaration section</A>
-<LI><A HREF="gperf_6.html#IDX40">Delimiters</A>
-<LI><A HREF="gperf_6.html#IDX47">Duplicates</A>
-</DIR>
-<H2><A NAME="cindex_f">f</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX4">Format</A>
-<LI><A HREF="gperf_5.html#IDX7">Functions section</A>
-</DIR>
-<H2><A NAME="cindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX35">hash</A>
-<LI><A HREF="gperf_5.html#IDX34">hash table</A>
-</DIR>
-<H2><A NAME="cindex_i">i</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX36">in_word_set</A>
-<LI><A HREF="gperf_6.html#IDX42">Initializers</A>
-</DIR>
-<H2><A NAME="cindex_j">j</A></H2>
-<DIR>
-<LI><A HREF="gperf_6.html#IDX48">Jump value</A>
-</DIR>
-<H2><A NAME="cindex_k">k</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX6">Keywords section</A>
-</DIR>
-<H2><A NAME="cindex_m">m</A></H2>
-<DIR>
-<LI><A HREF="gperf_4.html#IDX3">Minimal perfect hash functions</A>
-</DIR>
-<H2><A NAME="cindex_n">n</A></H2>
-<DIR>
-<LI><A HREF="gperf_5.html#IDX38">NUL</A>
-</DIR>
-<H2><A NAME="cindex_s">s</A></H2>
-<DIR>
-<LI><A HREF="gperf_6.html#IDX41">Slot name</A>
-<LI><A HREF="gperf_4.html#IDX2">Static search structure</A>
-<LI><A HREF="gperf_5.html#IDX37"><CODE>switch</CODE></A>, <A HREF="gperf_6.html#IDX46"><CODE>switch</CODE></A>
-</DIR>
-
-</P>
-
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_9.html">previous</A>, next, last section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_2.html b/doc/gperf_2.html
deleted file mode 100644
index 1a57404..0000000
--- a/doc/gperf_2.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - Contributors to GNU gperf Utility</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_1.html">previous</A>, <A HREF="gperf_3.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC2" HREF="gperf_toc.html#TOC2">Contributors to GNU <CODE>gperf</CODE> Utility</A></H1>
-
-
-<UL>
-<LI>
-
-<A NAME="IDX1"></A>
-The GNU <CODE>gperf</CODE> perfect hash function generator utility was
-written in GNU C++ by Douglas C. Schmidt. The general
-idea for the perfect hash function generator was inspired by Keith
-Bostic's algorithm written in C, and distributed to net.sources around
-1984. The current program is a heavily modified, enhanced, and extended
-implementation of Keith's basic idea, created at the University of
-California, Irvine. Bugs, patches, and suggestions should be reported
-to <CODE>&#60;bug-gnu-gperf@gnu.org&#62;</CODE>.
-
-<LI>
-
-Special thanks is extended to Michael Tiemann and Doug Lea, for
-providing a useful compiler, and for giving me a forum to exhibit my
-creation.
-
-In addition, Adam de Boor and Nels Olson provided many tips and insights
-that greatly helped improve the quality and functionality of <CODE>gperf</CODE>.
-
-<LI>
-
-Bruno Haible enhanced and optimized the search algorithm. He also rewrote
-the input routines and the output routines for better reliability, and
-added a testsuite.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_1.html">previous</A>, <A HREF="gperf_3.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_3.html b/doc/gperf_3.html
deleted file mode 100644
index c587a69..0000000
--- a/doc/gperf_3.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 2 Introduction</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_2.html">previous</A>, <A HREF="gperf_4.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC3" HREF="gperf_toc.html#TOC3">2 Introduction</A></H1>
-
-<P>
-<CODE>gperf</CODE> is a perfect hash function generator written in C++. It
-transforms an <VAR>n</VAR> element user-specified keyword set <VAR>W</VAR> into a
-perfect hash function <VAR>F</VAR>. <VAR>F</VAR> uniquely maps keywords in
-<VAR>W</VAR> onto the range 0..<VAR>k</VAR>, where <VAR>k</VAR> &#62;= <VAR>n-1</VAR>. If <VAR>k</VAR>
-= <VAR>n-1</VAR> then <VAR>F</VAR> is a <EM>minimal</EM> perfect hash function.
-<CODE>gperf</CODE> generates a 0..<VAR>k</VAR> element static lookup table and a
-pair of C functions. These functions determine whether a given
-character string <VAR>s</VAR> occurs in <VAR>W</VAR>, using at most one probe into
-the lookup table.
-
-</P>
-<P>
-<CODE>gperf</CODE> currently generates the reserved keyword recognizer for
-lexical analyzers in several production and research compilers and
-language processing tools, including GNU C, GNU C++, GNU Java, GNU Pascal,
-GNU Modula 3, and GNU indent. Complete C++ source code for <CODE>gperf</CODE> is
-available from <CODE>http://ftp.gnu.org/pub/gnu/gperf/</CODE>.
-A paper describing <CODE>gperf</CODE>'s design and implementation in greater
-detail is available in the Second USENIX C++ Conference proceedings
-or from <CODE>http://www.cs.wustl.edu/~schmidt/resume.html</CODE>.
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_2.html">previous</A>, <A HREF="gperf_4.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_4.html b/doc/gperf_4.html
deleted file mode 100644
index 8aab740..0000000
--- a/doc/gperf_4.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 3 Static search structures and GNU gperf</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_3.html">previous</A>, <A HREF="gperf_5.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC4" HREF="gperf_toc.html#TOC4">3 Static search structures and GNU <CODE>gperf</CODE></A></H1>
-<P>
-<A NAME="IDX2"></A>
-
-</P>
-<P>
-A <EM>static search structure</EM> is an Abstract Data Type with certain
-fundamental operations, e.g., <EM>initialize</EM>, <EM>insert</EM>,
-and <EM>retrieve</EM>. Conceptually, all insertions occur before any
-retrievals. In practice, <CODE>gperf</CODE> generates a <EM>static</EM> array
-containing search set keywords and any associated attributes specified
-by the user. Thus, there is essentially no execution-time cost for the
-insertions. It is a useful data structure for representing <EM>static
-search sets</EM>. Static search sets occur frequently in software system
-applications. Typical static search sets include compiler reserved
-words, assembler instruction opcodes, and built-in shell interpreter
-commands. Search set members, called <EM>keywords</EM>, are inserted into
-the structure only once, usually during program initialization, and are
-not generally modified at run-time.
-
-</P>
-<P>
-Numerous static search structure implementations exist, e.g.,
-arrays, linked lists, binary search trees, digital search tries, and
-hash tables. Different approaches offer trade-offs between space
-utilization and search time efficiency. For example, an <VAR>n</VAR> element
-sorted array is space efficient, though the average-case time
-complexity for retrieval operations using binary search is
-proportional to log <VAR>n</VAR>. Conversely, hash table implementations
-often locate a table entry in constant time, but typically impose
-additional memory overhead and exhibit poor worst case performance.
-
-</P>
-<P>
-<A NAME="IDX3"></A>
-<EM>Minimal perfect hash functions</EM> provide an optimal solution for a
-particular class of static search sets. A minimal perfect hash
-function is defined by two properties:
-
-</P>
-
-<UL>
-<LI>
-
-It allows keyword recognition in a static search set using at most
-<EM>one</EM> probe into the hash table. This represents the “perfect”
-property.
-<LI>
-
-The actual memory allocated to store the keywords is precisely large
-enough for the keyword set, and <EM>no larger</EM>. This is the
-“minimal” property.
-</UL>
-
-<P>
-For most applications it is far easier to generate <EM>perfect</EM> hash
-functions than <EM>minimal perfect</EM> hash functions. Moreover,
-non-minimal perfect hash functions frequently execute faster than
-minimal ones in practice. This phenomena occurs since searching a
-sparse keyword table increases the probability of locating a “null”
-entry, thereby reducing string comparisons. <CODE>gperf</CODE>'s default
-behavior generates <EM>near-minimal</EM> perfect hash functions for
-keyword sets. However, <CODE>gperf</CODE> provides many options that permit
-user control over the degree of minimality and perfection.
-
-</P>
-<P>
-Static search sets often exhibit relative stability over time. For
-example, Ada's 63 reserved words have remained constant for nearly a
-decade. It is therefore frequently worthwhile to expend concerted
-effort building an optimal search structure <EM>once</EM>, if it
-subsequently receives heavy use multiple times. <CODE>gperf</CODE> removes
-the drudgery associated with constructing time- and space-efficient
-search structures by hand. It has proven a useful and practical tool
-for serious programming projects. Output from <CODE>gperf</CODE> is currently
-used in several production and research compilers, including GNU C, GNU
-C++, GNU Java, GNU Pascal, and GNU Modula 3. The latter two compilers are
-not yet part of the official GNU distribution. Each compiler utilizes
-<CODE>gperf</CODE> to automatically generate static search structures that
-efficiently identify their respective reserved keywords.
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_3.html">previous</A>, <A HREF="gperf_5.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_5.html b/doc/gperf_5.html
deleted file mode 100644
index 3f97b93..0000000
--- a/doc/gperf_5.html
+++ /dev/null
@@ -1,720 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 4 High-Level Description of GNU gperf</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_4.html">previous</A>, <A HREF="gperf_6.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC5" HREF="gperf_toc.html#TOC5">4 High-Level Description of GNU <CODE>gperf</CODE></A></H1>
-
-<P>
-The perfect hash function generator <CODE>gperf</CODE> reads a set of
-“keywords” from an input file (or from the standard input by
-default). It attempts to derive a perfect hashing function that
-recognizes a member of the <EM>static keyword set</EM> with at most a
-single probe into the lookup table. If <CODE>gperf</CODE> succeeds in
-generating such a function it produces a pair of C source code routines
-that perform hashing and table lookup recognition. All generated C code
-is directed to the standard output. Command-line options described
-below allow you to modify the input and output format to <CODE>gperf</CODE>.
-
-</P>
-<P>
-By default, <CODE>gperf</CODE> attempts to produce time-efficient code, with
-less emphasis on efficient space utilization. However, several options
-exist that permit trading-off execution time for storage space and vice
-versa. In particular, expanding the generated table size produces a
-sparse search structure, generally yielding faster searches.
-Conversely, you can direct <CODE>gperf</CODE> to utilize a C <CODE>switch</CODE>
-statement scheme that minimizes data space storage size. Furthermore,
-using a C <CODE>switch</CODE> may actually speed up the keyword retrieval time
-somewhat. Actual results depend on your C compiler, of course.
-
-</P>
-<P>
-In general, <CODE>gperf</CODE> assigns values to the bytes it is using
-for hashing until some set of values gives each keyword a unique value.
-A helpful heuristic is that the larger the hash value range, the easier
-it is for <CODE>gperf</CODE> to find and generate a perfect hash function.
-Experimentation is the key to getting the most from <CODE>gperf</CODE>.
-
-</P>
-
-
-<H2><A NAME="SEC6" HREF="gperf_toc.html#TOC6">4.1 Input Format to <CODE>gperf</CODE></A></H2>
-<P>
-<A NAME="IDX4"></A>
-<A NAME="IDX5"></A>
-<A NAME="IDX6"></A>
-<A NAME="IDX7"></A>
-You can control the input file format by varying certain command-line
-arguments, in particular the <SAMP>&lsquo;-t&rsquo;</SAMP> option. The input's appearance
-is similar to GNU utilities <CODE>flex</CODE> and <CODE>bison</CODE> (or UNIX
-utilities <CODE>lex</CODE> and <CODE>yacc</CODE>). Here's an outline of the general
-format:
-
-</P>
-
-<PRE>
-declarations
-%%
-keywords
-%%
-functions
-</PRE>
-
-<P>
-<EM>Unlike</EM> <CODE>flex</CODE> or <CODE>bison</CODE>, the declarations section and
-the functions section are optional. The following sections describe the
-input format for each section.
-
-</P>
-
-<P>
-It is possible to omit the declaration section entirely, if the <SAMP>&lsquo;-t&rsquo;</SAMP>
-option is not given. In this case the input file begins directly with the
-first keyword line, e.g.:
-
-</P>
-
-<PRE>
-january
-february
-march
-april
-...
-</PRE>
-
-
-
-<H3><A NAME="SEC7" HREF="gperf_toc.html#TOC7">4.1.1 Declarations</A></H3>
-
-<P>
-The keyword input file optionally contains a section for including
-arbitrary C declarations and definitions, <CODE>gperf</CODE> declarations that
-act like command-line options, as well as for providing a user-supplied
-<CODE>struct</CODE>.
-
-</P>
-
-
-
-<H4><A NAME="SEC8" HREF="gperf_toc.html#TOC8">4.1.1.1 User-supplied <CODE>struct</CODE></A></H4>
-
-<P>
-If the <SAMP>&lsquo;-t&rsquo;</SAMP> option (or, equivalently, the <SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration)
-<EM>is</EM> enabled, you <EM>must</EM> provide a C <CODE>struct</CODE> as the last
-component in the declaration section from the input file. The first
-field in this struct must be of type <CODE>char *</CODE> or <CODE>const char *</CODE>
-if the <SAMP>&lsquo;-P&rsquo;</SAMP> option is not given, or of type <CODE>int</CODE> if the option
-<SAMP>&lsquo;-P&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%pic&rsquo;</SAMP> declaration) is enabled.
-This first field must be called <SAMP>&lsquo;name&rsquo;</SAMP>, although it is possible to modify
-its name with the <SAMP>&lsquo;-K&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%define slot-name&rsquo;</SAMP> declaration) described below.
-
-</P>
-<P>
-Here is a simple example, using months of the year and their attributes as
-input:
-
-</P>
-
-<PRE>
-struct month { char *name; int number; int days; int leap_days; };
-%%
-january, 1, 31, 31
-february, 2, 28, 29
-march, 3, 31, 31
-april, 4, 30, 30
-may, 5, 31, 31
-june, 6, 30, 30
-july, 7, 31, 31
-august, 8, 31, 31
-september, 9, 30, 30
-october, 10, 31, 31
-november, 11, 30, 30
-december, 12, 31, 31
-</PRE>
-
-<P>
-<A NAME="IDX8"></A>
-Separating the <CODE>struct</CODE> declaration from the list of keywords and
-other fields are a pair of consecutive percent signs, <SAMP>&lsquo;%%&rsquo;</SAMP>,
-appearing left justified in the first column, as in the UNIX utility
-<CODE>lex</CODE>.
-
-</P>
-<P>
-If the <CODE>struct</CODE> has already been declared in an include file, it can
-be mentioned in an abbreviated form, like this:
-
-</P>
-
-<PRE>
-struct month;
-%%
-january, 1, 31, 31
-...
-</PRE>
-
-
-
-<H4><A NAME="SEC9" HREF="gperf_toc.html#TOC9">4.1.1.2 Gperf Declarations</A></H4>
-
-<P>
-The declaration section can contain <CODE>gperf</CODE> declarations. They
-influence the way <CODE>gperf</CODE> works, like command line options do.
-In fact, every such declaration is equivalent to a command line option.
-There are three forms of declarations:
-
-</P>
-
-<OL>
-<LI>
-
-Declarations without argument, like <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>.
-
-<LI>
-
-Declarations with an argument, like <SAMP>&lsquo;%switch=<VAR>count</VAR>&rsquo;</SAMP>.
-
-<LI>
-
-Declarations of names of entities in the output file, like
-<SAMP>&lsquo;%define lookup-function-name <VAR>name</VAR>&rsquo;</SAMP>.
-</OL>
-
-<P>
-When a declaration is given both in the input file and as a command line
-option, the command-line option's value prevails.
-
-</P>
-<P>
-The following <CODE>gperf</CODE> declarations are available.
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;%delimiters=<VAR>delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX9"></A>
-Allows you to provide a string containing delimiters used to
-separate keywords from their attributes. The default is ",". This
-option is essential if you want to use keywords that have embedded
-commas or newlines.
-
-<DT><SAMP>&lsquo;%struct-type&rsquo;</SAMP>
-<DD>
-<A NAME="IDX10"></A>
-Allows you to include a <CODE>struct</CODE> type declaration for generated
-code; see above for an example.
-
-<DT><SAMP>&lsquo;%ignore-case&rsquo;</SAMP>
-<DD>
-<A NAME="IDX11"></A>
-Consider upper and lower case ASCII characters as equivalent. The string
-comparison will use a case insignificant character comparison. Note that
-locale dependent case mappings are ignored.
-
-<DT><SAMP>&lsquo;%language=<VAR>language-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX12"></A>
-Instructs <CODE>gperf</CODE> to generate code in the language specified by the
-option's argument. Languages handled are currently:
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;KR-C&rsquo;</SAMP>
-<DD>
-Old-style K&#38;R C. This language is understood by old-style C compilers and
-ANSI C compilers, but ANSI C compilers may flag warnings (or even errors)
-because of lacking <SAMP>&lsquo;const&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;C&rsquo;</SAMP>
-<DD>
-Common C. This language is understood by ANSI C compilers, and also by
-old-style C compilers, provided that you <CODE>#define const</CODE> to empty
-for compilers which don't know about this keyword.
-
-<DT><SAMP>&lsquo;ANSI-C&rsquo;</SAMP>
-<DD>
-ANSI C. This language is understood by ANSI C (C89, ISO C90) compilers,
-ISO C99 compilers, and C++ compilers.
-
-<DT><SAMP>&lsquo;C++&rsquo;</SAMP>
-<DD>
-C++. This language is understood by C++ compilers.
-</DL>
-
-The default is ANSI-C.
-
-<DT><SAMP>&lsquo;%define slot-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX13"></A>
-This declaration is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-By default, the program assumes the structure component identifier for
-the keyword is <SAMP>&lsquo;name&rsquo;</SAMP>. This option allows an arbitrary choice of
-identifier for this component, although it still must occur as the first
-field in your supplied <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;%define initializer-suffix <VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX14"></A>
-This declaration is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-It permits to specify initializers for the structure members following
-<VAR>slot-name</VAR> in empty hash table entries. The list of initializers
-should start with a comma. By default, the emitted code will
-zero-initialize structure members following <VAR>slot-name</VAR>.
-
-<DT><SAMP>&lsquo;%define hash-function-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX15"></A>
-Allows you to specify the name for the generated hash function. Default
-name is <SAMP>&lsquo;hash&rsquo;</SAMP>. This option permits the use of two hash tables in
-the same file.
-
-<DT><SAMP>&lsquo;%define lookup-function-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX16"></A>
-Allows you to specify the name for the generated lookup function.
-Default name is <SAMP>&lsquo;in_word_set&rsquo;</SAMP>. This option permits multiple
-generated hash functions to be used in the same application.
-
-<DT><SAMP>&lsquo;%define class-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX17"></A>
-This option is only useful when option <SAMP>&lsquo;-L C++&rsquo;</SAMP> (or, equivalently,
-the <SAMP>&lsquo;%language=C++&rsquo;</SAMP> declaration) has been given. It
-allows you to specify the name of generated C++ class. Default name is
-<CODE>Perfect_Hash</CODE>.
-
-<DT><SAMP>&lsquo;%7bit&rsquo;</SAMP>
-<DD>
-<A NAME="IDX18"></A>
-This option specifies that all strings that will be passed as arguments
-to the generated hash function and the generated lookup function will
-solely consist of 7-bit ASCII characters (bytes in the range 0..127).
-(Note that the ANSI C functions <CODE>isalnum</CODE> and <CODE>isgraph</CODE> do
-<EM>not</EM> guarantee that a byte is in this range. Only an explicit
-test like <SAMP>&lsquo;c &#62;= 'A' &#38;&#38; c &#60;= 'Z'&rsquo;</SAMP> guarantees this.)
-
-<DT><SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>
-<DD>
-<A NAME="IDX19"></A>
-Compare keyword lengths before trying a string comparison. This option
-is mandatory for binary comparisons (see section <A HREF="gperf_5.html#SEC15">4.3 Use of NUL bytes</A>). It also might
-cut down on the number of string comparisons made during the lookup, since
-keywords with different lengths are never compared via <CODE>strcmp</CODE>.
-However, using <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP> might greatly increase the size of the
-generated C code if the lookup table range is large (which implies that
-the switch option <SAMP>&lsquo;-S&rsquo;</SAMP> or <SAMP>&lsquo;%switch&rsquo;</SAMP> is not enabled), since the length
-table contains as many elements as there are entries in the lookup table.
-
-<DT><SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-<DD>
-<A NAME="IDX20"></A>
-Generates C code that uses the <CODE>strncmp</CODE> function to perform
-string comparisons. The default action is to use <CODE>strcmp</CODE>.
-
-<DT><SAMP>&lsquo;%readonly-tables&rsquo;</SAMP>
-<DD>
-<A NAME="IDX21"></A>
-Makes the contents of all generated lookup tables constant, i.e.,
-“readonly”. Many compilers can generate more efficient code for this
-by putting the tables in readonly memory.
-
-<DT><SAMP>&lsquo;%enum&rsquo;</SAMP>
-<DD>
-<A NAME="IDX22"></A>
-Define constant values using an enum local to the lookup function rather
-than with #defines. This also means that different lookup functions can
-reside in the same file. Thanks to James Clark <CODE>&#60;jjc@ai.mit.edu&#62;</CODE>.
-
-<DT><SAMP>&lsquo;%includes&rsquo;</SAMP>
-<DD>
-<A NAME="IDX23"></A>
-Include the necessary system include file, <CODE>&#60;string.h&#62;</CODE>, at the
-beginning of the code. By default, this is not done; the user must
-include this header file himself to allow compilation of the code.
-
-<DT><SAMP>&lsquo;%global-table&rsquo;</SAMP>
-<DD>
-<A NAME="IDX24"></A>
-Generate the static table of keywords as a static global variable,
-rather than hiding it inside of the lookup function (which is the
-default behavior).
-
-<DT><SAMP>&lsquo;%pic&rsquo;</SAMP>
-<DD>
-<A NAME="IDX25"></A>
-Optimize the generated table for inclusion in shared libraries. This
-reduces the startup time of programs using a shared library containing
-the generated code. If the <SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration (or,
-equivalently, the option <SAMP>&lsquo;-t&rsquo;</SAMP>) is also given, the first field of the
-user-defined struct must be of type <SAMP>&lsquo;int&rsquo;</SAMP>, not <SAMP>&lsquo;char *&rsquo;</SAMP>, because
-it will contain offsets into the string pool instead of actual strings.
-To convert such an offset to a string, you can use the expression
-<SAMP>&lsquo;stringpool + <VAR>o</VAR>&rsquo;</SAMP>, where <VAR>o</VAR> is the offset. The string pool
-name can be changed through the <SAMP>&lsquo;%define string-pool-name&rsquo;</SAMP> declaration.
-
-<DT><SAMP>&lsquo;%define string-pool-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX26"></A>
-Allows you to specify the name of the generated string pool created by
-the declaration <SAMP>&lsquo;%pic&rsquo;</SAMP> (or, equivalently, the option <SAMP>&lsquo;-P&rsquo;</SAMP>).
-The default name is <SAMP>&lsquo;stringpool&rsquo;</SAMP>. This declaration permits the use of
-two hash tables in the same file, with <SAMP>&lsquo;%pic&rsquo;</SAMP> and even when the
-<SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration (or, equivalently, the option <SAMP>&lsquo;-G&rsquo;</SAMP>)
-is given.
-
-<DT><SAMP>&lsquo;%null-strings&rsquo;</SAMP>
-<DD>
-<A NAME="IDX27"></A>
-Use NULL strings instead of empty strings for empty keyword table entries.
-This reduces the startup time of programs using a shared library containing
-the generated code (but not as much as the declaration <SAMP>&lsquo;%pic&rsquo;</SAMP>), at the
-expense of one more test-and-branch instruction at run time.
-
-<DT><SAMP>&lsquo;%define word-array-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX28"></A>
-Allows you to specify the name for the generated array containing the
-hash table. Default name is <SAMP>&lsquo;wordlist&rsquo;</SAMP>. This option permits the
-use of two hash tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;%define length-table-name <VAR>name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX29"></A>
-Allows you to specify the name for the generated array containing the
-length table. Default name is <SAMP>&lsquo;lengthtable&rsquo;</SAMP>. This option permits the
-use of two length tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;%switch=<VAR>count</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX30"></A>
-Causes the generated C code to use a <CODE>switch</CODE> statement scheme,
-rather than an array lookup table. This can lead to a reduction in both
-time and space requirements for some input files. The argument to this
-option determines how many <CODE>switch</CODE> statements are generated. A
-value of 1 generates 1 <CODE>switch</CODE> containing all the elements, a
-value of 2 generates 2 tables with 1/2 the elements in each
-<CODE>switch</CODE>, etc. This is useful since many C compilers cannot
-correctly generate code for large <CODE>switch</CODE> statements. This option
-was inspired in part by Keith Bostic's original C program.
-
-<DT><SAMP>&lsquo;%omit-struct-type&rsquo;</SAMP>
-<DD>
-<A NAME="IDX31"></A>
-Prevents the transfer of the type declaration to the output file. Use
-this option if the type is already defined elsewhere.
-</DL>
-
-
-
-<H4><A NAME="SEC10" HREF="gperf_toc.html#TOC10">4.1.1.3 C Code Inclusion</A></H4>
-
-<P>
-<A NAME="IDX32"></A>
-<A NAME="IDX33"></A>
-Using a syntax similar to GNU utilities <CODE>flex</CODE> and <CODE>bison</CODE>, it
-is possible to directly include C source text and comments verbatim into
-the generated output file. This is accomplished by enclosing the region
-inside left-justified surrounding <SAMP>&lsquo;%{&rsquo;</SAMP>, <SAMP>&lsquo;%}&rsquo;</SAMP> pairs. Here is
-an input fragment based on the previous example that illustrates this
-feature:
-
-</P>
-
-<PRE>
-%{
-#include &#60;assert.h&#62;
-/* This section of code is inserted directly into the output. */
-int return_month_days (struct month *months, int is_leap_year);
-%}
-struct month { char *name; int number; int days; int leap_days; };
-%%
-january, 1, 31, 31
-february, 2, 28, 29
-march, 3, 31, 31
-...
-</PRE>
-
-
-
-<H3><A NAME="SEC11" HREF="gperf_toc.html#TOC11">4.1.2 Format for Keyword Entries</A></H3>
-
-<P>
-The second input file format section contains lines of keywords and any
-associated attributes you might supply. A line beginning with <SAMP>&lsquo;#&rsquo;</SAMP>
-in the first column is considered a comment. Everything following the
-<SAMP>&lsquo;#&rsquo;</SAMP> is ignored, up to and including the following newline. A line
-beginning with <SAMP>&lsquo;%&rsquo;</SAMP> in the first column is an option declaration and
-must not occur within the keywords section.
-
-</P>
-<P>
-The first field of each non-comment line is always the keyword itself. It
-can be given in two ways: as a simple name, i.e., without surrounding
-string quotation marks, or as a string enclosed in double-quotes, in
-C syntax, possibly with backslash escapes like <CODE>\"</CODE> or <CODE>\234</CODE>
-or <CODE>\xa8</CODE>. In either case, it must start right at the beginning
-of the line, without leading whitespace.
-In this context, a “field” is considered to extend up to, but
-not include, the first blank, comma, or newline. Here is a simple
-example taken from a partial list of C reserved words:
-
-</P>
-
-<PRE>
-# These are a few C reserved words, see the c.gperf file
-# for a complete list of ANSI C reserved words.
-unsigned
-sizeof
-switch
-signed
-if
-default
-for
-while
-return
-</PRE>
-
-<P>
-Note that unlike <CODE>flex</CODE> or <CODE>bison</CODE> the first <SAMP>&lsquo;%%&rsquo;</SAMP> marker
-may be elided if the declaration section is empty.
-
-</P>
-<P>
-Additional fields may optionally follow the leading keyword. Fields
-should be separated by commas, and terminate at the end of line. What
-these fields mean is entirely up to you; they are used to initialize the
-elements of the user-defined <CODE>struct</CODE> provided by you in the
-declaration section. If the <SAMP>&lsquo;-t&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) is <EM>not</EM> enabled
-these fields are simply ignored. All previous examples except the last
-one contain keyword attributes.
-
-</P>
-
-
-<H3><A NAME="SEC12" HREF="gperf_toc.html#TOC12">4.1.3 Including Additional C Functions</A></H3>
-
-<P>
-The optional third section also corresponds closely with conventions
-found in <CODE>flex</CODE> and <CODE>bison</CODE>. All text in this section,
-starting at the final <SAMP>&lsquo;%%&rsquo;</SAMP> and extending to the end of the input
-file, is included verbatim into the generated output file. Naturally,
-it is your responsibility to ensure that the code contained in this
-section is valid C.
-
-</P>
-
-
-<H3><A NAME="SEC13" HREF="gperf_toc.html#TOC13">4.1.4 Where to place directives for GNU <CODE>indent</CODE>.</A></H3>
-
-<P>
-If you want to invoke GNU <CODE>indent</CODE> on a <CODE>gperf</CODE> input file,
-you will see that GNU <CODE>indent</CODE> doesn't understand the <SAMP>&lsquo;%%&rsquo;</SAMP>,
-<SAMP>&lsquo;%{&rsquo;</SAMP> and <SAMP>&lsquo;%}&rsquo;</SAMP> directives that control <CODE>gperf</CODE>'s
-interpretation of the input file. Therefore you have to insert some
-directives for GNU <CODE>indent</CODE>. More precisely, assuming the most
-general input file structure
-
-</P>
-
-<PRE>
-declarations part 1
-%{
-verbatim code
-%}
-declarations part 2
-%%
-keywords
-%%
-functions
-</PRE>
-
-<P>
-you would insert <SAMP>&lsquo;*INDENT-OFF*&rsquo;</SAMP> and <SAMP>&lsquo;*INDENT-ON*&rsquo;</SAMP> comments
-as follows:
-
-</P>
-
-<PRE>
-/* *INDENT-OFF* */
-declarations part 1
-%{
-/* *INDENT-ON* */
-verbatim code
-/* *INDENT-OFF* */
-%}
-declarations part 2
-%%
-keywords
-%%
-/* *INDENT-ON* */
-functions
-</PRE>
-
-
-
-<H2><A NAME="SEC14" HREF="gperf_toc.html#TOC14">4.2 Output Format for Generated C Code with <CODE>gperf</CODE></A></H2>
-<P>
-<A NAME="IDX34"></A>
-
-</P>
-<P>
-Several options control how the generated C code appears on the standard
-output. Two C functions are generated. They are called <CODE>hash</CODE> and
-<CODE>in_word_set</CODE>, although you may modify their names with a command-line
-option. Both functions require two arguments, a string, <CODE>char *</CODE>
-<VAR>str</VAR>, and a length parameter, <CODE>int</CODE> <VAR>len</VAR>. Their default
-function prototypes are as follows:
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> unsigned int <B>hash</B> <I>(const char * <VAR>str</VAR>, unsigned int <VAR>len</VAR>)</I>
-<DD><A NAME="IDX35"></A>
-By default, the generated <CODE>hash</CODE> function returns an integer value
-created by adding <VAR>len</VAR> to several user-specified <VAR>str</VAR> byte
-positions indexed into an <EM>associated values</EM> table stored in a
-local static array. The associated values table is constructed
-internally by <CODE>gperf</CODE> and later output as a static local C array
-called <SAMP>&lsquo;hash_table&rsquo;</SAMP>. The relevant selected positions (i.e. indices
-into <VAR>str</VAR>) are specified via the <SAMP>&lsquo;-k&rsquo;</SAMP> option when running
-<CODE>gperf</CODE>, as detailed in the <EM>Options</EM> section below (see section <A HREF="gperf_6.html#SEC17">5 Invoking <CODE>gperf</CODE></A>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> <B>in_word_set</B> <I>(const char * <VAR>str</VAR>, unsigned int <VAR>len</VAR>)</I>
-<DD><A NAME="IDX36"></A>
-If <VAR>str</VAR> is in the keyword set, returns a pointer to that
-keyword. More exactly, if the option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) was given, it returns
-a pointer to the matching keyword's structure. Otherwise it returns
-<CODE>NULL</CODE>.
-</DL>
-
-</P>
-<P>
-If the option <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-declaration) is not used, <VAR>str</VAR> must be a NUL terminated
-string of exactly length <VAR>len</VAR>. If <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP> declaration) is used, <VAR>str</VAR> must
-simply be an array of <VAR>len</VAR> bytes and does not need to be NUL
-terminated.
-
-</P>
-<P>
-The code generated for these two functions is affected by the following
-options:
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-t&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--struct-type&rsquo;</SAMP>
-<DD>
-Make use of the user-defined <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;-S <VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--switch=<VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX37"></A>
-Generate 1 or more C <CODE>switch</CODE> statement rather than use a large,
-(and potentially sparse) static array. Although the exact time and
-space savings of this approach vary according to your C compiler's
-degree of optimization, this method often results in smaller and faster
-code.
-</DL>
-
-<P>
-If the <SAMP>&lsquo;-t&rsquo;</SAMP> and <SAMP>&lsquo;-S&rsquo;</SAMP> options (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> and <SAMP>&lsquo;%switch&rsquo;</SAMP> declarations) are omitted, the default
-action
-is to generate a <CODE>char *</CODE> array containing the keywords, together with
-additional empty strings used for padding the array. By experimenting
-with the various input and output options, and timing the resulting C
-code, you can determine the best option choices for different keyword
-set characteristics.
-
-</P>
-
-
-<H2><A NAME="SEC15" HREF="gperf_toc.html#TOC15">4.3 Use of NUL bytes</A></H2>
-<P>
-<A NAME="IDX38"></A>
-
-</P>
-<P>
-By default, the code generated by <CODE>gperf</CODE> operates on zero
-terminated strings, the usual representation of strings in C. This means
-that the keywords in the input file must not contain NUL bytes,
-and the <VAR>str</VAR> argument passed to <CODE>hash</CODE> or <CODE>in_word_set</CODE>
-must be NUL terminated and have exactly length <VAR>len</VAR>.
-
-</P>
-<P>
-If option <SAMP>&lsquo;-c&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP>
-declaration) is used, then the <VAR>str</VAR> argument does not need
-to be NUL terminated. The code generated by <CODE>gperf</CODE> will only
-access the first <VAR>len</VAR>, not <VAR>len+1</VAR>, bytes starting at <VAR>str</VAR>.
-However, the keywords in the input file still must not contain NUL
-bytes.
-
-</P>
-<P>
-If option <SAMP>&lsquo;-l&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%compare-lengths&rsquo;</SAMP>
-declaration) is used, then the hash table performs binary
-comparison. The keywords in the input file may contain NUL bytes,
-written in string syntax as <CODE>\000</CODE> or <CODE>\x00</CODE>, and the code
-generated by <CODE>gperf</CODE> will treat NUL like any other byte.
-Also, in this case the <SAMP>&lsquo;-c&rsquo;</SAMP> option (or, equivalently, the
-<SAMP>&lsquo;%compare-strncmp&rsquo;</SAMP> declaration) is ignored.
-
-</P>
-
-
-<H2><A NAME="SEC16" HREF="gperf_toc.html#TOC16">4.4 The Copyright of the Output</A></H2>
-<P>
-<A NAME="IDX39"></A>
-
-</P>
-<P>
-<CODE>gperf</CODE> is under GPL, but that does not cause the output produced
-by <CODE>gperf</CODE> to be under GPL. The reason is that the output contains
-only small pieces of text that come directly from <CODE>gperf</CODE>'s source
-code -- only about 7 lines long, too small for being significant --, and
-therefore the output is not a “work based on <CODE>gperf</CODE>” (in the
-sense of the GPL version 3).
-
-</P>
-<P>
-On the other hand, the output produced by <CODE>gperf</CODE> contains
-essentially all of the input file. Therefore the output is a
-“derivative work” of the input (in the sense of U.S. copyright law);
-and its copyright status depends on the copyright of the input. For most
-software licenses, the result is that the the output is under the same
-license, with the same copyright holder, as the input that was passed to
-<CODE>gperf</CODE>.
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_4.html">previous</A>, <A HREF="gperf_6.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_6.html b/doc/gperf_6.html
deleted file mode 100644
index 92743c6..0000000
--- a/doc/gperf_6.html
+++ /dev/null
@@ -1,502 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 5 Invoking gperf</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_5.html">previous</A>, <A HREF="gperf_7.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC17" HREF="gperf_toc.html#TOC17">5 Invoking <CODE>gperf</CODE></A></H1>
-
-<P>
-There are <EM>many</EM> options to <CODE>gperf</CODE>. They were added to make
-the program more convenient for use with real applications. “On-line”
-help is readily available via the <SAMP>&lsquo;--help&rsquo;</SAMP> option. Here is the
-complete list of options.
-
-</P>
-
-
-
-<H2><A NAME="SEC18" HREF="gperf_toc.html#TOC18">5.1 Specifying the Location of the Output File</A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;--output-file=<VAR>file</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name of the file to which the output is written to.
-</DL>
-
-<P>
-The results are written to standard output if no output file is specified
-or if it is <SAMP>&lsquo;-&rsquo;</SAMP>.
-
-</P>
-
-
-<H2><A NAME="SEC19" HREF="gperf_toc.html#TOC19">5.2 Options that affect Interpretation of the Input File</A></H2>
-
-<P>
-These options are also available as declarations in the input file
-(see section <A HREF="gperf_5.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-e <VAR>keyword-delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--delimiters=<VAR>keyword-delimiter-list</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX40"></A>
-Allows you to provide a string containing delimiters used to
-separate keywords from their attributes. The default is ",". This
-option is essential if you want to use keywords that have embedded
-commas or newlines. One useful trick is to use -e'TAB', where TAB is
-the literal tab character.
-
-<DT><SAMP>&lsquo;-t&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--struct-type&rsquo;</SAMP>
-<DD>
-Allows you to include a <CODE>struct</CODE> type declaration for generated
-code. Any text before a pair of consecutive <SAMP>&lsquo;%%&rsquo;</SAMP> is considered
-part of the type declaration. Keywords and additional fields may follow
-this, one group of fields per line. A set of examples for generating
-perfect hash tables and functions for Ada, C, C++, Pascal, Modula 2,
-Modula 3 and JavaScript reserved words are distributed with this release.
-
-<DT><SAMP>&lsquo;--ignore-case&rsquo;</SAMP>
-<DD>
-Consider upper and lower case ASCII characters as equivalent. The string
-comparison will use a case insignificant character comparison. Note that
-locale dependent case mappings are ignored. This option is therefore not
-suitable if a properly internationalized or locale aware case mapping
-should be used. (For example, in a Turkish locale, the upper case equivalent
-of the lowercase ASCII letter <SAMP>&lsquo;i&rsquo;</SAMP> is the non-ASCII character
-<SAMP>&lsquo;capital i with dot above&rsquo;</SAMP>.) For this case, it is better to apply
-an uppercase or lowercase conversion on the string before passing it to
-the <CODE>gperf</CODE> generated function.
-</DL>
-
-
-
-<H2><A NAME="SEC20" HREF="gperf_toc.html#TOC20">5.3 Options to specify the Language for the Output Code</A></H2>
-
-<P>
-These options are also available as declarations in the input file
-(see section <A HREF="gperf_5.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-L <VAR>generated-language-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--language=<VAR>generated-language-name</VAR>&rsquo;</SAMP>
-<DD>
-Instructs <CODE>gperf</CODE> to generate code in the language specified by the
-option's argument. Languages handled are currently:
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;KR-C&rsquo;</SAMP>
-<DD>
-Old-style K&#38;R C. This language is understood by old-style C compilers and
-ANSI C compilers, but ANSI C compilers may flag warnings (or even errors)
-because of lacking <SAMP>&lsquo;const&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;C&rsquo;</SAMP>
-<DD>
-Common C. This language is understood by ANSI C compilers, and also by
-old-style C compilers, provided that you <CODE>#define const</CODE> to empty
-for compilers which don't know about this keyword.
-
-<DT><SAMP>&lsquo;ANSI-C&rsquo;</SAMP>
-<DD>
-ANSI C. This language is understood by ANSI C compilers and C++ compilers.
-
-<DT><SAMP>&lsquo;C++&rsquo;</SAMP>
-<DD>
-C++. This language is understood by C++ compilers.
-</DL>
-
-The default is ANSI-C.
-
-<DT><SAMP>&lsquo;-a&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-
-<DT><SAMP>&lsquo;-g&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-</DL>
-
-
-
-<H2><A NAME="SEC21" HREF="gperf_toc.html#TOC21">5.4 Options for fine tuning Details in the Output Code</A></H2>
-
-<P>
-Most of these options are also available as declarations in the input file
-(see section <A HREF="gperf_5.html#SEC9">4.1.1.2 Gperf Declarations</A>).
-
-</P>
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-K <VAR>slot-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--slot-name=<VAR>slot-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX41"></A>
-This option is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-By default, the program assumes the structure component identifier for
-the keyword is <SAMP>&lsquo;name&rsquo;</SAMP>. This option allows an arbitrary choice of
-identifier for this component, although it still must occur as the first
-field in your supplied <CODE>struct</CODE>.
-
-<DT><SAMP>&lsquo;-F <VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--initializer-suffix=<VAR>initializers</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX42"></A>
-This option is only useful when option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) has been given.
-It permits to specify initializers for the structure members following
-<VAR>slot-name</VAR> in empty hash table entries. The list of initializers
-should start with a comma. By default, the emitted code will
-zero-initialize structure members following <VAR>slot-name</VAR>.
-
-<DT><SAMP>&lsquo;-H <VAR>hash-function-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--hash-function-name=<VAR>hash-function-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name for the generated hash function. Default
-name is <SAMP>&lsquo;hash&rsquo;</SAMP>. This option permits the use of two hash tables in
-the same file.
-
-<DT><SAMP>&lsquo;-N <VAR>lookup-function-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--lookup-function-name=<VAR>lookup-function-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name for the generated lookup function.
-Default name is <SAMP>&lsquo;in_word_set&rsquo;</SAMP>. This option permits multiple
-generated hash functions to be used in the same application.
-
-<DT><SAMP>&lsquo;-Z <VAR>class-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--class-name=<VAR>class-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX43"></A>
-This option is only useful when option <SAMP>&lsquo;-L C++&rsquo;</SAMP> (or, equivalently,
-the <SAMP>&lsquo;%language=C++&rsquo;</SAMP> declaration) has been given. It
-allows you to specify the name of generated C++ class. Default name is
-<CODE>Perfect_Hash</CODE>.
-
-<DT><SAMP>&lsquo;-7&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--seven-bit&rsquo;</SAMP>
-<DD>
-This option specifies that all strings that will be passed as arguments
-to the generated hash function and the generated lookup function will
-solely consist of 7-bit ASCII characters (bytes in the range 0..127).
-(Note that the ANSI C functions <CODE>isalnum</CODE> and <CODE>isgraph</CODE> do
-<EM>not</EM> guarantee that a byte is in this range. Only an explicit
-test like <SAMP>&lsquo;c &#62;= 'A' &#38;&#38; c &#60;= 'Z'&rsquo;</SAMP> guarantees this.) This was the
-default in versions of <CODE>gperf</CODE> earlier than 2.7; now the default is
-to support 8-bit and multibyte characters.
-
-<DT><SAMP>&lsquo;-l&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--compare-lengths&rsquo;</SAMP>
-<DD>
-Compare keyword lengths before trying a string comparison. This option
-is mandatory for binary comparisons (see section <A HREF="gperf_5.html#SEC15">4.3 Use of NUL bytes</A>). It also might
-cut down on the number of string comparisons made during the lookup, since
-keywords with different lengths are never compared via <CODE>strcmp</CODE>.
-However, using <SAMP>&lsquo;-l&rsquo;</SAMP> might greatly increase the size of the
-generated C code if the lookup table range is large (which implies that
-the switch option <SAMP>&lsquo;-S&rsquo;</SAMP> or <SAMP>&lsquo;%switch&rsquo;</SAMP> is not enabled), since the length
-table contains as many elements as there are entries in the lookup table.
-
-<DT><SAMP>&lsquo;-c&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--compare-strncmp&rsquo;</SAMP>
-<DD>
-Generates C code that uses the <CODE>strncmp</CODE> function to perform
-string comparisons. The default action is to use <CODE>strcmp</CODE>.
-
-<DT><SAMP>&lsquo;-C&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--readonly-tables&rsquo;</SAMP>
-<DD>
-Makes the contents of all generated lookup tables constant, i.e.,
-“readonly”. Many compilers can generate more efficient code for this
-by putting the tables in readonly memory.
-
-<DT><SAMP>&lsquo;-E&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--enum&rsquo;</SAMP>
-<DD>
-Define constant values using an enum local to the lookup function rather
-than with #defines. This also means that different lookup functions can
-reside in the same file. Thanks to James Clark <CODE>&#60;jjc@ai.mit.edu&#62;</CODE>.
-
-<DT><SAMP>&lsquo;-I&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--includes&rsquo;</SAMP>
-<DD>
-Include the necessary system include file, <CODE>&#60;string.h&#62;</CODE>, at the
-beginning of the code. By default, this is not done; the user must
-include this header file himself to allow compilation of the code.
-
-<DT><SAMP>&lsquo;-G&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--global-table&rsquo;</SAMP>
-<DD>
-Generate the static table of keywords as a static global variable,
-rather than hiding it inside of the lookup function (which is the
-default behavior).
-
-<DT><SAMP>&lsquo;-P&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--pic&rsquo;</SAMP>
-<DD>
-Optimize the generated table for inclusion in shared libraries. This
-reduces the startup time of programs using a shared library containing
-the generated code. If the option <SAMP>&lsquo;-t&rsquo;</SAMP> (or, equivalently, the
-<SAMP>&lsquo;%struct-type&rsquo;</SAMP> declaration) is also given, the first field of the
-user-defined struct must be of type <SAMP>&lsquo;int&rsquo;</SAMP>, not <SAMP>&lsquo;char *&rsquo;</SAMP>, because
-it will contain offsets into the string pool instead of actual strings.
-To convert such an offset to a string, you can use the expression
-<SAMP>&lsquo;stringpool + <VAR>o</VAR>&rsquo;</SAMP>, where <VAR>o</VAR> is the offset. The string pool
-name can be changed through the option <SAMP>&lsquo;--string-pool-name&rsquo;</SAMP>.
-
-<DT><SAMP>&lsquo;-Q <VAR>string-pool-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--string-pool-name=<VAR>string-pool-name</VAR>&rsquo;</SAMP>
-<DD>
-Allows you to specify the name of the generated string pool created by
-option <SAMP>&lsquo;-P&rsquo;</SAMP>. The default name is <SAMP>&lsquo;stringpool&rsquo;</SAMP>. This option
-permits the use of two hash tables in the same file, with <SAMP>&lsquo;-P&rsquo;</SAMP> and
-even when the option <SAMP>&lsquo;-G&rsquo;</SAMP> (or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP>
-declaration) is given.
-
-<DT><SAMP>&lsquo;--null-strings&rsquo;</SAMP>
-<DD>
-Use NULL strings instead of empty strings for empty keyword table entries.
-This reduces the startup time of programs using a shared library containing
-the generated code (but not as much as option <SAMP>&lsquo;-P&rsquo;</SAMP>), at the expense
-of one more test-and-branch instruction at run time.
-
-<DT><SAMP>&lsquo;-W <VAR>hash-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--word-array-name=<VAR>hash-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX44"></A>
-Allows you to specify the name for the generated array containing the
-hash table. Default name is <SAMP>&lsquo;wordlist&rsquo;</SAMP>. This option permits the
-use of two hash tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;--length-table-name=<VAR>length-table-array-name</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX45"></A>
-Allows you to specify the name for the generated array containing the
-length table. Default name is <SAMP>&lsquo;lengthtable&rsquo;</SAMP>. This option permits the
-use of two length tables in the same file, even when the option <SAMP>&lsquo;-G&rsquo;</SAMP>
-(or, equivalently, the <SAMP>&lsquo;%global-table&rsquo;</SAMP> declaration) is given.
-
-<DT><SAMP>&lsquo;-S <VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--switch=<VAR>total-switch-statements</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX46"></A>
-Causes the generated C code to use a <CODE>switch</CODE> statement scheme,
-rather than an array lookup table. This can lead to a reduction in both
-time and space requirements for some input files. The argument to this
-option determines how many <CODE>switch</CODE> statements are generated. A
-value of 1 generates 1 <CODE>switch</CODE> containing all the elements, a
-value of 2 generates 2 tables with 1/2 the elements in each
-<CODE>switch</CODE>, etc. This is useful since many C compilers cannot
-correctly generate code for large <CODE>switch</CODE> statements. This option
-was inspired in part by Keith Bostic's original C program.
-
-<DT><SAMP>&lsquo;-T&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--omit-struct-type&rsquo;</SAMP>
-<DD>
-Prevents the transfer of the type declaration to the output file. Use
-this option if the type is already defined elsewhere.
-
-<DT><SAMP>&lsquo;-p&rsquo;</SAMP>
-<DD>
-This option is supported for compatibility with previous releases of
-<CODE>gperf</CODE>. It does not do anything.
-</DL>
-
-
-
-<H2><A NAME="SEC22" HREF="gperf_toc.html#TOC22">5.5 Options for changing the Algorithms employed by <CODE>gperf</CODE></A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-k <VAR>selected-byte-positions</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--key-positions=<VAR>selected-byte-positions</VAR>&rsquo;</SAMP>
-<DD>
-Allows selection of the byte positions used in the keywords'
-hash function. The allowable choices range between 1-255, inclusive.
-The positions are separated by commas, e.g., <SAMP>&lsquo;-k 9,4,13,14&rsquo;</SAMP>;
-ranges may be used, e.g., <SAMP>&lsquo;-k 2-7&rsquo;</SAMP>; and positions may occur
-in any order. Furthermore, the wildcard '*' causes the generated
-hash function to consider <STRONG>all</STRONG> byte positions in each keyword,
-whereas '$' instructs the hash function to use the “final byte”
-of a keyword (this is the only way to use a byte position greater than
-255, incidentally).
-
-For instance, the option <SAMP>&lsquo;-k 1,2,4,6-10,'$'&rsquo;</SAMP> generates a hash
-function that considers positions 1,2,4,6,7,8,9,10, plus the last
-byte in each keyword (which may be at a different position for each
-keyword, obviously). Keywords
-with length less than the indicated byte positions work properly, since
-selected byte positions exceeding the keyword length are simply not
-referenced in the hash function.
-
-This option is not normally needed since version 2.8 of <CODE>gperf</CODE>;
-the default byte positions are computed depending on the keyword set,
-through a search that minimizes the number of byte positions.
-
-<DT><SAMP>&lsquo;-D&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--duplicates&rsquo;</SAMP>
-<DD>
-<A NAME="IDX47"></A>
-Handle keywords whose selected byte sets hash to duplicate values.
-Duplicate hash values can occur if a set of keywords has the same names, but
-possesses different attributes, or if the selected byte positions are not well
-chosen. With the -D option <CODE>gperf</CODE> treats all these keywords as
-part of an equivalence class and generates a perfect hash function with
-multiple comparisons for duplicate keywords. It is up to you to completely
-disambiguate the keywords by modifying the generated C code. However,
-<CODE>gperf</CODE> helps you out by organizing the output.
-
-Using this option usually means that the generated hash function is no
-longer perfect. On the other hand, it permits <CODE>gperf</CODE> to work on
-keyword sets that it otherwise could not handle.
-
-<DT><SAMP>&lsquo;-m <VAR>iterations</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--multiple-iterations=<VAR>iterations</VAR>&rsquo;</SAMP>
-<DD>
-Perform multiple choices of the <SAMP>&lsquo;-i&rsquo;</SAMP> and <SAMP>&lsquo;-j&rsquo;</SAMP> values, and
-choose the best results. This increases the running time by a factor of
-<VAR>iterations</VAR> but does a good job minimizing the generated table size.
-
-<DT><SAMP>&lsquo;-i <VAR>initial-value</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--initial-asso=<VAR>initial-value</VAR>&rsquo;</SAMP>
-<DD>
-Provides an initial <VAR>value</VAR> for the associate values array. Default
-is 0. Increasing the initial value helps inflate the final table size,
-possibly leading to more time efficient keyword lookups. Note that this
-option is not particularly useful when <SAMP>&lsquo;-S&rsquo;</SAMP> (or, equivalently,
-<SAMP>&lsquo;%switch&rsquo;</SAMP>) is used. Also,
-<SAMP>&lsquo;-i&rsquo;</SAMP> is overridden when the <SAMP>&lsquo;-r&rsquo;</SAMP> option is used.
-
-<DT><SAMP>&lsquo;-j <VAR>jump-value</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--jump=<VAR>jump-value</VAR>&rsquo;</SAMP>
-<DD>
-<A NAME="IDX48"></A>
-Affects the “jump value”, i.e., how far to advance the associated
-byte value upon collisions. <VAR>Jump-value</VAR> is rounded up to an
-odd number, the default is 5. If the <VAR>jump-value</VAR> is 0 <CODE>gperf</CODE>
-jumps by random amounts.
-
-<DT><SAMP>&lsquo;-n&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--no-strlen&rsquo;</SAMP>
-<DD>
-Instructs the generator not to include the length of a keyword when
-computing its hash value. This may save a few assembly instructions in
-the generated lookup table.
-
-<DT><SAMP>&lsquo;-r&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--random&rsquo;</SAMP>
-<DD>
-Utilizes randomness to initialize the associated values table. This
-frequently generates solutions faster than using deterministic
-initialization (which starts all associated values at 0). Furthermore,
-using the randomization option generally increases the size of the
-table.
-
-<DT><SAMP>&lsquo;-s <VAR>size-multiple</VAR>&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--size-multiple=<VAR>size-multiple</VAR>&rsquo;</SAMP>
-<DD>
-Affects the size of the generated hash table. The numeric argument for
-this option indicates “how many times larger or smaller” the maximum
-associated value range should be, in relationship to the number of keywords.
-It can be written as an integer, a floating-point number or a fraction.
-For example, a value of 3 means “allow the maximum associated value to be
-about 3 times larger than the number of input keywords”.
-Conversely, a value of 1/3 means “allow the maximum associated value to
-be about 3 times smaller than the number of input keywords”. Values
-smaller than 1 are useful for limiting the overall size of the generated hash
-table, though the option <SAMP>&lsquo;-m&rsquo;</SAMP> is better at this purpose.
-
-If `generate switch' option <SAMP>&lsquo;-S&rsquo;</SAMP> (or, equivalently, <SAMP>&lsquo;%switch&rsquo;</SAMP>) is
-<EM>not</EM> enabled, the maximum
-associated value influences the static array table size, and a larger
-table should decrease the time required for an unsuccessful search, at
-the expense of extra table space.
-
-The default value is 1, thus the default maximum associated value about
-the same size as the number of keywords (for efficiency, the maximum
-associated value is always rounded up to a power of 2). The actual
-table size may vary somewhat, since this technique is essentially a
-heuristic.
-</DL>
-
-
-
-<H2><A NAME="SEC23" HREF="gperf_toc.html#TOC23">5.6 Informative Output</A></H2>
-
-<DL COMPACT>
-
-<DT><SAMP>&lsquo;-h&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--help&rsquo;</SAMP>
-<DD>
-Prints a short summary on the meaning of each program option. Aborts
-further program execution.
-
-<DT><SAMP>&lsquo;-v&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--version&rsquo;</SAMP>
-<DD>
-Prints out the current version number.
-
-<DT><SAMP>&lsquo;-d&rsquo;</SAMP>
-<DD>
-<DT><SAMP>&lsquo;--debug&rsquo;</SAMP>
-<DD>
-Enables the debugging option. This produces verbose diagnostics to
-“standard error” when <CODE>gperf</CODE> is executing. It is useful both for
-maintaining the program and for determining whether a given set of
-options is actually speeding up the search for a solution. Some useful
-information is dumped at the end of the program when the <SAMP>&lsquo;-d&rsquo;</SAMP>
-option is enabled.
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_5.html">previous</A>, <A HREF="gperf_7.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_7.html b/doc/gperf_7.html
deleted file mode 100644
index af5edf8..0000000
--- a/doc/gperf_7.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 6 Known Bugs and Limitations with gperf</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_6.html">previous</A>, <A HREF="gperf_8.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC24" HREF="gperf_toc.html#TOC24">6 Known Bugs and Limitations with <CODE>gperf</CODE></A></H1>
-
-<P>
-The following are some limitations with the current release of
-<CODE>gperf</CODE>:
-
-</P>
-
-<UL>
-<LI>
-
-The <CODE>gperf</CODE> utility is tuned to execute quickly, and works quickly
-for small to medium size data sets (around 1000 keywords). It is
-extremely useful for maintaining perfect hash functions for compiler
-keyword sets. Several recent enhancements now enable <CODE>gperf</CODE> to
-work efficiently on much larger keyword sets (over 15,000 keywords).
-When processing large keyword sets it helps greatly to have over 8 megs
-of RAM.
-
-<LI>
-
-The size of the generate static keyword array can get <EM>extremely</EM>
-large if the input keyword file is large or if the keywords are quite
-similar. This tends to slow down the compilation of the generated C
-code, and <EM>greatly</EM> inflates the object code size. If this
-situation occurs, consider using the <SAMP>&lsquo;-S&rsquo;</SAMP> option to reduce data
-size, potentially increasing keyword recognition time a negligible
-amount. Since many C compilers cannot correctly generate code for
-large switch statements it is important to qualify the <VAR>-S</VAR> option
-with an appropriate numerical argument that controls the number of
-switch statements generated.
-
-<LI>
-
-The maximum number of selected byte positions has an
-arbitrary limit of 255. This restriction should be removed, and if
-anyone considers this a problem write me and let me know so I can remove
-the constraint.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_6.html">previous</A>, <A HREF="gperf_8.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_8.html b/doc/gperf_8.html
deleted file mode 100644
index fecdb26..0000000
--- a/doc/gperf_8.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 7 Things Still Left to Do</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_7.html">previous</A>, <A HREF="gperf_9.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC25" HREF="gperf_toc.html#TOC25">7 Things Still Left to Do</A></H1>
-
-<P>
-It should be “relatively” easy to replace the current perfect hash
-function algorithm with a more exhaustive approach; the perfect hash
-module is essential independent from other program modules. Additional
-worthwhile improvements include:
-
-</P>
-
-<UL>
-<LI>
-
-Another useful extension involves modifying the program to generate
-“minimal” perfect hash functions (under certain circumstances, the
-current version can be rather extravagant in the generated table size).
-This is mostly of theoretical interest, since a sparse table
-often produces faster lookups, and use of the <SAMP>&lsquo;-S&rsquo;</SAMP> <CODE>switch</CODE>
-option can minimize the data size, at the expense of slightly longer
-lookups (note that the gcc compiler generally produces good code for
-<CODE>switch</CODE> statements, reducing the need for more complex schemes).
-
-<LI>
-
-In addition to improving the algorithm, it would also be useful to
-generate an Ada package as the code output, in addition to the current
-C and C++ routines.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_7.html">previous</A>, <A HREF="gperf_9.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_9.html b/doc/gperf_9.html
deleted file mode 100644
index 4664479..0000000
--- a/doc/gperf_9.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - 8 Bibliography</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_8.html">previous</A>, <A HREF="gperf_10.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC26" HREF="gperf_toc.html#TOC26">8 Bibliography</A></H1>
-
-<P>
-[1] Chang, C.C.: <I>A Scheme for Constructing Ordered Minimal Perfect
-Hashing Functions</I> Information Sciences 39(1986), 187-195.
-
-</P>
-<P>
-[2] Cichelli, Richard J. <I>Author's Response to “On Cichelli's Minimal Perfect Hash
-Functions Method”</I> Communications of the ACM, 23, 12(December 1980), 729.
-
-</P>
-<P>
-[3] Cichelli, Richard J. <I>Minimal Perfect Hash Functions Made Simple</I>
-Communications of the ACM, 23, 1(January 1980), 17-19.
-
-</P>
-<P>
-[4] Cook, C. R. and Oldehoeft, R.R. <I>A Letter Oriented Minimal
-Perfect Hashing Function</I> SIGPLAN Notices, 17, 9(September 1982), 18-27.
-
-</P>
-<P>
-[5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M.
-<I>Practical Perfect Hashing</I> Computer Journal, 28, 1(January 1985), 54-58.
-
-</P>
-<P>
-[6] Jaeschke, G. <I>Reciprocal Hashing: A Method for Generating Minimal
-Perfect Hashing Functions</I> Communications of the ACM, 24, 12(December
-1981), 829-833.
-
-</P>
-<P>
-[7] Jaeschke, G. and Osterburg, G. <I>On Cichelli's Minimal Perfect
-Hash Functions Method</I> Communications of the ACM, 23, 12(December 1980),
-728-729.
-
-</P>
-<P>
-[8] Sager, Thomas J. <I>A Polynomial Time Generator for Minimal Perfect
-Hash Functions</I> Communications of the ACM, 28, 5(December 1985), 523-532
-
-</P>
-<P>
-[9] Schmidt, Douglas C. <I>GPERF: A Perfect Hash Function Generator</I>
-Second USENIX C++ Conference Proceedings, April 1990.
-
-</P>
-<P>
-[10] Schmidt, Douglas C. <I>GPERF: A Perfect Hash Function Generator</I>
-C++ Report, SIGS 10 10 (November/December 1998).
-
-</P>
-<P>
-[11] Sebesta, R.W. and Taylor, M.A. <I>Minimal Perfect Hash Functions
-for Reserved Word Lists</I> SIGPLAN Notices, 20, 12(September 1985), 47-53.
-
-</P>
-<P>
-[12] Sprugnoli, R. <I>Perfect Hashing Functions: A Single Probe
-Retrieving Method for Static Sets</I> Communications of the ACM, 20
-11(November 1977), 841-850.
-
-</P>
-<P>
-[13] Stallman, Richard M. <I>Using and Porting GNU CC</I> Free Software Foundation,
-1988.
-
-</P>
-<P>
-[14] Stroustrup, Bjarne <I>The C++ Programming Language.</I> Addison-Wesley, 1986.
-
-</P>
-<P>
-[15] Tiemann, Michael D. <I>User's Guide to GNU C++</I> Free Software
-Foundation, 1989.
-
-</P>
-<P><HR><P>
-Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_8.html">previous</A>, <A HREF="gperf_10.html">next</A>, <A HREF="gperf_10.html">last</A> section, <A HREF="gperf_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/gperf_toc.html b/doc/gperf_toc.html
deleted file mode 100644
index 3f09a68..0000000
--- a/doc/gperf_toc.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52b
- from gperf.texi on 20 December 2009 -->
-
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
-<TITLE>Perfect Hash Function Generator - Table of Contents</TITLE>
-</HEAD>
-<BODY>
-<H1>User's Guide to <CODE>gperf</CODE> 3.1</H1>
-<H2>The GNU Perfect Hash Function Generator</H2>
-<H2>Edition 3.1, 20 December 2009</H2>
-<ADDRESS>Douglas C. Schmidt</ADDRESS>
-<ADDRESS>Bruno Haible</ADDRESS>
-<P>
-<P><HR><P>
-<UL>
-<LI><A NAME="TOC1" HREF="gperf_1.html#SEC1">GNU GENERAL PUBLIC LICENSE</A>
-<LI><A NAME="TOC2" HREF="gperf_2.html#SEC2">Contributors to GNU <CODE>gperf</CODE> Utility</A>
-<LI><A NAME="TOC3" HREF="gperf_3.html#SEC3">2 Introduction</A>
-<LI><A NAME="TOC4" HREF="gperf_4.html#SEC4">3 Static search structures and GNU <CODE>gperf</CODE></A>
-<LI><A NAME="TOC5" HREF="gperf_5.html#SEC5">4 High-Level Description of GNU <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC6" HREF="gperf_5.html#SEC6">4.1 Input Format to <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC7" HREF="gperf_5.html#SEC7">4.1.1 Declarations</A>
-<UL>
-<LI><A NAME="TOC8" HREF="gperf_5.html#SEC8">4.1.1.1 User-supplied <CODE>struct</CODE></A>
-<LI><A NAME="TOC9" HREF="gperf_5.html#SEC9">4.1.1.2 Gperf Declarations</A>
-<LI><A NAME="TOC10" HREF="gperf_5.html#SEC10">4.1.1.3 C Code Inclusion</A>
-</UL>
-<LI><A NAME="TOC11" HREF="gperf_5.html#SEC11">4.1.2 Format for Keyword Entries</A>
-<LI><A NAME="TOC12" HREF="gperf_5.html#SEC12">4.1.3 Including Additional C Functions</A>
-<LI><A NAME="TOC13" HREF="gperf_5.html#SEC13">4.1.4 Where to place directives for GNU <CODE>indent</CODE>.</A>
-</UL>
-<LI><A NAME="TOC14" HREF="gperf_5.html#SEC14">4.2 Output Format for Generated C Code with <CODE>gperf</CODE></A>
-<LI><A NAME="TOC15" HREF="gperf_5.html#SEC15">4.3 Use of NUL bytes</A>
-<LI><A NAME="TOC16" HREF="gperf_5.html#SEC16">4.4 The Copyright of the Output</A>
-</UL>
-<LI><A NAME="TOC17" HREF="gperf_6.html#SEC17">5 Invoking <CODE>gperf</CODE></A>
-<UL>
-<LI><A NAME="TOC18" HREF="gperf_6.html#SEC18">5.1 Specifying the Location of the Output File</A>
-<LI><A NAME="TOC19" HREF="gperf_6.html#SEC19">5.2 Options that affect Interpretation of the Input File</A>
-<LI><A NAME="TOC20" HREF="gperf_6.html#SEC20">5.3 Options to specify the Language for the Output Code</A>
-<LI><A NAME="TOC21" HREF="gperf_6.html#SEC21">5.4 Options for fine tuning Details in the Output Code</A>
-<LI><A NAME="TOC22" HREF="gperf_6.html#SEC22">5.5 Options for changing the Algorithms employed by <CODE>gperf</CODE></A>
-<LI><A NAME="TOC23" HREF="gperf_6.html#SEC23">5.6 Informative Output</A>
-</UL>
-<LI><A NAME="TOC24" HREF="gperf_7.html#SEC24">6 Known Bugs and Limitations with <CODE>gperf</CODE></A>
-<LI><A NAME="TOC25" HREF="gperf_8.html#SEC25">7 Things Still Left to Do</A>
-<LI><A NAME="TOC26" HREF="gperf_9.html#SEC26">8 Bibliography</A>
-<LI><A NAME="TOC27" HREF="gperf_10.html#SEC27">Concept Index</A>
-</UL>
-<P><HR><P>
-This document was generated on 20 December 2009 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52b.</P>
-</BODY>
-</HTML>